Chapter 6: Architecture
What market forces drove the evolution of the component-based software development approach and what specific problems are these offerings attempting to address? The following four bullets help answer this question.
- Modern software applications are large and complex—they are time consuming to develop, difficult and costly to maintain, and risky to extend with additional functionality.
- Applications continue to be developed in a monolithic style—they come prepackaged with a static set of features, none of which can be added, removed, upgraded independently, or replaced with alternatives.
- Applications do not lend themselves to integration—neither the data nor the functionality of one program is readily available to another program.
- Programming models reflect the provider’s upbringing—they vary widely depending on whether the service is coming from a provider in the same address space, in another address space on the same machine, in another machine running across the network, or in the operating system.
Does either of these architectures completely solve these problems? No. But they both go a long way toward addressing most of these issues and by doing so enable the software development community to take a major, perhaps revolutionary, step forward.