Skip to content

Architectural Smells

Arcan bases the estimate of Technical Debt on the detection of Architectural Smells, software design decisions that negatively impact the software quality. Smells violates design principles.

At the moment, Arcan detects four types of Architectural Smells:

  • Cyclic Dependency
  • God Component
  • Hub-Like Dependency
  • Unstable Dependency

Cyclic Dependency

When two or more architectural components are involved in a chain of relationships.

Drawbacks

The architectural components involved in a Cyclic Dependency are:

  • hard to release
  • hard to maintain
  • hard to reuse in isolation

The smell violates the Acyclic Dependencies Principle defined by R. C. Martin.

CD

God Component

this smell occurs when an architectural component is excessively large in terms of LOC (Lines Of Code).

Drawbacks

The architectural component affected by God Component:

  • centralizes logic
  • has low cohesion within
  • has increasing complexity

The smell violates the Modularity Principle defined by R. C. Martin.

GC

Hub-Like Dependency

When an architectural component has (outgoing and ingoing) dependencies with a large number of other components. The component affected by HL , and .

Drawbacks

The component affected by the smell:

  • centralizes logic
  • is a unique point of failure
  • favors change ripple effects

The smell violates the Modularity Principle defined by R. C. Martin.

HL

Unstable Dependency

describes an architectural component that depends on other components that are less stable than itself. Instability (proneness to change) is measured using R. C. Martin’s formula.

Drawbacks

The component affected by the smell can:

  • favors change ripple effects
  • be subjected to frequent changes

The smell violates the Stable Dependency Principle defined by R. C. Martin.

UD