Skip to main content

Symptoms of Poor Design (Software Design)

The Symptoms of Poor Design are a collection of symptoms that appear in software systems where poor design choices - or none at all - lead to hard to maintain and less sustainable software.

They are described in Robert C. Martin's book Agile Software Development - Principles, Patterns and Practices [📖ASD, p. 85].

The symptoms are:

  1. Rigidity - The design is hard to change.
  2. Fragility - The design is easy to break.
  3. Immobility - The design is hard to reuse.
  4. Viscosity - It is hard to do the right thing.
  5. Needless complexity - Overdesign.
  6. Needless Repetition - Mouse abuse.
  7. Opacity - Disorganized expression.

"These symptoms are similiar in nature to code smells [📖REF, pp. 75-88], but they are at a higher level. They are smells that pervade the overall structure of the software rather than a small section of code." [📖ASD, p. 85]