Bob Martin speaks of four main symptoms that indicate a software design is rotting.
Reference:
http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
4 Symptoms of Design Rot
- Rigidity
- Fragility
- Immobility
- Viscoscity
Rigidity
- Symptom
- Even a simple change causes cascading changes in dependent modules
- Changes take long periods of time
- Effect
- Managers fear allowing changes, official rigidity sets in, adverse management policy
Fragility
- Symptom
- Even simple changes cause the software to break in many, sometimes unrelated places
- Effect
- Every fix exacerbates the problem, the software becomes impossible to maintain
- Engineering loses credibility and trust by management and users
Immobility
- Symptom
- Software reuse brings too much non-related baggage
- Effect
- Software is rewritten instead of reused
Viscosity
Design Viscosity
- Symptom
- Design preserving changes are harder to employ than hacks (High Viscosity)
- Effect
- It is easy to do the wrong thing but hard to do the right thing
Environment Viscosity
- Symptom
- Compile times take too long, version control check in takes too long, unit testing takes too long
- Effect
- A slow development environment causes sub-optimal development decisions, (E.g. skip compile, check in rarely, test rarely)