Architecture Report

java — version local — recovered with pkg

1078
Entities
3520
Dependencies
13
Components
6
Smells

Quality Metrics

0.396
RCI
0.263
TurboMQ
0.263
BasicMQ
0.011
IntraConnectivity
0.007
InterConnectivity
0.286
TwoWayPairRatio

Architecture Diagram

graph TD
    Default["Default\n(71 entities)"]
    Antipattern["Antipattern\n(42 entities)"]
    Clustering["Clustering\n(343 entities)"]
    Facts["Facts\n(145 entities)"]
    Functiongraph["Functiongraph\n(27 entities)"]
    Jira["Jira\n(4 entities)"]
    Metrics["Metrics\n(110 entities)"]
    Topics["Topics\n(94 entities)"]
    Util["Util\n(52 entities)"]
    Visualization["Visualization\n(41 entities)"]
    Util2["Util2\n(38 entities)"]
    Json["Json\n(91 entities)"]
    Matrix["Matrix\n(20 entities)"]
    Antipattern --> Clustering
    Antipattern --> Json
    Antipattern --> Topics
    Antipattern --> Util
    Clustering --> Facts
    Clustering --> Json
    Clustering --> Metrics
    Clustering --> Topics
    Clustering --> Util
    Clustering --> Util2
    Clustering --> Visualization
    Default --> Clustering
    Facts --> Antipattern
    Facts --> Clustering
    Facts --> Functiongraph
    Facts --> Json
    Facts --> Util
    Facts --> Util2
    Json --> Facts
    Metrics --> Clustering
    Metrics --> Default
    Metrics --> Json
    Metrics --> Matrix
    Metrics --> Util
    Metrics --> Util2
    Topics --> Clustering
    Topics --> Json
    Topics --> Util
    Topics --> Util2
    Topics --> Visualization
    Util --> Clustering
    Util --> Facts
    Util --> Util2
    Visualization --> Clustering
    Visualization --> Topics
    Visualization --> Util
        
Package-based grouping (depth=2 after common prefix 'edu.usc.softarch') with dependency-affinity facade refinement (181 entities reassigned).

Components

