Chapter 3: Coupling and Complexity: Interactions

“Software complexity, a tangled mess,

Lines of code causing endless distress.

Logic conundrums, my mind’s a wreck,

Sleepless nights spent debugging the mess.”

The previous chapter sought to define what complexity is. It started by defining complexity as the cognitive load one experiences when working with a system, and elaborated using the Cynefin framework. You learned that in complex situations, the outcome of an action can only be identified in retrospect. It is not immediately apparent, and you cannot consult an expert; instead, you have to conduct an experiment and observe the resultant behavior. Since such uncertainty is not a desirable property for a software system, its design should ...

Get Balancing Coupling in Software Design: Universal Design Principles for Architecting Modular Software Systems now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.