Description
This smell arises when an EA repository has excessive and dense dependencies without any particular structure.
Context
Derived from: “Dense Structure”
Cause
Inefficient abstraction that needs high coupling of components to work.
Consequences
Modifications to the system may be cumbersome and many dependencies have to be added, due to the high coupling.
Detection
We prepare a graph for each repository to detect the smell. Each component is treated as a node and any reference from the component to another component is treated as an edge. We then compute the average degree of the graph (|E|/|V|). By default a graph with more than 1.75 average degree suffers from this smell but the user can also set a higher/lower average degree. (One could also test the clustering coefficient)
Solution
Extensive restructuring and rethinking of the architecture is needed, if the problems get noticeable.
Cypher query
MATCH (p) <br /> WITH avg(apoc.node.degree(p)) as degree <br /> WHERE degree > $degree <br /> MATCH p = (a)--(b) <br /> RETURN pTags
soa, microservices, business, application, technology, between elements, The Couplers, automatic detection
Query parameters
[
{
"name": "degree",
"type": "number",
"default": 1.8,
"description": "Degree of density."
}
]Related smells
- Hub-like Modularization (relates)
- Weakened Modularity (relates)