| Initial | Stands for (acronym) | Concept | 
| S | Single responsibility principle a class should have only a single responsibility (i.e. only one potential change in the software's specification should be able to affect the specification of the class) | |
| O | "software entities … should be open for extension, but closed for modification." | |
| L | "objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program." See also design by contract. | |
| I | Interface segregation principle "many client-specific interfaces are better than one general-purpose interface." [8] | |
| D | Dependency inversion principle one should "Depend upon Abstractions. Do not depend upon concretions." [8] |