
Or by path:

SOLID represents 5 principles of object-oriented programming: Single responsibility, Open-closed, Liskov Substitution, Interface Segregation and Dependency Inversion.
These principles is to solve the main problems of a bad architecture: