What are architectural smells?
Architectural smells are undesired structures and anomalies in the architecture of your software. Their presence leads to an increase in technical debt, degrading the quality of your software and affecting when, where, and how much you change your code.
Smells result from (usually unintentional) design decisions that negatively impact the system’s internal quality. Smells create a technical context that increases the effort required to make changes in the future at the cost of short-term advantage.
One example of architectural smell is “Cyclic Dependency”, which appears when two or more artifacts (architectural components) of your system take part in a circular dependency.
When such an anomaly occurs, the
- Reusability
- Maintainability
- Changeability
of those parts are negatively affected.
Moreover, reusing single parts of code becomes difficult: if one part changes, the others must change along. Indeed, this smell increases the coupling inside the system.
Smells create a technical context that increases the effort required to make changes in the future
How can you protect your code from architectural smells?
Architectural smells violate basic design principles, such as Modularity and Acyclicity.
Arcan currently detects the following smells:
- Cyclic Dependency
- Hub-Like Dependency
- Unstable Dependency
- God Component
See our dedicated Wiki to learn more about the different smells and how to remove them.
Download Arcan to find out where your architecture smells!