Index des principes

Gestion des évolutions et des dépendances entre classes

Principe d'ouverture/fermeture
Open-Closed Principle (OCP)
"Un module doit être ouvert aux extensions mais fermé aux modifications."
Principe de substitution de Liskov
Liskov Substitution Principle (LSP)
"Les méthodes qui utilisent des objets d'une classe doivent pouvoir utiliser des objets dérivés de cette classe sans même le savoir."
Principe d'inversion des dépendances
Dependency Inversion Principle (DIP)
"A. Les modules de haut niveau ne doivent pas dépendre de modules de bas niveau. Tous deux doivent dépendre d'abstractions."
"B. Les abstractions ne doivent pas dépendre de détails. Les détails doivent dépendre d'abstractions."
Principe de séparation des interfaces
Interface Segregation Principle (ISP)
"Les clients ne doivent pas être forcés de dépendre d'interfaces qu'ils n'utilisent pas."

Organisation de l'application en modules

Principe d'équivalence livraison/réutilisation
Reuse/Release Equivalence Principle (REP)

"La granularité en termes de réutilisation est le package. Seuls des packages livrés sont susceptibles d'être réutilisés."
Principe de réutilisation commune
Common Reuse Principle (CRP)
"Réutiliser une classe d'un package, c'est réutiliser le package entier."
Principe de fermeture commune
Common Closure Principle (CCP)
"Les classes impactées par les mêmes changements doivent être placées dans un même package."

Gestion de la stabilité de l'application

Principe des dépendances acycliques
Acyclic Dependencies Principle (ADP)
"Les dépendances entre packages doivent former un graphe acyclique. "

Principe de relation dépendance/stabilité
Stable Dependencies Principle (SDP)

"Un package doit dépendre uniquement de packages plus stables que lui."

Principe de stabilité des abstractions
Stable Abstractions Principle (SAP)

"Les packages les plus stables doivent être les plus abstraits. Les packages instables doivent être concrets. Le degré d'abstraction d'un package doit correspondre à son degré de stabilité."