The article presents SOLID as a system of constructive constraints that disciplines the degrees of freedom in design and transforms the evolution of software systems into a controlled process. It explains the relationship of the principles with the foundations of object-oriented programming, design patterns, and architectural styles. Non-obvious effects are examined, including premature abstractions under OCP, hidden configuration coupling under DIP/DI, class explosion and responsibility fragmentation under SRP/ISP, and semantic violations of LSP that are not captured by type signatures. An operational approach to decision validation is proposed through metrics, contract-based tests, and threshold controls for introducing abstractions, along with practical decision-making protocols.
Ivan et al. (Sun,) studied this question.