Component Responsibility # Entities
Default Entities in (default) 71 BipartiteGraph, BipartiteGraph.BipartiteGraph, BipartiteGraph.XOR, BipartiteGraph.addedge, BipartiteGraph.findAugmentPath, BipartiteGraph.findPath, BipartiteGraph.isLeft, BipartiteGraph.isRight, ... (+63 more)
Antipattern Entities in arcade.antipattern 42 edu.usc.softarch.arcade.antipattern.Smell, edu.usc.softarch.arcade.antipattern.SmellCollection, edu.usc.softarch.arcade.antipattern.detection.ArchSmellDetector, edu.usc.softarch.arcade.antipattern.detection.ArchSmellDetector.ArchSmellDetector, edu.usc.softarch.arcade.antipattern.detection.ArchSmellDetector.main, edu.usc.softarch.arcade.antipattern.detection.ArchSmellDetector.run, edu.usc.softarch.arcade.antipattern.detection.SmellToIssuesCorrelation, edu.usc.softarch.arcade.antipattern.detection.SmellToIssuesCorrelation.main, ... (+34 more)
Clustering Entities in arcade.clustering 343 StringUtil.containStr, StringUtil.dir2pkg, StringUtil.extractOrgSuffix, StringUtil.extractPkgPrefix, StringUtil.extractVersionPretty, StringUtil.formatIssueVersion, StringUtil.isValidFilename, StringUtil.printStringSet, ... (+335 more)
Facts Entities in arcade.facts 145 edu.usc.softarch.arcade.clustering.data.FeatureVectors.FeatureVectors, edu.usc.softarch.arcade.clustering.data.FeatureVectors.deserializeFFVectors, edu.usc.softarch.arcade.clustering.data.FeatureVectors.equals, edu.usc.softarch.arcade.clustering.data.FeatureVectors.getFeatureVectorNames, edu.usc.softarch.arcade.clustering.data.FeatureVectors.getNameToFeatureSetMap, edu.usc.softarch.arcade.clustering.data.FeatureVectors.getNamesInFeatureSet, edu.usc.softarch.arcade.clustering.data.FeatureVectors.getNumSourceEntities, edu.usc.softarch.arcade.clustering.data.FeatureVectors.getSerializationMapper, ... (+137 more)
Functiongraph Entities in arcade.functiongraph 27 edu.usc.softarch.arcade.functiongraph.StringEdge, edu.usc.softarch.arcade.functiongraph.StringEdge.StringEdge, edu.usc.softarch.arcade.functiongraph.StringEdge.equals, edu.usc.softarch.arcade.functiongraph.StringEdge.getSrcStr, edu.usc.softarch.arcade.functiongraph.StringEdge.getTgtStr, edu.usc.softarch.arcade.functiongraph.StringEdge.getType, edu.usc.softarch.arcade.functiongraph.StringEdge.hashCode, edu.usc.softarch.arcade.functiongraph.StringEdge.initialize, ... (+19 more)
Jira Entities in arcade.jira 4 edu.usc.softarch.arcade.jira.JiraClientExample, edu.usc.softarch.arcade.jira.JiraClientExample.main, edu.usc.softarch.arcade.jira.JiraClientPrototype, edu.usc.softarch.arcade.jira.JiraClientPrototype.main
Metrics Entities in arcade.metrics 110 edu.usc.softarch.arcade.metrics.DecayMetricAnalyzer, edu.usc.softarch.arcade.metrics.DecayMetricAnalyzer.getDescriptiveStatistics, edu.usc.softarch.arcade.metrics.DecayMetricAnalyzer.main, edu.usc.softarch.arcade.metrics.DecayMetricAnalyzer.run, edu.usc.softarch.arcade.metrics.DecayMetricAnalyzer.runBatch, edu.usc.softarch.arcade.metrics.DecayMetricAnalyzer.runSingle, edu.usc.softarch.arcade.metrics.MoJoEvolutionAnalyzer, edu.usc.softarch.arcade.metrics.MoJoEvolutionAnalyzer.doMoJoFMComparison, ... (+102 more)
Topics Entities in arcade.topics 94 edu.usc.softarch.arcade.topics.Concern, edu.usc.softarch.arcade.topics.Concern.Concern, edu.usc.softarch.arcade.topics.Concern.serialize, edu.usc.softarch.arcade.topics.DocTopicItem, edu.usc.softarch.arcade.topics.DocTopicItem.DocTopicItem, edu.usc.softarch.arcade.topics.DocTopicItem.addTopic, edu.usc.softarch.arcade.topics.DocTopicItem.computeConcern, edu.usc.softarch.arcade.topics.DocTopicItem.deserialize, ... (+86 more)
Util Entities in arcade.util 52 edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.CodeMaatHelper, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.batchRun, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.isBatch, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.main, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.parseEntity, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.processCEntry, edu.usc.softarch.arcade.antipattern.detection.coupling.CodeMaatHelper.processEntry, ... (+44 more)
Visualization Entities in arcade.visualization 41 edu.usc.softarch.arcade.visualization.ArchitectureTableModel, edu.usc.softarch.arcade.visualization.ArchitectureTableModel.getHighestValue, edu.usc.softarch.arcade.visualization.ArchitectureTableModel.refresh, edu.usc.softarch.arcade.visualization.MainFrame, edu.usc.softarch.arcade.visualization.MainFrame.MainFrame, edu.usc.softarch.arcade.visualization.MainFrame.actionPerformed, edu.usc.softarch.arcade.visualization.MainFrame.loadArguments, edu.usc.softarch.arcade.visualization.MainFrame.loadClusterer, ... (+33 more)
Util2 Entities in util 38 edu.usc.softarch.arcade.util.CLI.parseArguments, edu.usc.softarch.arcade.util.CLI.setMessageLevel, edu.usc.softarch.util.EnhancedHashSet, edu.usc.softarch.util.EnhancedHashSet.EnhancedHashSet, edu.usc.softarch.util.EnhancedHashSet.difference, edu.usc.softarch.util.EnhancedHashSet.intersection, edu.usc.softarch.util.EnhancedHashSet.intersectionArray, edu.usc.softarch.util.EnhancedHashSet.intersectionSize, ... (+30 more)
Json Entities in util.json 91 edu.usc.softarch.arcade.antipattern.Smell.Smell, edu.usc.softarch.arcade.antipattern.Smell.addCluster, edu.usc.softarch.arcade.antipattern.Smell.addClusterCollection, edu.usc.softarch.arcade.antipattern.Smell.containsCluster, edu.usc.softarch.arcade.antipattern.Smell.deserialize, edu.usc.softarch.arcade.antipattern.Smell.equals, edu.usc.softarch.arcade.antipattern.Smell.getSmellType, edu.usc.softarch.arcade.antipattern.Smell.getTopicNum, ... (+83 more)
Matrix Entities in util.matrix 20 edu.usc.softarch.util.matrix.Cell, edu.usc.softarch.util.matrix.Cell.Cell, edu.usc.softarch.util.matrix.Cell.compareTo, edu.usc.softarch.util.matrix.Cell.equals, edu.usc.softarch.util.matrix.Cell.hashCode, edu.usc.softarch.util.matrix.CellValueCalculator, edu.usc.softarch.util.matrix.CellValueCalculator.computeCellValue, edu.usc.softarch.util.matrix.CellValueValidator, ... (+12 more)

