Modularity
12 pages
-
A Philosophy of Software Design
source
*A Philosophy of Software Design* — John Ousterhout
-
Architectural Decomposition
concept
Modularity drivers (availability, scalability, deployability, testability, maintainability); scalability vs elasticity; component-based vs tactical forking; six decomposition patterns; architecture stories
-
Architecture Styles
style
Summary and comparison of all 8 styles; decision guide
-
Coupling
concept
Coupling taxonomy: structural (Ca/Ce, Martin A/I/D, connascence), operational (Newman's implementation/temporal/deployment/domain types), contract (strict/loose, stamp coupling), integration-style spectrum (File Transfer → Messaging); coupling and quantum boundaries; coordinated deployments as coupling signal; concept leakage and flatten-when-publishing
-
Decomposition Strategy: How Far to Break Up a System
comparison
How far to decompose: modular monolith → service-based → microservices; five decision factors (domain understanding, team structure, DevOps maturity, transaction requirements, scalability); recommended migration path; granularity disintegrators vs integrators; Ferrari anti-pattern
-
Fundamentals of Software Architecture
source
*Fundamentals of Software Architecture* — Richards & Ford
-
Modular Monolith Architecture
style
Domain-partitioned single quantum; appropriate coupling via fitness function enforcement; intermediate migration step
-
Modularity
concept
Cohesion types, LCOM, coupling metrics, connascence taxonomy (static vs dynamic); SATH: applying D/A/I metrics to decomposition feasibility; Modularity Maturity Index (MMI 0-10, three cognitive principles: modularity 45%/hierarchy 30%/pattern consistency 25%, decision thresholds, architecture erosion, implementation vs design/architecture debt); advanced structural metrics: ACD/CCD/Propagation Cost, Relative Cyclicity, SDI, Maintainability Level, LCOM4, change history metrics, Component Rank, six golden rules
-
Software Architecture Metrics
source
*Software Architecture Metrics* — Ciceri et al.
-
Software Complexity
concept
Ousterhout's complexity definition: three symptoms (change amplification, cognitive load, unknown unknowns), two causes (dependencies, obscurity), incremental accumulation; strategic vs. tactical programming; technical debt as borrowed time
-
Team Cognitive Load
concept
Sweller's three cognitive load types (intrinsic/extraneous/germane); team cognitive capacity as software boundary constraint; domain complexity heuristics; platform as extraneous load eliminator
-
Technical vs Domain Partitioning
concept
Technical (layered) vs domain (bounded context) top-level component design