Metrics

Architecture metrics, made practical

Metrics are only useful when they help you decide what to do next. Each page below starts with plain-English interpretation: what a high value means, when to act on it, when to ignore it, and where AtlasArc shows it.

AtlasArc marks readings that need context. Detailed explanations include a Keep in mind caveat, while ratio metrics on packages with fewer than three classes carry a low-confidence signal rather than presenting a fragile extreme as certainty.

Inside AtlasArc, a clickable sidebar value opens a drill-down that explains the reading and exposes the evidence available behind it. Depending on the metric, that can mean coupled units and edge references, formula operands, contributing classes, methods or files, packages, or edge sets—so an aggregate signal leads to inspectable causes rather than an unspecified detail panel.


Alternative terms

Metric matrix

AtlasArc computes package, subsystem, class, coverage, cycle, and project-level metrics from the same analysis model. This matrix maps each metric to common aliases, what it measures, the lenses where it most directly drives interpretation, and the workflows that use it.

Availability follows the evidence in the active analysis. Java and Kotlin supply JVM-only readings such as Abstractness, Distance, and Relative Visibility; those stay unavailable for TypeScript. Java/Kotlin complexity comes from AtlasArc's built-in analysis, while TypeScript complexity requires compatible SARIF evidence. Coverage appears only after a JaCoCo or LCOV report is loaded. This is a product-wide metric map, not a promise that every row exists in every analysis. See TypeScript support and each metric page for the exact input and unavailable-state contract.

