Edition 1·Updated 2026-10-03·21 min read
Sources
About this book
An overview of the book, with source information for further reading.
Ten leading practitioners show how to select, implement, automate, and act on software architecture metrics so that objective measurement—not gut feeling—guides architectural decisions and business outcomes.
Software architecture is famously hard to measure, yet the most consequential decisions—about maintainability, testability, deployability, scalability, security, and technical debt—depend on knowing where you stand and where you're headed. In this practitioner-driven anthology, ten experienced architects present case studies and concrete techniques for turning fuzzy architectural intuitions into objective, actionable measurements. You'll learn to unleash the four key DORA metrics to spark team-driven improvement, use fitness functions and a fitness function testing pyramid to define 'good' for your system, guide architecture with testability and deployability, quantify technical debt with the Modularity Maturity Index, survive imperfect DevOps transitions with private builds and process metrics, connect KPIs to architecture as an organization scales, embed continuous measurement across the delivery lifecycle, convert metrics into automated engineering governance via fitness functions, ensure maintainability with coupling and complexity metrics, and discover metrics for hard problems using the Goal-Question-Metric approach. Rather than prescribing a single method, the book supplies a toolbox grounded in real-world experience—so you can pick metrics that fit your context, automate them, and use them to keep your options open as your systems evolve.
Movement I
Orient
What this book claims, and who wrote it.
- — The book's one-line promise
- — The author and where the book stands
Ten leading practitioners show how to select, implement, automate, and act on software architecture metrics so that objective measurement—not gut feeling—guides architectural decisions and business outcomes.
The need-to-know
Objective measurement, applied continuously and automatically, is what transforms architecture from craft into engineering discipline. The combination of metrics matters more than any single metric: balancing throughput with stability, or coupling with complexity, prevents lopsided improvement. Fitness functions unify diverse validation mechanisms under one umbrella and, run continually in pipelines, act as an executable checklist that governs architecture.
About this guide
The guide describes these challenges, steps and possible outcomes.
Who it is for
A software architect (or senior engineer) who wants to improve the quality, maintainability, and business value of their systems and prove that their architecture decisions are working.
Challenges
- In practice · Architectural qualities like maintainability, scalability, deployability, and technical debt are hard to measure, so decisions are made on gut feeling and problems surface too late.
- For the reader · The architect feels uncertain about whether their work is effective, overwhelmed by having to spot and fix every problem alone, and anxious about hidden erosion and risk.
Steps to consider
- 1Decide what quality attributes and goals matter most in your context, using techniques like Goal-Question-Metric and EventStorming.
- 2Select and define metrics (four key metrics, fitness functions, MMI, coupling and complexity metrics) that provide strong signals and are feasible to collect.
- 3Automate measurement in your delivery pipeline and wrap key metrics in fitness functions run on every change.
- 4Display metrics transparently, discuss them with the whole team, and use them to prioritize and drive improvement.
- 5Iterate continuously: act on findings, prune low-value metrics, and let architecture and metrics evolve together as the organization changes.
Risks
Structural erosion and technical debt accumulate until every change is a painful, expensive, error-prone effort. Defects surface late in production, damaging reputation and inflating cost of fixes.
Intended result
Architecture decisions are guided by objective evidence, and teams take shared ownership of quality improvement. Systems stay in the corridor of low, stable maintenance cost, avoiding the big ball of mud.
Set the record straight
What this book sets straight
The common beliefs this book pushes back on.
Software architecture is a craft that can only be judged subjectively by experienced architects.
Architectural qualities can and should be objectively measured, and measurement amplifies architects' judgment rather than replacing it.
Measurement should wait until the system is running in production.
Different measurement types (artifact vs. operational, internal vs. external) let you start measuring early and continuously across the whole delivery lifecycle.
You must have a fully mature DevOps culture and automation before metrics are useful.
Even in imperfect environments, private builds and process metrics let teams stay productive and detect problems selectively.
Detailed up-front architecture and future-proofing produce the best systems.
An evolutionary approach guided by testability, deployability, and measurement keeps options open and adapts to what you actually learn.
A KPI or metric is a target teams must hit.
Per Goodhart's Law, when a measure becomes a target it ceases to be a good measure; metrics should guide and enable, not dictate.
More metrics and more measurement infrastructure is always better.
Start small, measure what matters, act on it, and prune metrics of limited value to avoid drowning in low-signal data.
Movement II
Map
The book's main ideas and how they connect.
Software Architecture Metrics's own model — and how it sits inside its field.
- — 10 constructs the book works with
- — Where it agrees with the field, exceeds it, or fills a gap
The constructs
How they connect (13)
- Goal and KPI Clarity → moderates → Continuous Automated Measurement
- Continuous Automated Measurement → predicts → Team Ownership and Engagement
- Continuous Automated Measurement → influences → Technical Debt and Structural Erosion
- Architectural Modularity and Loose Coupling → influences → Technical Debt and Structural Erosion
- Code Size and Complexity → influences → Maintainability
- Architectural Modularity and Loose Coupling → predicts → Testability and Deployability
- Testability and Deployability → predicts → Software Delivery Performance
- Technical Debt and Structural Erosion → predicts → Maintainability
- Team Ownership and Engagement → influences → Technical Debt and Structural Erosion
- Maintainability → influences → Software Delivery Performance
- Software Delivery Performance → predicts → System Quality and Business Outcomes
- Goal and KPI Clarity → moderates → System Quality and Business Outcomes
- Continuous Automated Measurement → mediates → Maintainability
Where this book diverges from the corpus
- exceeds The field folds automated metric collection and fitness functions into a broader lean-management construct, while the book focuses on wiring fitness functions into CI/CD as a dedicated, operational practice for architecture.
- fills gap The field has no construct for explicitly defined, shared architectural goals and KPIs that guide which metrics are chosen; its closest constructs (measurement validity, lean measurement) are about the metrics, not the goals.
- fills gap The field covers autonomy and structural empowerment, but not the behavioral state of teams understanding, discussing, and acting on metrics and architectural decisions.
- lags The book merges runtime quality attributes with business outcomes, while the field separates reliability, performance, and organizational outcomes into distinct constructs.
Movement III
Master
Explore the book's ideas, examples and practical tools.
How the author makes the case — section by section, with the book's own tools.
- — 10 sections, in the book's order
- — The book's frameworks, checklists, and worked cases
strong · 1 source
- Software Architecture Metrics
This section describes how to move architectural responsibility from a single architect to the whole team through shared visibility of metrics. It gives you practices that build understanding and initiative.
Team Ownership and Engagement
The psychological and behavioral state in which development teams understand, discuss, own, and act on metrics and architectural decisions, taking initiative to improve quality rather than deferring to a lone architect.
Why it matters. When a lone architect owns quality, it degrades as soon as that person is absent or overruled, whereas teams that own metrics correct drift as part of daily work.
Myth
Architectural quality is best protected by a dedicated architect who reviews and enforces the metrics.
Reality
A central reviewer becomes a bottleneck and a single point of failure, and developers outsource judgment to them. Ownership grows when the team sees, discusses, and acts on the metrics itself.
- Team Ownership and EngagementFramework — How this mechanism is run, step by step, as the literature describes it.
- System Quality and Business Outcomes — decision rulesChecklist — 5 checkpoints
- Team Ownership and Engagement — decision rulesChecklist — 5 checkpoints
- System Quality and Business OutcomesCase study — Andrew Harmel-Law's rollout shows the progression.
- Team Ownership and EngagementCase study — The source describes an architect rolling out the four key metrics.
- Team Metrics Ownership Rollout ChecklistTemplate
- Ownership is built by letting teams see and act on metrics, not by mandating compliance.
- Shift from a gatekeeping architect to a coach who enables team decisions.
- Never tie metrics to individual performance evaluation.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Team Metrics Ownership Rollout Checklist” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 6 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section helps you make technical debt and structural erosion observable through concrete indicators such as cycles, violations, and unnecessary complexity. You learn to track its direction rather than argue over a single dollar figure.
Technical Debt and Structural Erosion
The accumulated unnecessary complexity, cyclic dependencies, architectural violations, and design decay that make a system progressively more expensive and risky to maintain and extend over time.
Why it matters. Unseen erosion compounds quietly until each change costs far more than it should, at which point remediation competes with feature work and is much harder to justify.
Myth
Technical debt is a backlog of known shortcuts that you can pay down in a dedicated cleanup sprint.
Reality
Much of the damage is unintentional, accumulating through small architectural violations nobody chose. It is controlled mainly by preventing new erosion on every change, not by occasional large cleanups.
- Technical Debt and Structural ErosionFramework — How this mechanism is run, step by step, as the literature describes it.
- Technical Debt and Structural Erosion — decision rulesChecklist — 5 checkpoints
- Technical Debt and Structural ErosionCase study — The source cites Apache Cassandra as a real case of cycle-group growth.
- Maintainability Fitness Function CardTemplate
- Erosion Watch SheetTemplate
- Stopping new erosion matters more than cleaning up old erosion.
- Watch the trend of a few concrete indicators rather than one composite score.
- Repay debt where the code is changing most, since that is where interest is paid.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Erosion Watch Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 5 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section explains how to read deployment frequency, lead time, change failure rate, and time to restore as outcome signals of your architecture and practices. It shows how to use them for diagnosis rather than as targets.
Software Delivery Performance
The throughput and stability of software delivery captured by deployment frequency, lead time for changes, change failure rate, and time to restore service, indicating how quickly and reliably value reaches users.
Why it matters. These four measures reveal whether your architecture lets value reach users quickly and safely, but misused as targets they push teams to game speed at the expense of stability.
Myth
Delivery performance is a team-process issue that can be improved by pushing the team to deploy more often.
Reality
The four measures move together only when the underlying system allows small, safe, independent changes. Pressure to deploy faster without testable, modular structure raises failure rates instead.
- Architectural Modularity and Loose CouplingFramework — How this mechanism is run, step by step, as the literature describes it.
- Continuous Automated MeasurementFramework — How this mechanism is run, step by step, as the literature describes it.
- Software Delivery PerformanceFramework — How this mechanism is run, step by step, as the literature describes it.
- Goal and KPI ClarityFramework — How this mechanism is run, step by step, as the literature describes it.
- MaintainabilityFramework — How this mechanism is run, step by step, as the literature describes it.
- System Quality and Business OutcomesFramework — How this mechanism is run, step by step, as the literature describes it.
- Continuous Automated Measurement — decision rulesChecklist — 5 checkpoints
- Software Delivery Performance — decision rulesChecklist — 5 checkpoints
- Software Delivery PerformanceCase study — The chapter describes a home-built dashboard in Microsoft PowerBI, chosen because the client used Azure DevOps.
- MaintainabilityCase study — The source describes a monolith whose organization wants features to market faster, so it hires more people into product engineering teams.
- Fitness Function and Pipeline Instrumentation CardTemplate
- Four Key Metrics Definition SheetTemplate
- Service-Failure and Outcome Definition SheetTemplate
- Throughput and stability must be read as a pair; improving one at the other's expense is not progress.
- Slow delivery is often an architecture symptom, so diagnose structure before pressuring people.
- Compare teams to their own history, not to each other.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Four Key Metrics Definition Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 13 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section defines maintainability as a long-run cost trajectory and shows how to monitor whether your system stays in a corridor of stable, low change cost. It connects the code-level and structural indicators that feed it.
Maintainability
The long-term ease with which a system can be understood, changed, tested, and extended by evolving teams while preserving quality and speed, keeping the system in the corridor of low and stable maintenance cost.
Why it matters. Maintainability decides whether the pace you achieve today is sustainable, since a system that becomes harder to change eventually throttles delivery no matter how skilled the team is.
Myth
Maintainability is a property of the code that you can score once with a single index and then forget.
Reality
It is a moving trajectory shaped by every change, team turnover, and accumulating structure. A good score today says little unless the trend of change effort stays flat.
- Maintainability is judged by the trend in cost of change, not by a snapshot score.
- Combine an outcome measure with leading structural indicators to catch decline early.
- Onboarding time is a practical, human check on whether the system is understandable.
The deep drill-down: 7 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Maintainability Fitness Function Card” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section ties your architectural metrics to what users and the business actually experience: runtime quality attributes and results. It helps you check that internal improvements show up externally.
System Quality and Business Outcomes
The realized runtime quality attributes (performance, scalability, availability, security) and downstream business outcomes such as user satisfaction, reduced production defects, and achievement of organizational KPIs.
Why it matters. If internal metrics improve while performance, availability, security, or user satisfaction do not, you are optimizing the architecture for its own sake and cannot defend the investment.
Myth
Clean internal metrics, such as low coupling and low complexity, guarantee good runtime quality and business results.
Reality
Internal structure enables good outcomes but does not produce them; runtime qualities must be measured directly in production. The link is strongest when architectural work is aimed at clearly defined business goals.
- Verify internal improvements against production and user-facing measures before claiming success.
- Runtime quality attributes must be measured directly; structure alone cannot be used as a proxy.
- Judge outcomes against the explicit KPIs agreed at the start.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Service-Failure and Outcome Definition Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section shows how to move architectural metrics out of quarterly reviews and into the pipeline that every commit passes through. You get a way to decide which qualities deserve an automated check and how to keep those checks trusted.
Continuous Automated Measurement
The practice of collecting and computing metrics automatically and frequently throughout the delivery lifecycle, including fitness functions wired into CI/CD pipelines, so that architectural qualities are evaluated on every change rather than late or ad hoc.
Why it matters. Architecture that is measured only at audit time is discovered to be eroded after the damage is baked in, while architecture checked on every change is corrected when the fix costs minutes.
Myth
Installing a static-analysis dashboard that runs nightly means you are doing continuous architectural measurement.
Reality
A dashboard nobody is forced to act on is reporting, not measurement. The practice only works when fitness functions run on every change and can fail the build, so the feedback arrives while the author still has the context to fix it.
- Continuous Automated MeasurementCase study — The passages give two fitness functions for a hypothetical system.
- Measurement counts as continuous only when it executes on every change and can block a merge.
- Gate on regressions from a baseline, not on absolute thresholds, so adoption survives legacy code.
- Each automated check should trace to a stated quality goal; otherwise it is noise you maintain.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Fitness Function and Pipeline Instrumentation Card” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 1 tool for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section explains how to judge whether your system's parts are genuinely separable, using dependency structure rather than folder layout. You leave with signals for cycles, coupling, and cohesion you can track over time.
Architectural Modularity and Loose Coupling
The degree to which a system is divided into cohesive, loosely coupled parts with clear separation of concerns and good abstraction, minimizing cyclic dependencies and structural erosion between components, packages, and modules.
Why it matters. Modularity determines whether a change stays local or ripples across the codebase, so getting it wrong makes every later test, deployment, and refactoring more expensive.
Myth
If the code is split into packages or microservices, the system is modular.
Reality
Modularity is defined by the dependencies between the parts, not by the boundaries drawn around them. A tangle of cyclic package references or services that must deploy together is a monolith with extra network hops.
- Architectural Modularity and Loose Coupling — decision rulesChecklist — 5 checkpoints
- Architectural Modularity and Loose CouplingCase study — The source's own example is the database swap.
- Cyclic dependencies are the clearest observable sign that a module boundary is not real.
- Verify modularity from the extracted dependency graph, never from the diagram or directory structure.
- Enforce dependency rules as tests so the structure cannot silently decay.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Modularity and Coupling Seam Review Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 2 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section covers the file- and method-level measures, such as size, cyclomatic complexity, nesting depth, and cohesion, that indicate where code is hard to read and change. It helps you use them as pointers to hotspots rather than as verdicts.
Code Size and Complexity
The size, cyclomatic complexity, indentation depth, and cohesion characteristics of source files and methods that determine how hard the code is to read, understand, test, and change.
Why it matters. Complexity concentrates where developers spend most of their time, so misjudging it either lets unreadable hotspots slow every change or sends teams chasing harmless numbers.
Myth
A low average cyclomatic complexity across the codebase means the code is easy to work with.
Reality
Averages hide the few oversized, deeply nested files where most defects and edits cluster. Complexity matters most where it intersects with change frequency, so the distribution tail is the signal.
- Code Size and ComplexityFramework — How this mechanism is run, step by step, as the literature describes it.
- Code Size and Complexity — decision rulesChecklist — 5 checkpoints
- Code Size and ComplexityCase study — The source gives a ready-made fitness function.
- Modularity and Coupling Seam Review SheetTemplate
- Complexity Fitness Function SheetTemplate
- Look at the tail of the distribution, not the average, to find the code that actually hurts.
- Combine complexity with change frequency to prioritize refactoring.
- Use size and complexity limits on new code to stop the problem growing while you fix the old.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Complexity Fitness Function Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 5 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section treats testability and deployability as architectural properties you can inspect, not just process outcomes. It shows how to spot design choices that block fast, deterministic tests and independent releases.
Testability and Deployability
The extent to which the system can be tested easily and deterministically and deployed as an independently releasable unit through a deployment pipeline, treated as architectural properties that drive design quality.
Why it matters. If a component cannot be tested in isolation or released alone, every release becomes a coordinated event, and delivery speed is capped by the architecture regardless of team effort.
Myth
Testability is about writing more tests, and deployability is a DevOps tooling matter handled after the design is done.
Reality
Both are determined by design: hidden dependencies, shared state, and tangled coupling make tests slow and flaky and releases interdependent. Better tooling cannot compensate for a structure that does not permit isolation.
- Testability and DeployabilityFramework — How this mechanism is run, step by step, as the literature describes it.
- Testability and Deployability — decision rulesChecklist — 5 checkpoints
- Testability and DeployabilityCase study — Take the zero-downtime check described in the passages.
- Testability and Deployability Audit SheetTemplate
- A component you cannot test in isolation is a coupling problem, not a testing problem.
- Independent deployability should be proven by releasing a unit alone, not asserted.
- Track flakiness and test duration, since they reveal architectural coupling that coverage hides.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Testability and Deployability Audit Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 4 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
strong · 1 source
- Software Architecture Metrics
This section helps you establish which architectural goals and KPIs your metrics should serve before you pick any tools. You get a way to link each measure to a quality attribute requirement and a business reason.
Goal and KPI Clarity
The degree to which architectural goals, quality attribute requirements, and organizational KPIs are explicitly defined, shared, and understood so that measurement is purposeful and metrics are chosen for the right reasons.
Why it matters. Without explicit goals, teams measure whatever is easy, drown in numbers that drive no decision, and cannot show that architecture work contributes to outcomes the business values.
Myth
Good measurement starts with choosing a comprehensive metrics tool and seeing what it reveals.
Reality
Tools reveal what they can compute, not what matters to you. Starting from goals and quality attribute requirements tells you which few metrics deserve attention and what counts as a meaningful change.
- Maintainability — decision rulesChecklist — 5 checkpoints
- Goal and KPI ClarityCase study — Anna, an architect at YourFinFreedom, wants to use leverage points in the architecture to reduce complexity in the Travel Insurance domain.
- Goal-to-Metric Alignment SheetTemplate
- Pick metrics from goals, not goals from the metrics your tool happens to produce.
- A metric with no predefined action attached is decoration.
- Goals must be shared with the whole team to steer behavior, not just documented by the architect.
The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Goal-to-Metric Alignment Sheet” tool. Included when you buy this guide.
The rest of this section
the full written section · 4 how-to steps · 2 pitfalls to watch for · 3 tools for this section. Included when you buy this guide.
Grounded in: Software Architecture Metrics
Movement III · The run-it-now depth
The Playbook
Practical tools and examples from this guide.
Frameworks
Architectural Modularity and Loose Coupling
How this mechanism is run, step by step, as the literature describes it.
- 1Start from the five attributes, not from a tool. Write each one as a one-line check for your system: modularity (parts change without forcing change elsewhere), cohesion (things that change together sit together), separation of concerns (each part solves one problem), abstraction/information hiding (seams let you consume behavior without knowing internals), coupling (how much separate parts must change together).
- 2Anchor the effort to quality goals. Align with key stakeholders on which ISO/IEC 25010 attributes matter (Maintainability lists modularity, reusability, analyzability, modifiability, testability). Spend measurement effort only on attributes that have a big impact on those goals.
- 3Express the goal as a fitness function: an objective function that summarizes how close the design is to the aim, outputting a discrete value (the metric). Define the verification mechanism that produces it. Automate it if you can, but automation is not required.
- 4Test the seams with a swap scenario. Pick a concrete change, such as replacing an RDBMS-backed repository with a GraphDB repository. Ask whether the domain core is separated from persistence. If the two are conflated, you have found a coupling problem.
- 5Use testability as the probe. For one module, check whether you can reach the relevant parts, put them in a well-defined state, invoke behavior, and capture responses. If setup is hard, the module is probably not cohesive or is tightly coupled to others.
- 6Check the tests themselves. If tests are decoupled from the code, the code can change without forcing test changes. Tests that break on internal changes show leaky abstractions. Tests that can target an abstraction boundary show a usable seam.
- 7For a whole codebase or an IT landscape, assess technical debt with the modularity maturity index (MMI). Use the result to decide which systems to refactor, which to replace, and which to leave alone.
- 8Feed delivery signals back into the architecture. Review the four key metrics (deployment frequency, lead time for changes, change failure rate, time to restore service) with the team weekly. Treat the coupling that is looser on paper than in practice, and the domain boundaries that are less crisp than they looked, as the architectural problems the metrics expose.
Code Size and Complexity
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Continuous Automated Measurement
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Software Delivery Performance
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Goal and KPI Clarity
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Maintainability
How this mechanism is run, step by step, as the literature describes it.
◆ The full 7-step framework — included with this guide purchase
System Quality and Business Outcomes
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Team Ownership and Engagement
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Technical Debt and Structural Erosion
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Testability and Deployability
How this mechanism is run, step by step, as the literature describes it.
◆ The full 8-step framework — included with this guide purchase
Checklists
Architectural Modularity and Loose Coupling — decision rules
- If a module is hard to set up for a test, then suspect low cohesion or tight coupling to other modules before blaming the test tooling.
- If a planned technology change (for example, a different database) would force changes in domain logic, then introduce a seam such as a repository abstraction before committing to the change.
- If a quality attribute has little impact on your overall goals, then do not define a fitness function for it. Spend effort on the attributes stakeholders rank highest.
- If tests break whenever implementation details change, then strengthen the abstraction so tests target the boundary rather than the internals.
- If an MMI-style assessment shows heavy technical debt in one system and little in another, then refactor or replace the first and leave the second alone.
Code Size and Complexity — decision rules
◆ All 5 checkpoints — included with this guide purchase
Continuous Automated Measurement — decision rules
◆ All 5 checkpoints — included with this guide purchase
Software Delivery Performance — decision rules
◆ All 5 checkpoints — included with this guide purchase
Goal and KPI Clarity — decision rules
◆ All 5 checkpoints — included with this guide purchase
Maintainability — decision rules
◆ All 5 checkpoints — included with this guide purchase
System Quality and Business Outcomes — decision rules
◆ All 5 checkpoints — included with this guide purchase
Team Ownership and Engagement — decision rules
◆ All 5 checkpoints — included with this guide purchase
Technical Debt and Structural Erosion — decision rules
◆ All 5 checkpoints — included with this guide purchase
Testability and Deployability — decision rules
◆ All 5 checkpoints — included with this guide purchase
Case studies — including what didn't work
Architectural Modularity and Loose Coupling
The source's own example is the database swap. Suppose you learn that your system would run more efficiently on a graph database than on a relational one. If you separated the core domain logic from the persistence of its results early on, you can imagine unplugging the RDBMS-backed repository and plugging in a GraphDB repository with relative ease. That outcome shows good separation of concerns, better modularity and cohesion, and decent abstraction. If core domain and persistence are conflated, the same move is very hard even to contemplate. You can turn this into a fitness function: define the aim as 'persistence replaceable without changing domain logic', and verify it by trying to write a domain test with no database present. The passages give no figures for this scenario, so treat the pass/fail result as your discrete metric. A second signal comes from delivery data. When teams discuss the four key metrics weekly, they surface coupling that isn't as loose as expected and domain boundaries that aren't as crisp as they appeared. Those findings point you to the modules to restructure.
Code Size and Complexity
The source gives a ready-made fitness function. Define a file as complex if average indentation exceeds 3, or average complexity exceeds 10, or size exceeds 800 LoC. Say your system has a certain total LoC. Sum the LoC of every file that trips any of the three tests, divide by the system total, and compare against a 10% ceiling. The daily CI build computes this and breaks if the ratio exceeds 10%. The same build stores the number so you can chart it over 90 days. Per-method soft limits (indentation 4, Modified Cyclomatic Complexity 15) sit alongside it. Because the average is weighted by Number of Statements, a file with fifty trivial getters and one 120-statement method with deep nesting still shows as complex. Then pull the Number of Changes (d) for the flagged files and start refactoring with the ones that change most often.
◆ What happened, and the outcome — included with this guide purchase
Continuous Automated Measurement
The passages give two fitness functions for a hypothetical system. Example 2-1 is 'Unit Test Coverage > 0.9; Execute on each CI Build; Fail when below target coverage'. Example 2-2 is 'Integration Test Coverage > 0.5; Execute on each nightly integration test build; Fail when below target coverage'. Each names a metric (coverage), a threshold (0.9, 0.5), a trigger (every CI build, nightly build), and a consequence (fail). A developer pushes a change, the CI build computes unit coverage, and the build fails if it drops below 90%. That evaluates the quality on every change instead of at a late review. The slower integration tests run nightly, so the 50% check is frequent but cheaper. An architectural example from the same source: instead of only checking that a customer can be created, the test creates 10 customers and verifies it took under 10 milliseconds. The delivery side works the same way. A pipeline run that fails at compilation is excluded, because counting it would shorten lead time artificially.
◆ What happened, and the outcome — included with this guide purchase
Software Delivery Performance
The chapter describes a home-built dashboard in Microsoft PowerBI, chosen because the client used Azure DevOps. Deployment frequency was a daily bar graph over 31 days, with a summary of average deploys per day, today's deploys, the period total, and mean and 95th-percentile trend lines. It was rated 'DORA Elite'. Lead time for changes showed the daily mean, highlighted the longest individual lead time, and shadow-plotted deploy counts in light gray because people kept asking whether many deploys had happened that day. It rated 'High' in the figure, though the text describes the highlight as 'Low' on the Elite-Low scale, so the source is inconsistent on that point. Change failure rate typically showed zero or one failure per 24 hours, so problems stood out immediately, and it was rated 'Elite'. Time to restore service used a 120-day window, co-plotted lead time, also showed zero open change failures, and rated 'High'. The team spent most time getting comfortable with time to restore service. Once deployment frequency and lead times were stable, it became their primary focus.
◆ What happened, and the outcome — included with this guide purchase
Goal and KPI Clarity
Anna, an architect at YourFinFreedom, wants to use leverage points in the architecture to reduce complexity in the Travel Insurance domain. She runs workshops, builds a KPI Value Tree, and gets a plan from the product engineering team. She knows the team's capacity to deliver features will drop during the experiment, so she meets Keisha and shares the workshop outcomes, the value tree, and the plan. She names the consequences, what she wants to learn, and how it contributes to the company goal of being a major EU player. Keisha backs her, and the stakeholders accept the honest framing and agree the experiment should run and its results be shared. The team takes the travel insurance policy service live and replaces the central customer information service for that domain. The metrics show the old boundaries were misplaced, and redefining them means the domain's services no longer need release orchestration. Because goals and expected costs were agreed up front, the stakeholders back the same approach in other domains. Later, as the domain's KPIs improve, leaders question whether current metrics such as 'Decrease the time to find a match for the insurance quote request' still fit, since analysts forecast a need to hire more people. That is a goal-clarity check on the metrics themselves.
◆ What happened, and the outcome — included with this guide purchase
Maintainability
The source describes a monolith whose organization wants features to market faster, so it hires more people into product engineering teams. Each team tries its own solutions on top of the centralized architecture and adds accidental complexity: new dependencies, poorly documented or untested code, unstructured design. The result is a big ball of mud, and the ripple effects land on maintainability, operability, and changeability, so features slow down, the opposite of the intent. To keep this system in a stable maintenance-cost corridor, you would first agree with stakeholders that modifiability and testability are priority goals. Then you would add CI-triggered, automated, static fitness functions for cyclomatic complexity and unit test coverage, which are atomic and cover only the code they touch. Next you would add the four key metrics as a holistic view, captured manually at first and shown on a wiki-page dashboard. If lead time for changes lengthens while change failures rise, the atomic checks tell you where complexity is accumulating and the delivery metrics tell you it is hurting. In the source's own rollout, the team stabilized deployment frequency and lead time first, then made time to restore service the primary focus. Thresholds are yours to set; the passages give none for these checks.
◆ What happened, and the outcome — included with this guide purchase
System Quality and Business Outcomes
Andrew Harmel-Law's rollout shows the progression. His teams got PowerBI dashboards that let them self-serve data in real time and see only the data from their own pipelines. Trend lines were added, followed by timescales longer than the default 31 days. The cross-functional discussions that followed surprised him. Problems that once fell to him alone as architect to spot, analyze and fix were now being raised and solved by the teams. The requests came in a consistent order. First were process changes ('Can we change the cadence of releases?'). Next were quality changes ('Let's pull tests left', 'Let's add more automation'). Then came team-makeup changes ('Can we move to cross-functional or stream-aligned teams?'). All of it ended by exposing architectural problems: coupling looser on paper than in practice, domain boundaries less crisp than drawn, frameworks that got in the way, modules hard to test, and microservices impossible to observe under real traffic. The business-facing signal sits in the failure definition. Users who drop out of a slow system count as a service failure, so a user-visible quality problem shows up in the numbers.
◆ What happened, and the outcome — included with this guide purchase
Team Ownership and Engagement
The source describes an architect rolling out the four key metrics. Early team conversations were only about what each metric meant. Over the following weeks they moved to why the numbers were where they were (too high, too low, data missing), and then to how to improve them. Self-service, real-time data, a view limited to each team's own pipelines (all via PowerBI dashboards), trend lines, and timescales beyond 31 days all helped. The architect reports being amazed: problems that once fell to them alone to spot, understand, analyze, and remedy were now being raised and driven by the teams. The requests then escalated as predicted. First came "Can we change the cadence of releases?", then "Let's pull tests left" and "Let's add more automation", then "Can we move to cross-functional (or stream-aligned) teams?" All of it ended up exposing architectural problems such as coupling and observability gaps, which the architect then took on.
◆ What happened, and the outcome — included with this guide purchase
Technical Debt and Structural Erosion
The source cites Apache Cassandra as a real case of cycle-group growth. In version 2, the project already had a cycle group of about 450 Java files, and the passages note that such groups keep growing once they reach a certain size. Apply that to your own system: map the dependency graph at file or package level, highlight each cycle group, and record the size of the largest one. Re-measure each release. If it keeps growing, treat it as erosion, because a change in one area can now break something unrelated. Then add a cycle fitness function to CI so no new cycle can be committed, and set a lenient first goal, such as stopping growth, before you target shrinking the group. The passage on cost makes the stakes clear: as debt piles up, each change delivers less functionality per unit of time.
◆ What happened, and the outcome — included with this guide purchase
Testability and Deployability
Take the zero-downtime check described in the passages. A team has a service with its own pipeline. Their reliability fitness function runs a rolling update against the system in a test environment while traffic is applied, and verifies the system stays operational and no requests fail. It is holistic, because a pass means a large part of the system works for end users. It is triggered by the CI/CD pipeline on each change. A pass becomes part of the pipeline's definition of releasable. The team also deliberately takes one node down during the test to show the whole system stays responsive. Alongside it they run atomic checks, such as unit test coverage and cyclomatic complexity, as cheap early feedback. They feed pipeline results into the four key metrics, ignoring scheduled runs with no change and using daily totals for the graph. If a release manager still wants a separate integration pass after the pipeline, the pipeline has failed to define releasability, and the check moves into it.
◆ What happened, and the outcome — included with this guide purchase
Templates
Modularity and Coupling Seam Review Sheet
Complexity Fitness Function Sheet
◆ The fillable template — included with this guide purchase
Fitness Function and Pipeline Instrumentation Card
◆ The fillable template — included with this guide purchase
Four Key Metrics Definition Sheet
◆ The fillable template — included with this guide purchase
Goal-to-Metric Alignment Sheet
◆ The fillable template — included with this guide purchase
Maintainability Fitness Function Card
◆ The fillable template — included with this guide purchase
Service-Failure and Outcome Definition Sheet
◆ The fillable template — included with this guide purchase
Team Metrics Ownership Rollout Checklist
◆ The fillable template — included with this guide purchase
Erosion Watch Sheet
◆ The fillable template — included with this guide purchase
Testability and Deployability Audit Sheet
◆ The fillable template — included with this guide purchase
Items marked Paid are included when you buy this guide.
Movement IV
Reflect
Consider the book's evidence, limitations and how it compares with other sources.
How good is it — where the book stands against the field, what it leaves open, and when to trust it.
- — Its positioning, its critique, its blind spots
- — When to apply it — and when not
- — The evidence behind the advice
Book profile · in the corpus
This book’s model, against the corpus
8 of 10 constructs align with the field · 2 the book adds · 2 where it diverges · the field spans 30 constructs across 21 books
Shared with the corpus — corroborated by other sources
This book's own emphasis — where it's the authority
Where it diverges — the book and the field pull apart
The corpus adds — from 20 other sources this book doesn't cover
The full field guide folds in ideas this book doesn’t reach — drawn from 20 further sources and cited in the full model.
This book’s place in the corpus
Why the corpus guide, not just this book
The book builds on the Accelerate/DORA delivery-performance tradition and on evolutionary-architecture ideas, and it is the authority on architecture fitness functions in CI/CD, on goal-driven metric selection, and on team engagement with metrics. The reconciled field-guide still adds the wider context the book lacks: culture, cognitive load, burnout, measurement gaming, and a separate treatment of reliability and performance.
This guide stands on the shoulders of this book and 20 other sources — every claim cited, the disagreements named.
Read it closely
The book, examined
Not a summary — a close analytical reading: how the book is built, what it leaves open, and where it falls short.
How it’s built — the argument in order
- 01Preface: purpose and framing — States the problem: architecture metrics should warn early about accumulating architectural and technical debt. Ten practitioners promise practice over theory, with case studies and trade-offs. They link objective metrics to business outcomes and cite a reader survey showing demand but little available material. The chapters are deliberately different in voice.
- 021. DORA metrics — Starts with the four key delivery-performance metrics. They show how throughput and stability together can spark team-driven improvement. This gives readers a low-barrier, widely known starting point and establishes that metrics work in combination.
- 032. Fitness functions and the fitness function testing pyramid — Introduces fitness functions as the way to define 'good' for a particular system. They unify diverse validation mechanisms under one umbrella and are organized as a pyramid. This supplies the book's central conceptual vocabulary.
- 043. Testability and deployability as architectural guides — Treats two qualities as measurable drivers of design. Architecture is steered by how easily the system can be tested and released, which ties structure to delivery.
- 054. Quantifying technical debt with the Modularity Maturity Index — Gives a concrete composite measure of structural quality and technical debt. Modularity, coupling, and cyclic dependencies become something that can be scored and tracked.
- 065. Surviving imperfect DevOps transitions: private builds and process metrics — Defines the key terms (automation, CI, CD) and the logic that painful activities should be done more often and automated. A case-driven account then shows how teams can prioritize needs and improve the development process when the transition is incomplete. It uses private builds and process metrics, and the goal is to avoid breaking the shared build.
- 076. Connecting KPIs to architecture as an organization scales — Uses the fictional YourFinFreedom story (Anna, Keisha) to show a monolith-to-microservices move that drifts into a distributed big ball of mud for lack of metric-guided direction. Company KPIs (EBITDA, customer lifetime value, MAU) are traced down through a KPI Value Tree. Its levels run from organizational lagging KPIs, to domain KPIs, to metrics that are leading and lagging. The chapter warns with Goodhart's Law that KPIs are guides, not targets, and that the tree must evolve.
- 087. Embedding continuous measurement across the delivery lifecycle — Addresses where in the pipeline and lifecycle to measure, and how to introduce measurement without wasting effort. It builds on the CI/CD logic that later detection costs more.
- 098. Turning metrics into automated engineering governance via fitness functions — Shows fitness functions run continually in pipelines as an executable checklist. Governance moves from review meetings to automated checks.
- 109. Maintainability through coupling and complexity metrics — Focuses on code size, complexity, and coupling, especially cyclic dependencies and structural erosion. It argues these can be measured, limited, and reversed, and that the combination of metrics prevents lopsided improvement.
- 1110. Discovering metrics with Goal-Question-Metric (GQM) — Closes with a method for hard, poorly understood problems where no ready metric exists. Starting from goals and questions makes the chosen metrics trusted and meaningful, which echoes the book's theme that why you measure comes before what you measure.
What it leaves unsolved
How can a team know which metrics fit its own context when copying another organization's set fails?
The book says context decides and offers a toolbox rather than a method. GQM is the main aid, but the material gives no general procedure for choosing among competing candidates, so the judgment is left to the reader.
How do you keep metrics from becoming targets once they are automated into pipelines and governance?
Goodhart's Law is invoked and KPIs are called 'guides and enablers, not targets'. Fitness functions as executable checklists and quality gates nonetheless act like targets. The passages do not show where guidance turns into gaming.
How strongly and causally do architecture metrics (DORA, coupling, MMI) predict business KPIs such as EBITDA, lifetime value, or MAU?
The KPI Value Tree links levels conceptually, with deployment frequency and change fail rate as leading indicators. The link is argued by narrative and workshop rather than demonstrated, and the lagging business outcomes are affected by many other forces.
What absolute thresholds count as good or bad?
The takeaways stress that trends are often more revealing than absolute values and that contexts differ. That leaves open when a value is dangerous in itself.
How should measurement evolve as an organization and its technology scale?
The KPI Value Tree is described as a snapshot that needs continual discussion and adjustment. The book does not say how often or by what signals teams should retire or replace metrics.
How do you measure hard qualities such as scalability and security objectively?
The book raises these alongside maintainability, testability, and technical debt. GQM is offered for poorly understood problems, but the framing suggests no settled metric exists for them.
How can teams in imperfect or partial DevOps transitions get reliable measurement when the pipeline itself is immature?
The process-metrics chapter exists because transitions are imperfect. The material only describes pragmatic workarounds, not a way of knowing the measurements are trustworthy.
Where it falls short — a fair critique
The book is an anthology of ten voices and explicitly declines to prescribe one method. It is rich in tools but offers no integrating framework for how DORA, fitness functions, MMI, KPI trees, and GQM relate or sequence. The reader must assemble the pieces.
The Preface says the book is about what has been tried and has worked, but the passages show little quantitative evidence. The KPI chapter relies on a stylized fictional company (Anna, Keisha, YourFinFreedom) rather than measured outcomes. Its claims about success are therefore illustrative rather than demonstrated.
The reader survey that motivates the book is mentioned only briefly, with no sample or method. The claim of strong demand and few resources is not substantiated, and other existing literature on software metrics is not engaged in the passages.
The book promotes automated, continuous governance via fitness functions and quality gates while also warning (Goodhart's Law) that measures must not become targets. A pipeline check that fails the build is effectively a target. The tension between the two positions is stated but not resolved.
It says metrics must be context-dependent and cannot be copied, yet it presents well-known sets such as the four DORA metrics and recurring coupling and cyclic-dependency measures as broadly useful starting points. The criteria for when a standard metric transfers and when it must be custom-built are never made explicit.
The causal story from architecture metrics to business outcomes (EBITDA, MAU, lifetime value) is asserted by mapping levels in a value tree. Deployment frequency and change fail rate are called leading indicators of domain KPIs without evidence of predictive strength, and confounders such as market, product, and people are not addressed.
Treating lagging and leading indicators as a clean split is questionable. The KPI chapter labels some metrics as both lagging and leading. Because the same measure is classed both ways, the taxonomy gives limited guidance on which signals should drive decisions.
The framing promises coverage of scalability and security alongside maintainability, testability, and deployability. The passages and chapter list emphasize delivery, modularity, and coupling or complexity, so scalability and security appear underdeveloped in comparison.
The cost and human side of adopting metrics (tooling effort, team trust, and the risk of misuse for performance management) is acknowledged through themes like team ownership and engagement, and the aim of avoiding wasted effort. It still gets little concrete treatment of overhead or of how to prevent metrics being used against teams.
Before you apply it
Using it well
Where the method fits, who it’s for, and the honest case for and against — so you apply it where it works.
Is this book for you?
For you if
- You are a software architect, tech lead, or engineering manager who must justify architectural decisions with evidence rather than intuition
- You already run, or plan to run, CI/CD pipelines and want to extend them with architectural checks
- You are struggling with maintainability, technical debt, or erosion and need ways to quantify them
- You need to connect architecture work to business KPIs and outcomes
- You want a practical toolbox of case studies rather than a single prescriptive method
Skip it if
- You want a single universal set of metrics with fixed thresholds to apply as-is
- You are looking for deep theory or academic research on software metrics (the book states it is about practice, not theory)
- You are a junior developer with no influence over architecture, pipelines, or team practices
- Your system is small, short-lived, or has no maintenance horizon, so measurement overhead isn't justified
Need first
- Working knowledge of CI/CD and automated builds and tests, since most techniques rely on pipeline automation
- Basic familiarity with architectural concepts such as modularity, coupling, cohesion, and cyclic dependencies
- A clear understanding of your system's goals and your organization's KPIs, so you know why you are measuring
- Some team buy-in and psychological safety, so that metrics are used for improvement rather than blame
When it applies — and when it doesn’t
- A team with a CI/CD pipeline already in place wants to turn architectural rules (coupling limits, cyclic dependencies, layering) into automated fitness functions — The book's core thesis is that continuous, automated checks act as an executable architecture checklist, and a pipeline gives them somewhere to run.
- A codebase is drifting toward a big ball of mud, and you need to measure and limit cyclic dependencies and structural erosion — Cycles and erosion are named as the main enemies of maintainability, and the book says they can be measured, limited, and reversed.
- A company moving from monolith to microservices has no direction, and architects need to tie architecture to business KPIs — The KPI Value Tree and Goal-Question-Metric approach link org-level KPIs to team-level metrics, which guards against the accidental complexity of a distributed big ball of mud.
- Adopting DORA metrics (throughput and stability) to start team-driven delivery improvement — The book favors pairing throughput with stability so improvement isn't lopsided, and it presents the metrics as a way to spark team-owned change.
- Quantifying technical debt for a prioritization conversation with management, for instance with a Modularity Maturity Index — It gives an objective, trend-trackable measure that turns a vague debt concern into a concrete, discussable number.
- Optimizing a single metric in isolation, such as raw code coverage or deployment frequency alone — The combination of metrics matters more than any one, so pair coupling with complexity and throughput with stability.
- A team that is skeptical of measurement or has little say in choosing metrics — Team ownership and trust are prerequisites; use Goal-Question-Metric so people understand why they measure.
- Measuring hard, poorly understood problems such as security or scalability where no standard metric exists — Goal-Question-Metric offers a way to discover metrics, but the results will be bespoke and need validating.
- Judging a team or system by one absolute number taken at a single point in time — The book stresses that trends are often more revealing than absolute values.
- Copying another organization's metric set or thresholds wholesale into your own context — The book says metrics are context-dependent and that imported metrics fail because contexts differ.
- Setting a metric as a hard target tied to performance reviews or bonuses — Goodhart's Law is quoted directly: KPIs and metrics should be guides and enablers, not targets, or they stop being good measures.
- A very early prototype or throwaway system with no long-term maintenance horizon — The effort of building continuous measurement infrastructure outweighs the benefit when maintainability and debt don't yet matter.
The honest case
Strongest case for
- Architecture decisions are costly and hard to reverse, so replacing gut feeling with objective, repeatable measurement reduces risk and settles opinion-driven disputes.
- Automating measurement through fitness functions in pipelines gives continuous feedback, catching erosion and cyclic dependencies early, when fixing them is cheapest.
- Trends and combined metrics, such as throughput with stability or coupling with complexity, reveal direction and trade-offs that intuition misses.
- Tying metrics to goals and KPIs through Goal-Question-Metric and KPI Value Trees makes architectural work legible to the business and gives teams a reason to care.
- The book draws on ten practitioners' real case studies rather than theory, which shows the techniques have survived contact with real organizations and contexts.
Strongest objection
- Metrics can be gamed, and Goodhart's Law shows that once a measure becomes a target it stops measuring the thing you care about, so the discipline risks producing optimized numbers rather than better architecture.
- Many of the qualities that matter most, such as good boundaries, fit with business domain, and design clarity, are judgment-heavy and resist quantification, so measurable proxies may crowd out what is important but unmeasurable.
- Because the book insists that metrics are context-dependent and offers a toolbox rather than a method, readers get little guidance on which metrics to pick, and the evidence that metrics improve outcomes is anecdotal.
- Building and maintaining the measurement infrastructure and culture is itself costly, and it favors teams with mature pipelines and resources, while small teams may be better served by skilled design judgment and code review.
The model's constructs are drawn from the source element(s); load-bearing constructs are corroborated across the shelf, emerging ones are flagged.
Ideas covered by the source notes
- Continuous Automated Measurement
- Architectural Modularity and Loose Coupling
- Code Size and Complexity
- Testability and Deployability
- Goal and KPI Clarity
- Team Ownership and Engagement
Movement V
Measure
Use available assessments to reflect on what you have learned.
A way to gauge yourself against the book's model, and the instruments it gives you.
- — A self-check built from the book
- — Instruments and what you'd measure next
Learning curriculum
After this book, you can…
The book's learning objectives, classified by Bloom's taxonomy and ordered so each builds on the ones before it.
- explainAfter this book you can explain why objective, continuous measurement (rather than gut feeling) turns architecture from craft into an engineering discipline, and describe the roles of CI/CD and automation in supporting it.Check: Short written explanation or discussion that links CI/CD, automation of 'painful' activities, and early feedback to objective architectural measurement, with examples.
- defineAfter this book you can define the core architectural qualities (maintainability, modularity, testability, deployability, technical debt, runtime quality) and relate each to the kinds of metrics that indicate it.Check: Matching and short-answer exercise: given a quality attribute, name candidate metrics and explain what each reveals and its limits.
- calculateAfter this book you can calculate and interpret the four key DORA metrics (deployment frequency, lead time for changes, change failure rate, time to restore) and use them in combination to balance throughput with stability.Check: Given sample delivery data, compute the four metrics, interpret them together, and identify lopsided improvement.
- applyAfter this book you can apply practices that foster team ownership of metrics (visibility, team-driven discussion, acting on what is measured, starting small) rather than using metrics as targets or management weapons.Check: Design a rollout plan for a metric on a team, including how it is made visible, discussed, and acted on, and how misuse as a target is avoided.
- implementAfter this book you can write and automate fitness functions in a build pipeline so that architectural rules (e.g., dependency, complexity, and cycle constraints) are governed as an executable checklist.Check: Practical exercise: implement an automated architecture check in a CI pipeline that fails the build on a violation, and explain how it replaces a manual review.
- assessAfter this book you can assess testability and deployability of a system, using a fitness function testing pyramid and independent deployment-unit criteria to decide what to improve.Check: Case-based analysis of a system's tests and deployment pipeline, producing a pyramid-based gap analysis and prioritized improvements.
- traceAfter this book you can elicit and document architectural goals, quality attribute requirements, and organizational KPIs, and trace how architecture decisions connect to business KPIs (e.g., MAU, EBITDA) as an organization scales.Check: Given a company scenario, build a goal-to-KPI-to-architecture map and identify metrics that enable (rather than target) the intended direction.
- analyzeAfter this book you can measure modularity, coupling, and cyclic dependencies (e.g., between packages/namespaces) and use them to detect structural erosion and quantify technical debt, for example via a Modularity Maturity Index.Check: Analyze a dependency report or case study, identify cycles and violations, estimate the technical-debt impact, and propose a limit on cycles.
- planAfter this book you can plan how to embed measurement across the delivery lifecycle, including imperfect DevOps transitions (private builds, process metrics), without wasting effort.Check: Create a phased measurement roadmap for a team with a flawed delivery process, specifying which metrics are collected where, at what cost, and with what action.
- deriveAfter this book you can use the Goal-Question-Metric approach to derive suitable metrics for hard or poorly understood problems.Check: Given a vague problem (e.g., 'security posture is unclear'), produce a GQM tree with goals, questions, and measurable metrics, and justify the choices.
- evaluateAfter this book you can evaluate code-level maintainability using size, cyclomatic complexity, indentation depth, cohesion, and coupling metrics, and combine them to avoid one-sided optimization.Check: Given metric output for a codebase, judge which files/methods are maintainability risks and justify prioritization using a combination of metrics.
- justifyAfter this book you can judge which metrics fit a given context, interpreting trends rather than absolute values, and justify rejecting copied metrics from other organizations.Check: Critique a proposed metric set, using trend data and context to accept, adapt, or reject each metric with reasoning.
- designAfter this book you can design an integrated, metric-driven strategy that keeps a system from becoming a big ball of mud while it evolves (e.g., monolith to microservices), combining governance automation, team engagement, and business-aligned goals.Check: Capstone proposal for an evolving system, specifying goals, metrics, fitness functions, team practices, and review cadence, with the trade-offs explained.
How to measure it
Turning each idea into a measure
For each construct: how to operationalize it, the observable signals to look for, and how well it holds up.
Assessed by auditing pipelines and tooling for automated metric collection, presence of fitness functions with enforceable thresholds, cadence of computation, and visibility of results.
- metric jobs running per commit or nightly
- build-breaking thresholds
- shared dashboards or wiki pages
- trend charts over time
Best captured as a categorical maturity assessment plus archival counts of automated checks; not self-report based.
Risk of measuring presence of infrastructure rather than whether measurements are acted upon. · Pipeline configuration and tool logs give repeatable evidence.
Quantified using coupling metrics (Average Component Dependency, propagation cost), cycle group size, relative cyclicity, structural debt index, and the Modularity Maturity Index derived from architecture review and tools.
- size of largest cycle group
- propagation cost percentage
- package cycle counts
- MMI modularity subscore
Continuous archival metrics aggregated to component, package, and system levels.
Some aspects (clear responsibilities, naming) require reviewer judgment and are not fully measurable. · Automated static analysis provides high repeatability; reviewer-based components need paired reviews for consistency.
Measured via static analysis metrics such as lines of code, number of statements, cyclomatic complexity, LCOM4, and maximum indentation, with soft thresholds.
- percentage of code in large files/methods
- average cyclomatic complexity
- indentation debt
- LCOM4 values > 1
Continuous archival values with recommended thresholds (e.g., <800 LoC per file, <15 modified cyclomatic complexity).
LCOM4 unreliable within complex class hierarchies; complexity is a proxy for readability. · High—deterministic from source code via tools.
Assessed by presence and coverage of automated tests, test-driven design practices, deployment pipeline scope and determinism, and ease of establishing modules in known states for testing.
- automated test coverage
- pipeline pass/fail determinism
- independently deployable units
- TDD adoption
Mixed—coverage percentages (archival) plus qualitative assessment of pipeline design.
Coverage alone is an imperfect proxy for testability; deployability depends on correct pipeline scoping. · Coverage and pipeline metrics are repeatable; design assessments benefit from consistent criteria.
Assessed through the existence and quality of GQM trees, KPI value trees, EventStorming outputs, documented quality goals, and stakeholder agreement on definitions.
- documented goal statements
- consensus on KPI definitions
- GQM tree traceability
- KPI value tree ownership
Primarily perceptual and artifact-based; can be assessed via workshops and document review.
Different stakeholders may hold divergent KPI definitions until convergence is created. · Depends on facilitation quality; artifact review improves consistency.
Assessed via participation in metric discussions, initiative in raising and driving improvement requests, discipline in running private builds, and employee Net Promoter Score.
- team-initiated improvement requests
- cross-functional metric conversations
- consistent private-build discipline
- employee NPS
Mostly perceptual (surveys, NPS) plus behavioral observation.
Engagement may be influenced by broader organizational culture beyond metrics. · Perceptual measures require consistent survey instruments; behavioral signals are more stable.
Quantified via the Modularity Maturity Index, structural debt index, relative cyclicity, architecture violation counts, and architecture review of target-versus-actual architecture.
- MMI score
- structural debt index
- growth of cycle groups
- increasing change effort per feature
Archival composite metrics; MMI on a 0-10 scale where <4 signals replacement candidate.
Some architecture debt requires reviewer judgment and cannot be fully counted automatically. · Tool-based metrics reliable; review-based judgments improved by paired assessments.
Computed from pipeline commit and deployment timestamps and change-failure tickets, aggregated over rolling time windows (e.g., 31 or 120 days).
- deploys per day
- elapsed time commit-to-deploy
- percentage of deploys causing failures
- median time to restore
Archival quantitative metrics reported as means/medians over defined periods; consistent scope required across all four.
Definitions of 'failure' and commit timestamp involve judgment; proxies can skew figures. · High when data sources and scope are consistent; manual ticketing introduces some skew.
Approximated by the Maintainability Level metric, MMI, coupling/complexity metrics, and observed trends in maintenance effort and trunk stability.
- Maintainability Level percentage
- MMI score
- time spent restoring trunk stability
- stable maintenance-cost corridor
Mixed—composite code metrics (archival) plus effort trends; ML expressed as a percentage.
Maintainability Level is experimental; must combine component and package structure health. · Tool-computed metrics are reproducible; effort-based signals depend on consistent tracking.
Measured via operational metrics (latency, throughput, MTBF/MTTR, RPO/RTO, vulnerability counts) and business KPIs (monthly active users, revenue, EBITDA) tied through KPI value trees.
- response time distributions
- workload capacity per resource
- availability percentage and MTTR
- vulnerability findings
- MAU/revenue trends
Mixed archival and operational metrics; some quality attributes measurable only in operation, others estimable via models.
Security relies on proxy measures; availability 'nines' can be misleadingly simplistic. · Operational metrics reliable when environments are consistent; models require calibration.
Self-assessment
Where would you like to improve?
This is a structured self-diagnostic built from the model — a mirror for reflection, not a validated psychometric scale. For validated measurement, see the instruments below.
1 = Strongly Disagree · 7 = Strongly Agree
Proposed measures — starter instruments where no validated one was found
Continuous Automated Measurement Index (Proposed)
proposed · not validatedRated for your team or hiring process — not a personal self-check.
- Delivery metrics such as build time, deployment frequency, and change failure rate are computed by the pipeline on every build or release without manual data collection.
- Architectural fitness functions are defined as executable checks and run automatically in the delivery pipeline, with failures visible to the team.
- Current metric values are available on a shared dashboard that is refreshed automatically at least daily and is accessible to all team members.
Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.
Architectural Modularity and Loose Coupling Index (Proposed)
proposed · not validatedRated for your team or hiring process — not a personal self-check.
- System components have documented responsibilities and explicit interfaces, and each component can be built and tested without building the entire system.
- Dependency analysis tooling shows no cyclic dependencies between modules, and automated rules prevent new violations from being merged.
- A typical feature change is completed within one or two modules without requiring coordinated changes in other teams' components.
Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.
Code Size and Complexity Index (Proposed)
proposed · not validatedRated for your team or hiring process — not a personal self-check.
- Static analysis reports cyclomatic complexity, method length, and file size for every change, and agreed thresholds are enforced by a pipeline quality gate.
- Files and methods exceeding the agreed complexity or size thresholds are tracked in a visible backlog with named owners and scheduled remediation.
- Trend data show that average and maximum method complexity and nesting depth are stable or declining across the past several releases.
Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.
Sources
- Software Architecture Metrics — Christian Ciceri et al · Ten leading practitioners show how to select, implement, automate, and act on software architecture metrics so that objective measurement—not gut feeling—guides architectural decisions and business outcomes.
The cheat sheet
Everything, on one page
One key takeaway from each section, with links to read more.
- Continuous Automated MeasurementMeasurement counts as continuous only when it executes on every change and can block a merge.
- Architectural Modularity and Loose CouplingCyclic dependencies are the clearest observable sign that a module boundary is not real.
- Code Size and ComplexityLook at the tail of the distribution, not the average, to find the code that actually hurts.
- Testability and DeployabilityA component you cannot test in isolation is a coupling problem, not a testing problem.
- Goal and KPI ClarityPick metrics from goals, not goals from the metrics your tool happens to produce.
- Team Ownership and EngagementOwnership is built by letting teams see and act on metrics, not by mandating compliance.
- Technical Debt and Structural ErosionStopping new erosion matters more than cleaning up old erosion.
- Software Delivery PerformanceThroughput and stability must be read as a pair; improving one at the other's expense is not progress.
- MaintainabilityMaintainability is judged by the trend in cost of change, not by a snapshot score.
- System Quality and Business OutcomesVerify internal improvements against production and user-facing measures before claiming success.
Publication details
Consult the sources listed in this guide for further reading. Edition 1 · Updated 2026-10-03.
Explore related books and profiles in the library.