Chapter 8
Playing Fast and Loose: Loose Coupling and Federation
In This Chapter
Unraveling software dependencies
Mixing and matching components through loose coupling
Hawking software services
Distributing software with federation
Automating software manufacturing
Both traditional packaged software applications (the kind you buy from some company somewhere) and extensive homegrown software systems (created specifically to solve particular problems for a particular set of people) share a common difficulty: They weren’t designed for substantive change. One pervasive characteristic that makes both kinds of applications especially brittle — prone to break easily — is the extent to which the various programs that constitute the software applications are intertwined. These programs depend upon each other for little bits of code; and without such bits, they can’t run. These dependencies were often created in the name of efficiency, especially in the days when hardware and memory were expensive.
Today, however, a change is taking place in the software industry: one that relies on fewer dependencies, more distribution of functionality, and a view of software as a subscription-based service. In this chapter, we examine these changes and how they enable software to be more responsive and flexible to rapidly changing demands.
Understanding Software Dependencies
Have you ever seen the children’s toy that has pictures of animals on cards, but the cards are divided into thirds — the top third ...