During the early days of Software Development, barriers to entry in programming languages were high and only people with PhDs in Science and Mathematics could use such programming languages. In 1964, the basic general purpose programming language was developed. This lowers the barriers so that non-PhD students from all majors can also write programs. As computing applications grew rapidly in the 1960s, software became large and complex. Computer Scientists try to overcome the complexity of System Software with ancient and proven techniques: Divide and Conquer.
David Parnas published a seminal paper “On Criteria to be used in Decomposing Systems to Modules” in 1972 that introduced the concept of Modularityand myNFORMASI hiding. In addition, Edsger W. Dijkstra introduced the conceptof Separation of Concernin his paper “On the Role of Scientific Thought” published in 1974. The works of Parnas, Dijkstra and others led to the emergence ofModular Software Developmentin the 1970s with the principle of deciphering large and complex software systems into“loosely combined, highly cohesive”module communicated through an internal interface. In simple terms, “loosely combined” means that the dependency between modules must be very low and “very cohesive” means that one module must focus on single or similar functionality. With the advent of the Internet and web in the 1990s, software systems became widespread in business applications and became more complex and large. Although Modularity is used to reduce the complexity of software applications, it is often un helpful because the modular boundaries of software sub-systems are easy to cross and abuse. Other Software Architecture Patterns became very popular during the 1990s to develop business applications:Layered Architecture. Typically, Business Web Applications are divided into several layers: Presentation, Business, Database layer.
that most Business applications experience the following issues:
- Unregulated growth
- Too much responsibility
- Doesn’t have the right Architecture
- Spaghetti Code
- Make it work alias. sweeping the problem under the Carpet