View
111
Download
1
Category
Preview:
Citation preview
D. Rieu Dept Informatique, IUT2 GrenobleDominique.Rieu@iut2.upmf-grenoble.fr
Introduction aux patrons
Département info/IUT2 2
SpécificationsInformelles
Modèle ObjetDescriptif & Normatif
Modèle ObjetEffectif Normalise
Logiciel
Expression des besoins
Analyse (abstraction du monde réel)
Conception (solution technique)
Implantation (solution opérationnelle)
Nerson 92
Composants de différents niveauxComposants de différents niveaux
Département info/IUT2 3
Composants réutilisablesComposants réutilisables
le composant logiciel ne suffit plusle composant logiciel ne suffit plus
toute une panoplie de modèles de composants toute une panoplie de modèles de composants réutilisablesréutilisables Dédié à un niveau d’abstractionDédié à un niveau d’abstraction Capitalisant savoir / savoir-faireCapitalisant savoir / savoir-faire
Patron (Patterns) : un modèle consensuel ?Patron (Patterns) : un modèle consensuel ?
Département info/IUT2 4
Patron ?Patron ?
Un patron constitue une base de savoir-faire pour résoudre Un patron constitue une base de savoir-faire pour résoudre un problème récurrent dans un domaine particulier. un problème récurrent dans un domaine particulier.
L’expression de ce savoir-faire :L’expression de ce savoir-faire :
permet d’identifier le problème à résoudrepermet d’identifier le problème à résoudre
propose une solution possible et correcte pour y répondrepropose une solution possible et correcte pour y répondre
offre les moyens d’adapter cette solutionoffre les moyens d’adapter cette solution
Département info/IUT2 5
PATTERNité : l’architecturePATTERNité : l’architecture
« Pattern #112 d’Alexander»Nom : Transition d’entréeQuoi : créer une transition du monde extérieur vers un univers intérieur, plus privéPourquoi : L’entrée dans un bâtiment influence la façon dont on va se sentir à
l’intérieurQuand : systèmes d’accès et d’entrée pour les maisons, les cliniques, les magasins, etc.Comment : Créer un espace de transition entre la rue et la porte d’entrée. Marquer le
cheminement dans l’espace de transition par un changement de lumière, un changementde direction, etc.
Patterns en relation : vue Zen (#134), etc.
C. Alexander : 253 patrons de conception architecturaux (64,77,79)
tiré de «Introduction aux patterns» Jean Bézivin
Département info/IUT2 6
D’autres domaines : l’hydraulique.
« Le volume d’eau en aval » (Downstream Water Volume )
Problème : Quand on détourne une partie des eaux d’une rivière, le volume d’eau dansle drainage décroît, ce qui conduit à un affaiblissement des contributions de la rivière.
Contraintes : Il ne faut pas que le détournement d’une partie de la rivière pénalisel’irrigation des cultures en aval ; la population ne doit pas souffrir de cette baisse du débitdes eaux ; l’impact écologique doit être limité au minimum.
Solution : Il faut maintenir le niveau des eaux en aval en ramenant un maximum d’eaudétournée vers son lit d’origine ; en traitant les eaux usées afin de les réintroduire enaval ; en économisant les eaux d’irrigation en évitant les systèmes de pulvérisation ou debrumisation.
Ken Asplund en 1973
Département info/IUT2 7
Décrire avec succès des types de solutions récurrentes
à des problèmes communs dans des types de situations
Un patron décrit à la fois un problème qui se produit très fréquemment dans votre environnement et l’architecture de la solution à ce problème de telle façon que vous puissiez utiliser cette solution des milliers de fois sans jamais l’adapter deux fois de la même manière.
C. Alexander
Définition
Département info/IUT2 8
Les patrons pour les SILes patrons pour les SI
Les patrons sont des composants logiques décrits indépendamment d’un langage donné (solution exprimée par des modèles semi-formels)
Coad [Coad92]Une abstraction d’un doublet, triplet ou d’un ensemble de classes qui peut êtreréutilisé encore et encore pour le développement d’applications Appleton [Appleton97]Une règle tripartite exprimant une relation entre un certain contexte, un certainproblème qui apparaît répétitivement dans ce contexte et une certaine configurationlogicielle qui permet la résolution de ce problème. Aarsten [Aarsten96]Un groupe d’objets coopérants liés par des relations et des règles qui exprimentles liens entre un contexte, un problème de conception et sa solution.
Département info/IUT2 9
Historique
PLoP 94Montibello
Design Patterns : Element of ReusableObject-Oriented Software
Gamma 95
EuroPLoP 96 Kloster
OOPSLA 87 Beck et Cunnimghan
Gamma et al. (GoF)OOPSLA 91, OOPSLA 92
• Object Models: Strategies, Patterns and ApplicationsCoad 95
• Patterns Languages of Program DesignCoplien et Schmidt 95
Pattern-Oriented Software Architecture: A System of Patterns.Buschmann 96Analysis Patterns : Reusable Object Model Fowler 97
ChiliPLoP 98 Wickenburg
Département info/IUT2 10
Patron « observateur » d ’E. Gamma
Intention : définir une interdépendance entre objets dépendants de façon telle que, quand un objet change d’état, tous ceux qui en dépendent en soit informés et automatiquement mis à jour.
GoF, 1995
0204060Est =
20,4Ouest = 30,6Nord = 45,9
1 sujet
3 observateurs
x = 55y = 97
1 sujet
3 observateursMotivation :
Département info/IUT2 11
Patron « observateur »
Sujet
état_sujet
lire_etat ()modifier_etat ()notifier ()lier (Observeur)délier (Observeur)
Observateur
état-obs.
mise_à_jour( )
un-Sujet un-autre-Observateurun-Observateur
2: notifier1: modifier_état
3: mise_à_jour
4: mise_à_jour
1,n
Structure et Collaborations
4: lire_état
5: lire_état
Observateurs
return état_sujet
pour tout o de Observateurs
o.mise_à-jour ()
Département info/IUT2 12
Documenter un framework
Documentation
- technique de dialogue, de documentation, d’enseignement, etc.
Gestion des ressourcesOpérations Bancaires
Analyse«métier commun»«métier spécifique»
- Le problème traité est issu d’une analyse de domaine
- Aide à la construction de modèles objets descriptifs
Simuler l’héritagemultiple en Java
Implantation« idiome »
- comment implanter dans un langage particulier certains traits absents de ce langage
Types de patrons / portée
CompositeObservateurBlackboard
Conception«architecture»«conception»
- identifier, nommer et abstraire des thèmes récurrents de la conception par objet.
- Aide à la construction de modèles objets effectifs
Département info/IUT2 13
23 modèles de conception du «Gang of Four»
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
ORIGINES• pratique de Smalltalk & C++• conception et réalisation de frameworks (cadriciels)
• thèse d’Erich Gamma, Object-Oriented Software Development based on ET++ :
Design Patterns, Class Library, Tools, Institut für Informatik, Zurich, 1991.• des conférences OOPSLA 91, 92, …• Design Patterns - Elements of Reusable Object Oriented Software, Addison-Wesley, 1995. (existence d’une version française)
Patrons de Gamma : introduction
Département info/IUT2 14
1- nom du patron et classification
2- intention : le problème à résoudre
3- alias : les patrons similaires dans d’autres langages de patrons
4- motivation : un scénario d’application du patron, les problèmes particuliers
5- indications d’utilisation : les situations dans lesquelles ce patron peut être utilisé
6- structure : une représentation graphique du patron utilisant la notation OMT
7- participants : les classes et/ou les objets participants et leurs responsabilités
8- collaborations : comment les participants collaborent
9- conséquences : décrit les résultats d’utilisation du patron
10- implantation : les astuces et les conseils d'implantation
11- exemples de code : fragments de code illustrant l’implantation du patron
12- utilisations remarquables : des exemples d’utilisations réelles de ce patron
13- modèles apparentés : d’autres patrons utilisés avec (ou par) celui-ci
Patrons de Gamma : formalisme
Département info/IUT2 Patron 15
Formalismes des patronsFormalismes des patrons
Narratif ou Structuré
Nom
Le patron
Diagramme
Indications
Un exemple
Nom
IntentionAlias
Motivation
Indications d’utilisation
UtilisationsModèles Apparentés
P. Coad E. Gamma
StructureParticipantsCollaborationsConséquencesImplantationExemples de Code
• Solution plus ou moins détaillée• Liens inter-patrons• Cas réels d’utilisation (framework)
Département info/IUT2 Patron 16
Classification GofClassification Gof
Création Structure Comportement
Classe
héritage
Délègue lacréation des objetsaux sous-classes
Factory Method
Décrit la manièrede composer lesclasses
Adapter
décrire desalgorithmes et desflots de données
Interpreter
Objet
délégation
Délègue lacréation d’objet àun autre objet
Abstract Factory
Décrit la manièred’assembler desobjets
Composite
Décrit des protocolesde coopérations entreobjets pour accomplirune tâcheObserver
Fonction
Portée
Département info/IUT2 Patron 17
Exemple : Factory MethodExemple : Factory MethodNom : Factory Method , Classification : Creation - Classe Alias : constructeur virtuel Intention : Définit une interface pour créer des objets, mais laisse les sous-classes décider de la classe à instancier. Motivation : Il s’agit permettre l’adaptation de classes abstraites de framework qui bien que abstraites ont à créer des objets dans d’autres classes abstraites.
Document
MyDocument
Application
MyApplication
CreateDocument NewDocument
doc = self.CreateDocumentdocs.inserer(doc)doc.ouvrir
docs
CreateDocument return new MyDocument()
Département info/IUT2 Patron 18
Exemple : Factory MethodExemple : Factory Method
Product
ConcreteProduct
Creator
ConcreteCreator
FactoryMethod AnOpération
FactoryMethod
...product = self. FactoryMethod....
Structure
Participants
Product : l’interface des objets créés par la «factory method»ConcreteProduct : réalise l’interfaceCreator : déclare la «factory method» et l’utilise pour manipuler des produitsConcreteCreator : surcharge ou réalise la «factory method»
return new ConcreteProduct()
Département info/IUT2 Patron 19
Exemple : CompositeExemple : Composite
Nom : Composite, Classification : Structure - Objet
Intention : décrire des compositions récursives et permettre aux clients de traiterdes objets individuels ou des compositions d’objets uniformément.
Motivation : Dans les applications graphiques, par exemple les éditeursgraphiques, le système autorise l’élaboration de figures composites à partir defigures simples et prédéfinies mais aussi à partir de figures composites élaboréesprécédemment.
Département info/IUT2 Patron 20
Exemple : CompositeExemple : Composite
un-Clientune-Figure
uneFigureComposée
uneFigureSimple
1: colorer ()2: colorer () 3:colorer ()
4: tracer ()5: tracer ()
une-Figure*
Figurecolorer ()tracer ()ajouter(fig)supprimer(fig)accéder ()
FigureComposéecolorer () { }tracer ()ajouter(fig)supprimer(fig)accéder ()
1,n
Cerclecolorer ()tracer ()
Textecolorer ()tracer ()
pour tout c de composants c.colorer()
composant
Département info/IUT2 Patron 21
Exemple : CompositeExemple : Composite
Client
Composant
Opérationspécifique ()Ajouter(Composant)Supprimer(Composant)Accéder()
Composite
Opérationspécifique ()Ajouter(Composant)Supprimer(Composant)Accéder()
Feuille
Opérationspécifique ()
1,n Client :manipule les objets feuilles etcomposites à traversl’interface ComposantComposant:définit l’interface commune
des objets.Feuille :définit le comportement des
objets simples.Composite :définit le comportement des
objets composites, réalise lesopérations de gestion descomposants.
Structure et Participants:
pour tout c de composants c.operationspécifique
composant
Département info/IUT2 Patron 22
Exemple : CompositeExemple : Composite
C o l l a b o r a t i o n :
L e s c l i e n t s u t i l i s e n t l a c l a s s e C o m p o s a n t p o u r i n t e r a g i r a v e c l e s o b j e t s d a n s l a s t r u c t u r ec o m p o s é e . S ’ i l s ’ a g i t d ’ u n e f e u i l l e , l a r e q u ê t e e s t p r i s e e n c o m p t e i m m é d i a t e m e n t . S ’ i l s ’ a g i td ’ u n c o m p o s i t e , l a r e q u ê t e e s t p r o p a g é e à s e s e n f a n t s .
I m p l a n t a t i o n :
r é f é r e n c e a u x e n f a n t s ( c o m p o s é - > c o m p o s a n t ) : o r d r e ? ( I t e r a t o r ) r é f é r e n c e a u p è r e ( c o m p o s a n t - > c o m p o s é ) : M a j p a r l e c o m p o s é p a r t a g e d e c o m p o s a n t ( u t i l i s a t i o n d u F l y w e i g h t ) i n t e r f a c e c o m m u n e ?
P r o d u i r e u n e i m p l a n t a t i o n p a r d é f a u t e n i m a g i n a n t l a m i g r a t i o n d e s o b j e t s ( a c c é d e r p o u r u n e c l a s s e F e u i l l e )
Département info/IUT2 23
Typologie des patrons
Patrons
PatronsGénéraux
Patronsde Domaine
couverture
PatronsD’Analyse
PatronsConception
PatronsD’Implantation
portée
PatronsProcessus
PatronsProduit
nature
Département info/IUT2 24
Nouvelle-Opération-BancaireNouvelle-Opération-Bancaire
Nom : Nouvelle-Opération-Bancaire
Problème : Permet de traiter uniformément les opérations bancaires (création compte, prêt, retrait, dépôt, etc.) pour faciliter la maintenance et l’évolution du système.
Force : Uniformisation des traitements, Réutilisation dès l’expression des besoins.
Département info/IUT2 25
Nouvelle-Opération-BancaireNouvelle-Opération-BancaireCas d’application :
2 cas spécifiques
Retrait Compte
Accéder au compte Contrôler le compte Vérifier la création du retrait Créer le retrait Prévenir le clientClient
NouveauCompte
Accéder au clientContrôler le clientVérifier la création du compte Créer le compte Prévenir l’agent
Agentbancaire
Cas général
NouvelleOpération Bancaire
Acteur
Accéder au produit Contrôler le produit Vérifier la création de l’opérationCréer l’opérationPrévenir l’acteur
Département info/IUT2 26
Client
c : Compte« Produit »
o: Retrait« Opération-Bancaire »
1: retrait-compte(numc, m)
3 : état:= ton-état ? ()
2 : c:= un-compte? (numc)
7: lier-compte (c)
4 : [ état = non bloqué]o:= réaliser -retrait (m)
6 : o:= créer-retrait ( c,m)
8: lier-retrait (o)
5 : vérifier-création-retrait (m)
9 : retirer (m)
Banque« Agrégat-Produit »
10 : afficher « Retrait effectué »
Nouvelle-Opération-BancaireNouvelle-Opération-Bancaire
Département info/IUT2 27
Agent-Bancairecl : Client« Produit »
c: Compte« Opération-Bancaire »
1 : nouveau-compte(numcl, type, versement)
2 : cl := un- client? (numcl)
3 : état:= ton-état ? ()
7: lier-client (cl)
4 : [ état=OK]c := réaliser-compte (type, versementt)
6 : c:= créer-compte(cl, type, versement)
9: lier-compte(c)
5 : vérifier-création-compte (type,versementt)
Agence« Agrégat-Produit »
10 : afficher « Compte ouvert »
8: verser (versement)
Nouvelle-Opération-BancaireNouvelle-Opération-Bancaire
Département info/IUT2 28
NouvelleOpération Bancaire
Acteur
Accéder au produit Contrôler le produit Vérifier la création de l’opérationCréer l’opérationPrévenir l’acteur
Solution Modèle
Nouvelle-Opération-BancaireNouvelle-Opération-Bancaire
Département info/IUT2 29
Solution Modèle
Acteur p: Produit o : Opération-Bancaire
1: nouvelle-opération-produit (idp,valop) 2 : p := un- produit? ( idp)
3: état:= ton-état ? ()
7 : lier-produit(p)
4 : [ état = OK ]o := réaliser-opération (valop)
6: o:= créer-opération-bancaire (p, valop)
5 : vérifier-création-opération (valop)
8: lier-opération-bancaire(o)
Agrégat-Produit
9 : afficher « Opération créée »
Nouvelle-Opération-BancaireNouvelle-Opération-Bancaire
Département info/IUT2 30
Solution Modèle
Agrégat-Produit
nouvelle-opération-produit() un-produit?(): Produit
Produit
ton-état? ()
réaliser-opération ():Opération-Bancairevérifier-création-opération (): Bool
lier-opération-bancaire (o:Opération-Bancaire)
0..*
1 1..*
Opération-Bancaire
créer-opération-bancaire(p:Produit,..)lier-produit(p:Produit)
Patron « Nouvelle-Opération-Bancaire »
Nouvelle-Opération-BancaireNouvelle-Opération-Bancaire
Département info/IUT2 31
NouvelleOpérationBancaire
acteur
SupprimerOpérationProduit
Réutilisation dès l’expression des besoins
RetraitCompte
client
NouveauCompte
Agent Bancaire
SupprimerCompte
SupprimerClient
DépotCompte
Département info/IUT2 32
ImitationImitation
Imiter un patron =
dupliquer et adapter les solutions modèles
Adapter un duplicata de patron =
(renommer | redéfinir | ajouter | supprimer)* des propriétés
Ingénierie des systèmesIngénierie des systèmes
Département info/IUT2 33
Exemple d ’ImitationExemple d ’Imitation
nouvelle-opération-produit()un-produit? (): Produit
patron «Nouvelle-Opération-Bancaire»
0..*
1..*
Agrégat-Produit
Produit
Opération Bancaire
ton-état? ()
réaliser-opération ():Opération-Bancairevérifier-création-opération (): Boollier-opération-bancaire (o:Opération-Bancaire)
créer-opération-bancaire(p:Produit,..)lier-produit(p:Produit)
1
créer-retrait (c:Compte,…) : Retraitlier-compte (c : Compte)
1
modèle «Nouveau-Compte»modèle «Retrait-Compte»
nouveau-compte ()un-client? () : Client
0..*
1
1..*
créer-compte (cl:Client,…) :Comptelier-client (cl : Client)verser ()
retrait-compte() un-compte?() : Compte
0..*
1..*
Banque
Compte
Retrait
Client
Compte
Agence
ton-état? ()
réaliser-compte ():Comptevérifier-création-compte ():Boollier-compte (c:Compte)
ton-état? ()
réaliser-retrait ():Retraitvérifier-création-retrait ():Boollier-retrait (o:Retrait)retirer ()
2 imitations
1 patron
Département info/IUT2 34
Intégration d’imitationIntégration d’imitation
Ingénierie des systèmesIngénierie des systèmes
Intégrer des imitations = (unir)* les rôles des classes
Union consiste à :
- remplacer deux classes par une seule
regroupant les propriétés des classes initiales ou
- appliquer un patron Rôle
Exemple : classe Compte
Département info/IUT2 35
Exemple d ’IntégrationExemple d ’Intégration
1..*
nouveau-compte ()un-client? () : Client
retrait-compte() un-compte?() : Compte
0..*
1
Banque
créer-retrait (c:Compte,…)lier-compte (c : Compte)
créer-compte (cl:Client,…)lier-client (cl : Client)verser ()ton-état? ()réaliser-retrait ():Retraitvérifier-création-retrait lier-retrait (o:Retrait)retirer ()
0..*
1
1..*
Agence
CompteClient Retrait
ton-état? ()
réaliser-compte ():Comptevérifier-création-compte ():lier-compte (c:Compte)
Maintenance et Traçabilité ?
Département info/IUT2 36
Nouveau-Compte«Nouvelle-Opération-Bancaire»
Agence
Banque
Client
Compte
Retrait
Opération-Bancaire
ProduitAgrégat-ProduitAgrégat-Produit
Retrait-Compte«Nouvelle-Opération-Bancaire»
Produit
Opération-Bancaire
Un système = une intégration d’imitations de patrons
Département info/IUT2 37
Un système = une intégration d’imitations de patrons
Composite
FigureChangeListener
AttributeFigure
RectangleFigure
StandardDrawing
CompositeFigure
Figure
Médiateur
AbstractFigure
FigureChangeEventMulticaster
Médiateur concret
Collègue concret
Observateur
Observateur concret
Sujet
Sujet concret
Composant
Composite concretFeuille
Observateur
Gestionnaire
Gestionnaire concret
Client
Gestionnaire concret
Chaîne de responsabilité
Gestionnaire concret
Département info/IUT2 38
Ingénierie des systèmesIngénierie des systèmesLa structure générale d’un modèle de SI peut-elle être construite exclusivement par imitation et intégration de patrons sans ajouts de classes ou de liaisons ?
OUI si :
- si on reste au même niveau d’abstraction (usage du patron Rôle, des patrons de Gamma, etc.)
- le catalogue de Patrons est complet
Département info/IUT2 39
Complétude des catalogues de patronsComplétude des catalogues de patronsTrès difficilement vérifiable
Plus facile pour un catalogue mono-domaine (SI bancaire, produit…)
L’ingénierie des patrons passe par une analyse de domaine
Catalogue de patrons
Ingénierie des Patrons
Ingénierie des SI
Analyse du domaine
Nouveau SI
Cahier des charges
utilisateurs
SI existants
plus le catalogue est complet, plus les patrons sont liés les uns aux autresplus le processus d’ingénierie des SI est spécifié.
Département info/IUT2 40
Deux processus complémentaires
- d’ingénierie des SI à partir de patrons (BY reuse)langage de patrons + opérations de bases Imitation, Intégration d’imitations
- d’ingénierie des patrons (FOR reuse)systèmes existants, analyse de domaine + relations inter-patrons Alternative, Extension/Raffinement, Utilisation
Nouvelle approche d’ingénierieNouvelle approche d’ingénierie
Recommended