Patterns & Anti Patterns Systèmes en temps réel Patterns & Anti Patterns
Synopsis Patterns (motifs de conception) Anti Patterns Définitions Patterns de design “Classiques” Exemples Anti Patterns Patterns & Anti-Patterns - 2
Qu’est-ce qu’un Pattern? “Chaque pattern décrit un problème qui se produit plusieurs fois dans notre environnement, et ensuite décrit le corps de la solution à ce problème, de tel façon que vous pouvez utiliser cette solution une million de fois, le faire de la même façon deux fois” [Christopher Alexander] De façon simple, c’est seulement la réutilisation du design Patterns & Anti-Patterns - 3
Qu’est-ce qu’un pattern de design “Classique”? “Un pattern de design décrit une structure de composantes communicantes qui se reproduit couramment et qui résout un problème de design général dans un contexte particulier.” [Gamma et al] Cela semble très “OO”, en fait cela ressemble beaucoup comme ROOM [Selic et al] ! Patterns & Anti-Patterns - 4
Pourquoi utiliser les patterns? Les avantages des patterns de design sont la réutilisation et la modularité, qui sont évidement les buts de design orienté objet pour le logiciel. Parce que les patterns de design capturent les connaissances expertes, les solutions qu’ils fournissent sont valides. Donc, ils ne rendent pas seulement les designs de systèmes larges plus rapides, mais ils améliorent aussi la qualité de ces designs. Patterns & Anti-Patterns - 5
Pourquoi utiliser les patterns? Les patterns de design fournissent un vocabulaire commun pour les designers pour qu’ils puissent communiquer en exprimant les designs logiciels à un plus haut niveau d’abstraction que celui d’une notation ou d’un langage de programmation. Être capable de reconnaître les patterns de design aide à comprendre les systèmes qui existent. Patterns & Anti-Patterns - 6
Exemples de patterns de design Composite Pattern [Gamma et al] Quel “vrais” systèmes peuvent contenir ce pattern? Patterns & Anti-Patterns - 7
Exemples de patterns de design– Reconnaissez-vous celui là? Patterns & Anti-Patterns - 8
Exemples de patterns de design– Reconnaissez-vous celui là? Patterns & Anti-Patterns - 9
Anti Patterns “Un anti pattern décrit une approche pour résoudre un problème commun, une approche qui en temps est prouvé comme étant mauvaise et hautement ineffective.” [Ambler] “Un anti Pattern est une forme littéraire qui décrit une solution qui se produit communément pour résoudre un problème et qui génère des conséquences négatives. L’anti pattern peut être le résultat de … ne pas savoir mieux, ne pas avoir les connaissances ou l’expérience nécessaires …” [Brown et al] Patterns & Anti-Patterns - 10
Exemples d’Anti Patterns Le Blob (Winnebago, the God Class) Décomposition Fonctionnelle (Pas d’OO) Code Spaghetti Ancre de Bateau Marteau en or Patterns & Anti-Patterns - 11
Exercice Quels patterns et anti patterns pourrait-on trouver dans “nos” labos de RoseRT? Patterns & Anti-Patterns - 12
Références Selic, B., Gullekson, Ward, Real-Time Object-Oriented Modeling, Wiley, 1994. Ambler, S., The Object Primer, Cambridge Univ. Press, 2001, Chapter 7. Gamma, E., et al, Design Patterns, Addison Wesley, 1994. Brown, Malveau, McCormick, Mowbray, AntiPatterns: Refactoring Software, Archictectures, and Projects in Crisis, Wiley & Sons, 1998. Douglass, B.P., Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems, Addison-Wesley, 2003. Patterns & Anti-Patterns - 13