Name Alias What it measures Primary lens drivers Workflows
Package and class metrics
Fan-out Efferent coupling, Ce, exits Outgoing dependency targets; external packages this package or class uses. Topology Graph, Package Matrix, Hotspots, Composition heatmap, Metrics sidebar Review package boundaries; Understand subsystem coupling; Find packages that know too much; Stable but too concrete; Packages in the wrong place; Zone of Uselessness; Ticking time bombs; Audit a module boundary
Fan-in Afferent coupling, Ca, entrances Incoming dependency sources; packages or classes depending on this item. Topology Graph, Package Matrix, Hotspots, Composition heatmap, Metrics sidebar Review package boundaries; Understand subsystem coupling; Show me the backbone; Find packages that know too much; Stable but too concrete; Zone of Pain; Zone of Uselessness; Leaky internals; Hard-to-change packages; Audit a module boundary
Instability I Dependency balance; fan-out divided by fan-in plus fan-out, 0 stable to 1 unstable. Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap, Composition heatmap Identify risky hotspots; Understand subsystem coupling; Show me the backbone; Cycle / tangle reduction; Zone of Pain; Zone of Uselessness; Ticking time bombs; Audit a module boundary
Abstractness A Public abstraction ratio; interfaces and abstract types compared with public type count. Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap, Composition heatmap Identify risky hotspots; Show me the backbone; Stable but too concrete; Zone of Pain; Zone of Uselessness
Distance from main sequence D, normalized distance Fit to stable abstractions principle; absolute distance from A + I = 1. Hotspots Zone Map, Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Identify risky hotspots; Packages in the wrong place; Zone of Pain; Zone of Uselessness; Inspect subsystem composition
Relative visibility RV, visibility Public JVM classes divided by all JVM classes represented for the package in the metric model. Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap, Composition heatmap and JVM-public class markings Leaky internals; Understand subsystem coupling
Cyclomatic complexity max CC max Strongest control-flow path-count outlier beneath a package, class, source folder, or source file. Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Identify risky hotspots; Hard-to-change packages; Complexity hotspots
Cyclomatic complexity average CC avg Mean control-flow path count across scanned methods or class-weighted package rollups. Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Complexity hotspots
Cognitive complexity max CogC max Strongest estimated reading-difficulty signal from nesting, branching, recursion, and flow disruption. Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Complexity hotspots; Inspect subsystem composition
Cognitive complexity average CogC avg Mean reading difficulty across scanned methods or class-weighted package rollups. Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Complexity hotspots
Class / source-file count Types, type count, source-file count Implementation-unit count: declared types for Java/Kotlin packages and represented source files for TypeScript source folders. Composition, Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap Identify risky hotspots; Understand subsystem coupling; Inspect subsystem composition
Lines of code LOC, lines Code mass by source lines in a package, class, or subtree. Composition, Hotspots, Subsystems, Topology Graph heatmap, Package Matrix heatmap Inspect subsystem composition
Method count Methods Class-level size and responsibility count; number of methods on a class bubble. Hotspots class mode, Composition class mode Complexity hotspots
Line coverage JaCoCo / LCOV line coverage Executed line ratio from a loaded coverage report; low values are riskier. Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Manual coverage heatmap review
Branch coverage JaCoCo / LCOV branch coverage Executed branch ratio from a loaded coverage report; low values expose untested decisions. Topology Graph heatmap, Package Matrix heatmap, Composition heatmap, Metrics sidebar Manual coverage heatmap review
Dependency, cycle, and subsystem metrics
Dependency references Edge count, ref count, weight Number of concrete references from one package to another. Package Matrix boundary mode, Topology Graph, exports Find cyclic package dependencies; Review package boundaries; Show me the backbone; Find packages that know too much; Find accidental boundary leaks; Packages in the wrong place
Cycle status Cyclic dependencies, SCC, cycle type Whether an item participates in architectural, nested, aggregation, governed, or no cycles. Topology Graph, Package Matrix, Subsystems internal tangles, Hotspots cycle colour Find cyclic package dependencies; Cycle / tangle reduction; Audit individual cycle groups
Cycle group count Internal cycles, SCC count Number of strongly connected dependency groups fully inside a subsystem tree. Subsystems internal tangles, Metrics sidebar Find cyclic package dependencies; Cycle / tangle reduction; Audit a module boundary; Audit individual cycle groups
Largest cycle size Largest SCC Package count in the largest internal dependency cycle for a subsystem tree. Subsystems internal tangles, Metrics sidebar Cycle / tangle reduction; Audit a module boundary; Audit individual cycle groups
Architecture-unit count Package count, source-folder count, subsystem size Number of packages in a JVM subtree or source folders in a TypeScript subtree; structural breadth, distinct from implementation-unit count. Subsystems, Composition, Metrics sidebar Understand subsystem coupling; Audit a module boundary; Inspect subsystem composition
Internal edges Internal coupling Dependency edges where source and target are both inside the same subtree. Subsystems, Boundary Flow, Metrics sidebar Understand subsystem coupling; Audit a module boundary
Boundary fan-out Subsystem exits, efferent boundary coupling External packages depended on by packages inside the subsystem. Subsystems boundary risk, Boundary Flow, Metrics sidebar Understand subsystem coupling; Audit a module boundary
Boundary fan-in Subsystem entrances, afferent boundary coupling External packages that depend on packages inside the subsystem. Subsystems boundary risk, Boundary Flow, Metrics sidebar Understand subsystem coupling; Audit a module boundary
Subsystem instability Boundary I Subsystem boundary balance; exits divided by exits plus entrances. Subsystems boundary risk, Metrics sidebar Understand subsystem coupling; Stable but too concrete; Zone of Pain; Audit a module boundary
Subsystem cohesion Cohesion Internal connectedness; internal edges compared with total internal plus boundary edges. Subsystems boundary risk, Metrics sidebar Understand subsystem coupling; Audit a module boundary
Recursive abstractness Subsystem abstractness Class-count-weighted abstractness across every package in a subtree. Subsystems visibility surface, Topology Graph subsystem heatmap, Package Matrix subsystem heatmap Stable but too concrete; Zone of Pain
Recursive visibility Subsystem visibility Class-count-weighted relative visibility across every package in a subtree. Subsystems visibility surface, Metrics sidebar Leaky internals; Understand subsystem coupling
Project-level metrics
Cumulative component dependency CCD Total transitive dependency load across all components. Project stats, reports, model exports Project architecture health review
Average component dependency ACD Average transitive dependency load per component. Project stats, reports, model exports Project architecture health review
Relative average component dependency RACD Average transitive dependency load normalized by graph size. Project stats bar, Metrics sidebar Project architecture health review
Normalized cumulative component dependency NCCD Overall coupling density compared with a balanced component hierarchy. Project stats bar, Metrics sidebar Project architecture health review
Average relative visibility ARV Arithmetic mean of package RV values, giving each package equal weight. Project stats bar, Metrics sidebar Leaky internals; Project architecture health review
Global relative visibility GRV Public JVM classes divided by all JVM classes across the graph. Project stats bar, Metrics sidebar Leaky internals; Project architecture health review