Software Architecture · Cluster

Modularity

Cohesion, coupling, and information hiding.

  1. 01 Coupling and Cohesion as Independent Structural Axes Why dependency strength between modules and relatedness inside a module are separate measurements, and how the classic coupling and cohesion scales describe them. foundational · Mar 4, 2025
  2. 02 Information Hiding and the Parnas Decomposition Criterion How designing each module around a decision it conceals confines the cost of change, and what an interface must expose for that concealment to survive. foundational · Dec 13, 2024
  3. 03 Interface Contracts and the Limits of Substitutability What a module boundary promises beyond its signature, why behavioural subtyping is stricter than type compatibility, and which contract clauses callers silently depend on. foundational · Aug 11, 2025
  4. 04 Cycles in Module Dependency Graphs and How to Break Them Why a dependency cycle collapses independent modules into one release unit, how strongly connected components expose the real structure, and which refactorings remove a cycle without adding another. intermediate · Aug 5, 2026
  5. 05 Package Encapsulation and the Leak of Internal Types How languages draw the visibility line around a package, which constructs quietly widen it, and why an exported type in a public signature defeats the boundary it was meant to protect. intermediate · Oct 24, 2023
  6. 06 Instability, Abstractness, and the Main Sequence Metric How afferent and efferent coupling produce an instability score, why stable packages should be abstract, and where the distance-from-the-main-sequence number misleads. intermediate · Aug 17, 2023
  7. 07 Physical Modularity: Compilation Firewalls and Rebuild Cost How declaration-level dependencies turn a header edit into a full rebuild, what a pimpl or interface boundary costs at runtime, and how package compilers avoid the same trap. intermediate · Nov 10, 2024
  8. 08 Connascence: Coupling Measured by Strength and Distance A finer taxonomy than fan-in and fan-out: nine kinds of change-propagating relationship, why strength only matters relative to locality, and how to trade one kind for another. advanced · Nov 21, 2025
  9. 09 ABI Boundaries as Module Seams in Dynamic Linking What a shared library promises a separately compiled caller, why adding a data member or a virtual function can break that promise, and how symbol visibility turns a design boundary into a loader-enforced one. advanced · May 4, 2023
  10. 10 The Runtime Cost of Indirection at Module Boundaries A cost model for boundary crossings: what inlining loses, what a virtual call and a cache miss actually cost, and when a coarse-grained interface beats a clean one. advanced · Jun 11, 2024