Structural Erosion of Software Harms Your Budget
When a new software project is started, developers usually have a vital image of the intended design in their mind. As the code base gets larger, however, things start to change. Suddenly the software is much harder to test, comprehend, maintain and extend. Robert C. Martin describes this as "The software starts to rot like a piece of bad meat".
This phenomenon is called "Structural Erosion" and it happens in almost every non-trivial software project where more than two people are working on the code. Usually the erosion begins with minor deviations from the intended design due to changes in requirements, time pressure or just simple negligence. In the early stages of a project this is not a problem , but during the later stages the erosion starts to grow exponentially. As a result of this rotting process, the "Cost of Change" also grows exponentially over time so that there is a point where the software system must be given up because it is cheaper to start it from scratch than to try to modify or extend it. This effect is shown in the chart below.
Symptoms of structural erosion are well known all over the software industry. Robert C. Martin describes a couple of them:
- Rigidity – The system is hard to change because every change forces many other changes.
- Fragility – Changes cause the system to break in conceptually unrelated places.
- Immobility – It's hard to disentangle the system into reusable components.
- Viscosity – Doing things right is harder than doing things wrong.
- Opacity – It is hard to read and understand. It does not express its intent well.
Architecture Management Can Turn the Tide in Your Favor
Fighting structural erosion must be an ongoing process in daily development work, otherwise it is doomed to fail. By using tool-based architecture management you can completely automate this important task. All you need to do is define and maintain a blueprint of the architecture of your system. Having done that, it is possible to automatically verify every code change for its conformance to the blueprint. All rule violations are immediately signaled to the developers so that they are able to fix the problem even before they commit modified code.
Maintaining the blueprint and fixing problems as they occur will require some extra effort every day. However, this additional effort pays off nicely because the "Cost of Change" factor for your system will grow much more slowly. As a result you will be able to maintain or extend your system at reasonable costs and be rewarded with a much better overall quality. The lifetime of your system expands significantly so that it has more time to recover the money you have invested in it. Due to the properly maintained structural integrity, productivity will remain at a good level and new people joining the team will need much less time and effort to get up to speed.
You can also apply architecture management to existing systems already suffering from structural erosion. In fact, this is what 90% of our customers do. By using the right tools and guidelines you can stop the erosion process. Our tools even assist you in reversing the structural damage by allowing you to simulate and execute the refactorings neccessary to realign the existing structure with the intented archicture.