01
Structural Styles
Arranging the units inside a program and the direction of dependency between them: what a layer rule is and what a leak looks like, ring arrangements where dependency turns inward, merging layer and ring into a single rule, the boundary of deployable software components, separating core from extension, and working through a shared blackboard for ill-structured problems.
- 01 Layered Architecture Writing the layered style as a declared set of permitted edges: splitting the shipment fee library into four layers, measuring the layers a request touches and the boundaries it crosses, counting the layers that pass a request through unchanged, and separating a declared open layer from an undeclared leak by violation count.
- 02 Hexagonal and Onion Architecture Comparing, as rules, two arrangements where dependency turns inward: counting the sixteen possible ring edges in a pricing context placed into four rings, separately deriving the edge sets forbidden by the hexagonal and onion rules, each rule seeing only one of two defects in the same codebase, and both counts dropping to zero after the repair.
- 03 Clean Architecture Merging two ring rules into a single predicate: writing the rule that forbids seven of sixteen ring edges, counting the edges — at the boundaries passing through the composition root — where the direction of control flow diverges from the dependency arrow, and comparing two data shapes crossing the boundary by accessible name and character count.
- 04 Component-Based Architecture Moving the unit from the ring to the releasable component: counting the number of names each component exposes and contains, comparing the co-release ratio across two partitions of the same files, measuring how a consumer that bypasses the surface raises the exposed name count, and counting the files a new capability edits, adds, and forces to re-release.
- 05 Microkernel and Plugin Architecture Separating an unchanging small core from plugins of unknown number: the core file's known plugin-name count falling from four to zero, measuring the number of lines edited in the core when a fifth plugin is added, the core running with a one-file closure with no plugins attached, and counting how many requests a contract-breaking plugin stops in each arrangement.
- 06 Blackboard Architecture Resolvers that do not know each other meeting through a shared field of information: the number of names units know about each other coming out to zero in determining a fee zone from an address, the extra reads and polls spent to reach the same result, the number of files a new resolver edits, and whether the result is deterministic across twenty-four poll orders.