How should you broadly design your system so that you can add to your software overtime easily?
As we build our software systems, we must be aware of software entropy. Software entropy refers to the fact that as a software system ages (not in time, but in number of changes), each change is more likely to cause unexpected problems or failures, or necessitate significant changes to large portions of the software’s implementation. Selecting the right architecture can help us avoid these pit falls. In this lecture, we will specifically discuss peer-to-peer architecture, layered architecture, and three-tiered (user interface, business logic, and data) architecture. In the next two weeks, we will also discuss in great detail MVC (Model-View-Controller), which is the core architecture for django.