SOLID — Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion — has been taught for three decades as five independent design principles [Martin 1996a, 1996b, 2000, 2003]. Every software engineer learns them. Every code review invokes them.
This article argues that each SOLID heuristic is not a design principle in the formal sense. It is a diagnostic pattern for a specific way domain knowledge is incomplete or incorrectly expressed. The heuristics exist only because we do not, in practice, document causal domain knowledge completely. Were we to do so, the correct design follows automatically — no heuristic check required.
How each case is presented
For each heuristic that addresses change management (SRP, OCP, ISP, DIP), the analysis follows a three-step method:
Knowledge with the gap. A domain statement as it is typically written — incomplete or compound — producing flawed code. The SOLID heuristic correctly flags this code. But the heuristic identifies the symptom, not the cause.






