Software architect and author Vlad Khononov joins host Jeff Doolittle for a discussion on balancing coupling in software design. They start by examining coupling and its relationship to complexity and modularity. Vlad explains the historical models for assessing coupling and introduces his updated approach, integration strength, which aims to simplify earlier frameworks and adapt them for modern practices.
The episode explores three dimensions of coupling:
- integration strength (knowledge sharing),
- distance (proximity of components), and
- volatility (likelihood of change).
Vlad illustrates how design decisions can lead systems toward complexity or modularity, and he emphasizes the importance of managing coupling to minimize cognitive load and cascading changes. The conversation wraps up with insights on applying these principles to real-world software projects and a reminder of coupling’s critical role in software architecture.
Brought to you by IEEE Computer Society and IEEE Software magazine.
Show Notes
- LinkedIn: @vladikk
- Twitter: @vladikk
- www.coupling.dev
- Cynefin Framework: Cynefin_framework
- “On The Criteria to be Used In Decomposing Systems Into Modules” by David Parnas
- “Structured Design” by Edward Yourdon and Larry L. Constantine
- Connascence (https://en.wikipedia.org/wiki/Connascence
- “A Philosophy of Software Design” by John Ousterhout https://web.stanford.edu/~ouster/cgi-bin/book.php
- “Domain Driven Design” by Eric Evans https://www.oreilly.com/library/view/domain-driven-design-tackling/0321125215/
From IEEE Computer Society
- Measuring Enterprise Architecture Complexity
- A Theory of Software Complexity
- Cognitive Complexity — An Overview and Evaluation
- Complexity: Let’s Not Make This Complicated
- A Model for Defining Coupling Metrics
- Microservice Logical Coupling: A Preliminary Validation
- Exploring Non-functional Coupling in Systems of Systems
Related Episodes
- SE Radio 638: Nick Tune and Jean-Georges Perrin on Architecture Modernization
- SE Radio 637: Steve Smith on Software Quality
- SE Radio 520: John Ousterhout on A Philosophy of Software Design
- SE Radio 407: Juval Löwy on Righting Software
- SE Radio 370: Chris Richardson on Microservice Patterns
- SE Radio 616: Ori Saporta on the Role of the Software Architect
- SE Radio 574: Chad Michel on Software as an Engineering Discipline