java — version local — recovered with pkg
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
| 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) |
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
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
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
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
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
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
| Package | Entities |
|---|---|
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 |