12 Loosely coupled software architecture
This chapter covers
- Minimizing coupling in software architecture
- Designing software architecture aligned to the domain
- Validating the design of individual subsystems
- Determining the optimal level of modernization for each subsystem
- Migrating subsystems from the current to the target state
Achieving independent value streams in software development requires a loosely coupled software architecture. When software changes become costly, it creates a bottleneck that impedes fast flow, regardless of the quality of domain design and team structure. For some leaders, grasping the importance of loosely coupled architecture takes time. But there are no quick fixes to address the technical requirements of fast flow; doing the hard work of confronting the legacy systems cannot be avoided.
To embark on the journey toward fast flow, the first step is to understand the concept of loose coupling. Even engineers can struggle with this somewhat nebulous idea, as there are no established standards for describing coupling in software. However, there have been attempts to develop models for describing coupling. This chapter introduces Vladik Khononov’s modern approach.