Architectural Smells (6)

high SmellType.DEPENDENCY_CYCLE

Circular dependency among 9 components: Antipattern <-> Clustering <-> Default <-> Facts <-> Json <-> Metrics <-> Topics <-> Util <-> Visualization

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: Antipattern, Clustering, Default, Facts, Json, Metrics, Topics, Util, Visualization

high SmellType.CONCERN_OVERLOAD

Default contains 71 entities but only 2 internal dependencies (0.03 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Default into smaller, focused components with single responsibilities.

Affects: Default

medium SmellType.CONCERN_OVERLOAD

Functiongraph contains 27 entities but only 1 internal dependencies (0.04 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Functiongraph into smaller, focused components with single responsibilities.

Affects: Functiongraph

medium SmellType.CONCERN_OVERLOAD

Util2 contains 38 entities but only 2 internal dependencies (0.05 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Util2 into smaller, focused components with single responsibilities.

Affects: Util2

medium SmellType.LINK_OVERLOAD

Clustering is depended on by 7 other components (58% of all components).

Why: A component with too many dependents becomes a bottleneck. Any change to it can cascade across the entire system, making evolution risky and expensive.

Fix: Consider splitting Clustering into smaller interfaces so dependents only couple to what they actually use (ISP).

Affects: Clustering

medium SmellType.LINK_OVERLOAD

Util is depended on by 6 other components (50% of all components).

Why: A component with too many dependents becomes a bottleneck. Any change to it can cascade across the entire system, making evolution risky and expensive.

Fix: Consider splitting Util into smaller interfaces so dependents only couple to what they actually use (ISP).

Affects: Util

Dependency Summary

PackageEntities
edu.usc.softarch.arcade.clustering.data 123
edu.usc.softarch.arcade.topics 102
edu.usc.softarch.arcade.metrics.data 93
(default) 80
edu.usc.softarch.arcade.util 69
edu.usc.softarch.arcade.clustering.simmeasures 64
edu.usc.softarch.util.json 60
edu.usc.softarch.arcade.metrics.evolution 55
edu.usc.softarch.util 42
edu.usc.softarch.arcade.facts.issues.handlers 41
edu.usc.softarch.arcade.metrics.decay 39
edu.usc.softarch.arcade.facts.design 37
edu.usc.softarch.arcade.facts 36
edu.usc.softarch.arcade.clustering 35
edu.usc.softarch.arcade.clustering.acdc.data 35
edu.usc.softarch.arcade.clustering.acdc.patterns 34
edu.usc.softarch.arcade.functiongraph 34
edu.usc.softarch.arcade.visualization.clustering 34
edu.usc.softarch.arcade.facts.dependencies 33
edu.usc.softarch.arcade.antipattern.detection.interfacebased 24
edu.usc.softarch.arcade.facts.issues 23
edu.usc.softarch.arcade.facts.smells 23
edu.usc.softarch.arcade.antipattern 22
edu.usc.softarch.util.matrix 20
edu.usc.softarch.arcade.antipattern.detection.coupling 19
edu.usc.softarch.arcade.visualization.topics 16
edu.usc.softarch.arcade.visualization.components 15
edu.usc.softarch.arcade.clustering.criteria.serialization 11
edu.usc.softarch.arcade.metrics 11
edu.usc.softarch.arcade.visualization 11
edu.usc.softarch.arcade.antipattern.detection.dependency 10
edu.usc.softarch.arcade.clustering.criteria 9
edu.usc.softarch.arcade.antipattern.detection 8
edu.usc.softarch.arcade.antipattern.detection.concern 8
edu.usc.softarch.arcade.jira 8
edu.usc.softarch.arcade.clustering.acdc 7
edu.usc.softarch.arcade.clustering.criteria.stopping 7
edu.usc.softarch.arcade.topics.exceptions 6
edu.usc.softarch.arcade.util.statistic 4