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. Loose coupling in the software means lower change coupling across value streams, resulting in few organizational dependencies that affect flow. 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.

The first step to a loosely coupled software architecture is grasping a deeper understanding 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 Vlad Khononov’s modern approach.

12.1 Coupling types and strength

12.1.1 Local versus global complexity

12.2 Modeling architectural flows

12.2.1 Model exploration whirlpool

12.2.2 Domain Message Flow Modeling

12.2.3 Industry example: Modernizing an accounting system

12.3 Individual subsystem design

12.3.1 Using a canvas

12.3.2 Software design EventStorming

12.4 Subsystem modernization strategies

Summary