Mass

Composition

Read package hierarchy and code mass through Sunburst, Treemap, or Circle Pack. Area follows the selected size measure and starts with lines of code.

Composition shows where the code lives in the package or source-folder hierarchy. It starts in Sunburst with lines of code as the size measure, neutral depth colour, and Heatmap off. Area shows mass; containment shows hierarchy. Dependency direction belongs to Topology and Matrix.

This read is useful before significant refactoring. The area that feels central in day-to-day work may be small, while an overlooked utility branch carries much more code than its name suggests. Composition makes that imbalance visible before you choose a boundary to move or split.

Double-click an area to make it Current Focus and use the breadcrumb to move back through the hierarchy. Right-click when you want to navigate to the corresponding source in the IDE. Sunburst, Treemap, and Circle Pack answer the same composition question with different geometry; each makes a different comparison easier.

Sunburst

Sunburst is the initial depth read. Inner arcs sit closer to Current Focus; outer arcs are deeper descendants. It exposes branch shape and nested structure while still showing how much mass each branch owns.

Double-click an arc to change Current Focus. Click the centre or empty area to select the current root. Use Sunburst when you need to explain how an area is nested before discussing how large it is.

Screenshot: Composition Sunburst at the project focus with LOC sizing, neutral depth colour, breadcrumb, and Heatmap off
Hierarchy before comparison. Show enough rings and branching to make nesting depth and each branch's share of the current focus immediately visible.

Treemap

Treemap is the proportional read. Rectangles make it easy to compare how much code mass lives in one branch versus another. It opens in Adaptive, which selects a useful frontier through the hierarchy.

Its three visible projections answer different depth questions:

  • Focus shows the direct child areas beneath the current Composition focus without changing Current Focus.
  • Adaptive balances breadth and depth to keep the most useful hierarchy frontier visible.
  • Full System shows the complete recursive hierarchy beneath the current Composition focus. It does not reset the lens to the whole project.

Keep the Current Focus, size measure, and viewport constant across these three shots. The comparison should show that the projection changes while the underlying composition question does not.

Screenshot: Treemap Focus showing direct child areas only
Direct comparison. One level beneath the current Composition focus.
Screenshot: same Treemap in Adaptive with its useful multi-level frontier
Exploration frontier. Breadth and depth are balanced for a readable starting field.
Screenshot: same Treemap in Full System with complete recursive hierarchy
Complete subtree. Every level beneath Current Focus is included.

At a terminal JVM package, Treemap can enter a contained class-detail read when you need to see which types own that package's mass. That is implementation detail inside the package, not a new architecture level across the other lenses.

Screenshot: terminal JVM package Treemap showing contained class tiles, public-class markers, and source navigation context
Implementation evidence inside one package. Make the package boundary and contained class role unmistakable so classes do not appear to be peer architecture units.

Circle Pack

Circle Pack is the cluster read. Nested circles make containment easy to perceive when you are scanning for families of related areas rather than comparing rectangular sizes.

Use it as a second read when Treemap feels too rectilinear or Sunburst makes sibling comparison awkward. It remains a Composition renderer, not a dependency graph or a sixth lens.

Screenshot: Composition Circle Pack on the same focus and LOC measure used for the renderer comparison
Containment as clusters. Show nested package families with enough detail to demonstrate progressive label visibility without losing the outer boundary.

Size and Heatmap

Area follows the selected size measure; lines of code is the initial choice. Changing size asks a new composition question without inventing dependency meaning. A large region owns more of the selected measure, not automatically more architectural risk.

Heatmap adds a compatible metric as colour while area continues to show mass. With Heatmap off, colour is neutral hierarchy depth. With Heatmap on, the named metric owns the colour scale. That distinction keeps “large” and “under pressure” from collapsing into the same claim.

Screenshot: one Composition renderer sized by LOC with neutral hierarchy colour
Mass and containment. Area answers the size question while colour only preserves structural depth.
Screenshot: identical renderer, focus, and LOC sizing with Distance Heatmap and legend enabled
The same mass, now with pressure. Only colour changes, making the overlay's added question visually explicit.

What carries into other lenses

Changing Current Focus carries across the shared investigation. A compatible Heatmap selection can carry among Topology, Matrix, and Composition. Renderer, size measure, and Treemap projection remain local to Composition, so another lens does not inherit a hierarchy-rendering choice it cannot use.

Take the composition read with you

Snapshot as PNG captures the active Sunburst, Treemap, or Circle Pack. Composition does not turn the rendered hierarchy into Matrix data or DOT topology; an Architecture Report remains a separately assembled model-driven product.

When a composition read is unavailable

AtlasArc distinguishes no analysis model, no architectural units, and a Current Focus or filter that leaves no eligible areas. It names the condition and offers the corresponding analysis, source, breadcrumb, or reset action. If a selected size or Heatmap metric is unavailable for the current evidence, AtlasArc explains that boundary instead of substituting zero and changing the meaning of the chart.