Criado por Robert Martin no início dos anos 2000. Cinco princípios que auxiliam na arquitetura de software com o propósito de criar software que atende a três critérios:
- Tolerância a alterações
- Facilidade de entendimento
- Criação de componentes que servem de base para múltiplos softwares