Dense Structure

Written by

in

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 p

Tags

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

All smells