Architecture Report

java — version local — recovered with pkg

818
Entities
560
Dependencies
2
Components
1
Smells

Quality Metrics

Core ARCADE Metrics

0.979
RCI
1.807
TurboMQ
0.903
BasicMQ
0.005
IntraConnectivity
0.000
InterConnectivity
1.000
TwoWayPairRatio

Balanced / Principle-aligned Scores

0.550
DependencyHealth
0.570
ComponentBalance
0.000
HubBalance
0.000
BoundaryClarity
1.000
DependencyDistribution
0.700
SmellDiscipline
0.633
PrincipleAlignmentScore
0.791
BalancedArchitectureScore

Architecture Diagram

graph TD
    Cache["Cache\n(761 entities)"]
    Stats["Stats\n(57 entities)"]
    Cache --> Stats
    Stats --> Cache
        
Package-based grouping (depth=4 after common prefix 'com.github.benmanes.caffeine.cache') with dependency-affinity facade refinement (10 entities reassigned).

Components

Component Responsibility # Entities
Cache Entities in cache 761 com.github.benmanes.caffeine.cache.AbstractLinkedDeque, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.add, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.addFirst, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.addLast, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.checkNotEmpty, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.clear, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.contains, com.github.benmanes.caffeine.cache.AbstractLinkedDeque.descendingIterator, ... (+753 more)
Stats Entities in stats 57 com.github.benmanes.caffeine.cache.BoundedLocalCache.statsCounter, com.github.benmanes.caffeine.cache.Cache.stats, com.github.benmanes.caffeine.cache.Caffeine.getStatsCounterSupplier, com.github.benmanes.caffeine.cache.Caffeine.recordStats, com.github.benmanes.caffeine.cache.LocalCache.statsCounter, com.github.benmanes.caffeine.cache.LocalManualCache.stats, com.github.benmanes.caffeine.cache.UnboundedLocalCache.statsCounter, com.github.benmanes.caffeine.cache.stats.CacheStats, ... (+49 more)

Architectural Smells (1)

low SmellType.DEPENDENCY_CYCLE

Circular dependency among 2 components: Cache <-> Stats

Why: Dependency cycles make components tightly coupled — you cannot change, test, or deploy any component in the cycle independently. This hinders maintainability, increases build times, and makes the system harder to understand.

Fix: Break the cycle by introducing an interface/abstraction that one component depends on, inverting the dependency direction. Consider the Dependency Inversion Principle (DIP).

Affects: Cache, Stats

Dependency Summary

PackageEntities
com.github.benmanes.caffeine.cache 808
com.github.benmanes.caffeine.cache.stats 53