Software architecture defines systems to be developed in the form of rigorous diagrams which depict how the source code is going to be structured.
Due to the inevitable demand for additional functionalities by clients, architectural models must account for modular code which is easy to reuse, modify, and extend.
Regardless of the fact that software architecture is crucial to this end, oftentimes the source code becomes increasingly misaligned with the corresponding architecture.
Structural quality defined by architectural models fades away behind tons of unstructured lines of code which are difficult to maintain and improve. See big ball of mud and software erosion.
Such undesirable phenomenon is due to time-to-market pressures which disregard software quality in favour of merely what’s visible to the end user.
Be Careful of the Gap
The gap between architecture and code is related to the notion of technical debt, which refers to the implied cost of future rework needed to make up for quick-and-dirty code changes.
Summing up, software erosion is mainly due to the accumulation of architectural violations by developers, which are frequently encouraged by business pressures.
This fact is not going to let go of the need to quickly place products into the market. So let’s work towards keeping the gap in check!