Académique Documents
Professionnel Documents
Culture Documents
Objet
9Conception
¾Réutilisabilité
Design Patterns ¾Bibliothèque de classe vs. Framework
Introduction ¾Design Pattern
¾Historique
¾Catégories de Patterns
¾Bibliographie
O. Boissier, SMA/G2I/ENS Mines Saint-Etienne, Olivier.Boissier@emse.fr, Avril 2004
1 2
Cohésion Couplage
‘‘bon’’ exemple Exemple
Class GameBoard {
void initArray(int[ ] iGradeArray, int nStudents) {
public GamePiece[ ][ ] getState() int i;
-- for (i=0; i < nStudents; i++) {
Couplage entre client
public Player isWinner() iGradeArray[i] = 0;
} et initArray par le
--
public boolean isTie() 2nd paramètre
--
} void initArray(int[ ] iGradeArray) {
int i;
class BoardDisplay { for (i=0; i < iGradeArray.length; i++) {
iGradeArray[i] = 0;
} Couplage faible
public void displayBoard (GameBoard gb)
(et meilleure fiabilité)
- affichage du contenu du jeu. Espaces blanc affichés pour
chacune des références nulles. au travers de l ’utilisation
} de l ’attribut length
7 8
Couplage Couplage
Nœuds d’une classe Booklist Nœuds d’une classe Booklist
class BookNode { next class BookNode {
public BookNode (String public void setNext (BookNode public BookNode (String title, class Book
newTitle) { nextBook) { String author) {
title = newTitle; next = nextBook; book = new Book(title, author); private String title;
next = null; } next = null; private String author;
} }
public void print () { public Book(String title,
public BookNode getNext () { ...
System.out.println (title); String auth) {
return (next);
} ...
} }
}
Que se passe-t-il }//class BookNode
}//class Book
si nous ajoutons Author ? 9 10
13 14
15 16
Sommaire Réutilisation en Génie Logiciel
Expression
des besoins
Spécifications
• Conception Analyse
Informelles Patrons d’analyse
(abstraction du
Modèles de domaine
9Réutilisabilité monde réel) Modèle Composants métiers conceptuels
Descriptif &
¾Bibliothèque de classe vs. Framework Normatif
Conception Informatisable Patrons d’architecture
¾Design Pattern (solution
Patrons de conception
technique)
Modèle ERP, Frameworks
¾Historique Effectif
Informatisé
¾Catégories de Patterns Implantation
(solution
Patrons d’implantation
Composants métiers logiciels
opérationnelle) Bibliothèques de classes
¾Bibliographie Logiciel
17 18
Framework = squelette
Sommaire
d’application (suite)
¾ Boîte blanche ou en verre : • Conception
¾ fondé sur l ’héritage, • Réutilisabilité
¾ conçu par la généralisation de classes de différentes
• Bibliothèque de classe vs. Framework
applications,
¾ utilisé par dérivation de classes 9Design Pattern
¾ Boîte noire : ¾Historique
¾ fondé sur la composition,
¾Catégories de Patterns
¾ utilisé par composition des composants entre eux.
¾Bibliographie
23 24
Autres domaines : Architecture Autres domaines : l’hydraulique
Ken Asplund en 1973
C. Alexander : 253 patrons de conception architecturaux (64,77,79)
« Le volume d’eau en aval » (Downstream Water Volume )
« Pattern #112 d’Alexander» Problème : Quand on détourne une partie des eaux d’une rivière, le volume d’eau dans
x Nom : Transition d’entrée le drainage décroît, ce qui conduit à un affaiblissement des contributions de la rivière.
x Quoi : créer une transition du monde extérieur vers un univers intérieur, plus privé Contraintes : Il ne faut pas que le détournement d’une partie de la rivière pénalise
x Pourquoi : L’entrée dans un bâtiment influence la façon dont on va se sentir à l’irrigation des cultures en aval ; la population ne doit pas souffrir de cette baisse du débit
l’intérieur des eaux ; l’impact écologique doit être limité au minimum.
x Quand : systèmes d’accès et d’entrée pour les maisons, les cliniques, les magasins, etc.
x Comment : Créer un espace de transition entre la rue et la porte d’entrée. Marquer le Solution : Il faut maintenir le niveau des eaux en aval en ramenant un maximum d’eau
cheminement dans l’espace de transition par un changement de lumière, un changement détournée vers son lit d’origine ; en traitant les eaux usées afin de les réintroduire en
de direction, etc. aval ; en économisant les eaux d’irrigation en évitant les systèmes de pulvérisation ou de
x Patterns en relation : vue Zen (#134), etc. brumisation.
25 26
27 28
Design Patterns /
Design Pattern (suite)
Frameworks
¾ Documentation d ’une expérience éprouvée de
conception ¾ Synergie entre ces deux concepts
¾ Identification et spécification d ’abstractions qui ¾ les design patterns décrivent à un niveau plus
sont au dessus du niveau des simples classes, abstrait des composants de frameworks,
instances
implémentés dans un langage particulier,
¾ Vocabulaire commun et aide à la compréhension
de principes de conception, ¾ les design patterns aident à la conception des
frameworks,
¾ Moyen de documentation de logiciels
¾ Aide à la construction de logiciels répondant à des ¾ la conception de frameworks aident à la
propriétés précises, de logiciels complexes et découverte de nouveaux design patterns.
hétérogènes
29 30
33 34
Catégories de Design
Catégories de Patterns
Patterns
¾ Architectural Patterns : ¾ Création
¾ schémas d ’organisation structurelle de logiciels (pipes, filters, ¾ description de la manière dont un objet ou un ensemble d ’objets
brokers, blackboard, MVC, …) peuvent être créés, initialisés, et configurés : isoler le code relatif à
¾ Design Patterns : la création, l ’initialisation afin de rendre l ’application indépendante
de ces aspects.
¾ caractéristiques clés d ’une structure de conception commune à
plusieurs applications, ¾ Structure
¾ de portée plus limitée que les architectural patterns ¾ description de la manière dont doivent être connectés des objets de
¾ Idioms ou coding patterns l ’application afin de rendre ces connections indépendantes des
évolutions futures de l ’application : découplage de l ’interface et de
¾ solution liée à un langage particulier l ’implémentation de classes et d ’objets
¾ Anti-patterns : ¾ Comportement
¾ mauvaise solution ou comment sortir d ’une mauvaise solution ¾ description de comportements d ’interaction entre objets : gestion
¾ Organizational patterns : des interactions dynamiques entre des classes et des objets.
¾ organisation de tout ce qui entoure le développement d ’un logiciel
(humains)
35 36
Vue d’ensemble des Design
Portée des Design Patterns
Patterns
but
Création Structure Comportement
¾Portée Classes Portée Classe Factory method Adapter Interpreter
39 40
Design Patterns de Design Patterns de
comportement (1) comportement (2)
¾ Observer :mise à jour automatique des dépendants d’un
¾ Chain of Responsibility :délégation des requêtes à des
objet.
responsables de services.
¾ Command: encapsulation de requêtes par des objets afin ¾ State : permettre à un objet de modifier son comportement
de permettre à un objet de traiter plusieurs types de lorsque son état interne change.
requêtes. ¾ Strategy : abstraction pour sélectionner un algorithme
¾ Interpreter : étant donné un langage, représentation de la parmi plusieurs.
grammaire le définissant pour l’interpréter. ¾ Template method :définition d’un squelette d’algorithme
¾ Iterator : parcours séquentiel de collections. dont certaines étapes sont fournies par une classe dérivée.
¾ Mediator : coordination d’interactions entre des objets ¾ Visitor :représentation d’opérations devant être appliquées
associés. à des éléments d’une structure hétérogène d’objets.
¾ Memento : capture et restauration d ’états d’objets.
41 42
43 44
Memento Anti Patterns
¾ Lorsque l ’on utilise les Design Patterns, se ¾ Représentent une « leçon apprise »
souvenir que :
¾ Erreurs logicielles que les gens font fréquemment.
¾ ce ne sont que des suggestions,
¾ Deux catégories :
¾ qu’ils pointent vers des solutions,
¾ mauvaise solution à un problème qui a produit une
¾ qu’ils sont implémentés différemment selon les langages mauvaise situation.
de programmation,
¾ comment sortir d’une mauvaise situation et
¾ qu’ils sont rarement utilisés seuls mais plutôt combinés comment poursuivre à partir de là vers une bonne
avec d ’autres patterns, solution.
¾ que les solutions ainsi conçues sont généralement plus
génériques et plus facilement réutilisables. ¾ Référence : W.J. Brown & al (1998) Anti Patterns - Refactoring
Software, Architectures, and Projects in Crisis, Wiley.
45 46
47 48
Patterns d’analyse Exemples de patterns d’analyse
¾ Question de modélisation générale en regardant un ¾ « Accountability »
problème particulier dans un domaine.
¾ Le concept de comptabilité s’applique quand une
¾ Martin Fowler a proposé deux catégories de patterns personne ou une organisation est responsable
: d’une autre.
¾ « Analysis patterns » ¾ notion abstraite qui peut représenter plusieurs
¾ « Supporting patterns » problèmes spécifiques, comportant des structures,
des contrats, et du personnel.
¾ Référence : ¾ Party, organization hierarchies, organization
Martin Fowler, Analysis Patterns - Reusable Object Models, structure etc.
Addison-Wesley, 1997.
49 50
51 52
Exemples de patterns support
¾ « Patterns for Type Model Design Templates »
¾ comment transformer un modèle de spécification
¾ « Layered Architecture for Information System » implicite en un modèle explicite et une
¾ Two-tier architecture, Three-tier architecture, implémentation.
Presentation and Application Logic, Database ¾ Implementing Associations, Object Creation,
interaction Implementing Constraints ….
53 54
Sommaire Bibliographie
¾ Erich Gamma & al (1995) Design Patterns - Elements of Reusable
Object-Oriented Software, Addison-Wesley.
¾ ” Pattern Languages of Program Design ”, Coplien J.O., Schmidt D.C.,
• Conception Addison-Wesley, 1995.
¾ ” Pattern languages of program design 2 ”, Vlissides, et al, ISBN 0-
• Réutilisabilité 201-89527-7, Addison-Wesley
¾ ” Pattern-oriented software architecture, a system of patterns ”,
• Bibliothèque de classe vs. Framework Buschmann, et al, Wiley
• Design Pattern ¾ ” Advanced C++ Programming Styles and Idioms ”, Coplien J.O.,
Addison-Wesley, 1992.
• Historique ¾ S.R. Alpert, K.Brown, B.Woolf (1998) The Design Patterns Smalltalk
Companion, Addison-Wesley (Software patterns series).
• Catégories de Patterns ¾ J.W.Cooper (1998), The Design Patterns Java Companion,
http://www.patterndepot.com/put/8/JavaPatterns.htm.
9Bibliographie ¾ S.A. Stelting, O.Maasen (2002) Applied Java Patterns, Sun
Microsystems Press.
¾ Communications of ACM, October 1997, vol. 40 (10).
55 56
Sites Web
¾ http://st-www.cs.uiuc.edu/users/patterns/patterns.html
¾ http://hillside.net/patterns/patterns.html
57