1 / 40

D. Rieu Dept Informatique, IUT2 Grenoble Dominique.Rieu@iut2.upmf-grenoble.fr

Introduction aux patrons. D. Rieu Dept Informatique, IUT2 Grenoble Dominique.Rieu@iut2.upmf-grenoble.fr. Composants de différents niveaux. Nerson 92. Expression des besoins. Spécifications Informelles. Analyse (abstraction du monde réel). Modèle Objet Descriptif & Normatif.

charo
Download Presentation

D. Rieu Dept Informatique, IUT2 Grenoble Dominique.Rieu@iut2.upmf-grenoble.fr

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction aux patrons D. Rieu Dept Informatique, IUT2 Grenoble Dominique.Rieu@iut2.upmf-grenoble.fr

  2. Composants de différents niveaux Nerson 92 Expression des besoins Spécifications Informelles Analyse (abstraction du monde réel) Modèle Objet Descriptif & Normatif Conception (solution technique) Composants Modèle Objet Effectif Normalise Implantation (solution opérationnelle) Logiciel

  3. Composants réutilisables • le composant logiciel ne suffit plus • toute une panoplie de modèles de composants réutilisables • Dédié à un niveau d’abstraction • Capitalisant savoir / savoir-faire • Patron (Patterns) : un modèle consensuel ?

  4. Patron ? • Un patron constitue une base de savoir-faire pour résoudre un problème récurrent dans un domaine particulier. • L’expression de ce savoir-faire : • permet d’identifier le problème à résoudre • propose une solution possible et correcte pour y répondre • offre les moyens d’adapter cette solution

  5. PATTERNité : l’architecture C. Alexander : 253 patrons de conception architecturaux (64,77,79) tiré de «Introduction aux patterns» Jean Bézivin

  6. D’autres domaines : l’hydraulique. Ken Asplund en 1973

  7. Décrire avec succès des types de solutions récurrentes à des problèmes communs dans des types de situations Définition 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

  8. Les 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)

  9. OOPSLA 87 Beck et Cunnimghan Design Patterns : Element of Reusable OOPSLA 91, OOPSLA 92 Gamma et al. (GoF) Object-Oriented Software Gamma 95 PLoP 94 Montibello • Object Models: Strategies, Patterns and Applications Coad 95 • Patterns Languages of Program Design Coplien et Schmidt 95 Historique EuroPLoP 96 Kloster ChiliPLoP 98 Wickenburg Pattern-Oriented Software Architecture: A System of Patterns. Buschmann 96 Analysis Patterns : Reusable Object Model Fowler 97

  10. 3 observateurs 3 observateurs 1 sujet 1 sujet x = 55 y = 97 Est = 20,4 60 Ouest = 30,6 40 20 Nord = 45,9 0 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. Motivation : GoF, 1995

  11. Patron « observateur » Structure et Collaborations un-Observateur un-Sujet un-autre-Observateur Sujet 1: modifier_état 2: notifier Observateur 1,n état_sujet lire_etat () modifier_etat () notifier () lier (Observeur) délier (Observeur) Observateurs état-obs. mise_à_jour( ) 3: mise_à_jour 4: lire_état 4: mise_à_jour return état_sujet 5: lire_état pour tout o de Observateurs o.mise_à-jour ()

  12. Analyse «métier commun» «métier spécifique» Conception «architecture» «conception» Implantation « idiome » Documentation - technique de dialogue, de documentation, d’enseignement, etc. - comment implanter dans un langage particulier certains traits absents de ce langage - Le problème traité est issu d’une analyse de domaine - Aide à la construction de modèles objets descriptifs - identifier, nommer et abstraire des thèmes récurrents de la conception par objet. - Aide à la construction de modèles objets effectifs Gestion des ressources Opérations Bancaires Composite Observateur Blackboard Simuler l’héritage multiple en Java Documenter un framework Types de patrons / portée

  13. Patrons de Gamma : introduction • 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)

  14. Patrons de Gamma : formalisme 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

  15. Formalismes des patrons Structure Participants Collaborations Conséquences Implantation Exemples de Code Narratif ou Structuré P. Coad E. Gamma Nom Nom Intention Le patron Alias Un exemple Motivation Indications d’utilisation Indications Diagramme • Solution plus ou moins détaillée • Liens inter-patrons • Cas réels d’utilisation (framework) Utilisations Modèles Apparentés Patron

  16. Classification Gof Fonction Portée Patron

  17. Exemple : Factory Method Application docs CreateDocument NewDocument doc = self.CreateDocument docs.inserer(doc) doc.ouvrir Document MyApplication MyDocument return new MyDocument() CreateDocument Patron

  18. Exemple : Factory Method Structure Creator FactoryMethod AnOpération ... product = self. FactoryMethod .... Product ConcreteCreator ConcreteProduct return new ConcreteProduct() FactoryMethod Participants Product : l’interface des objets créés par la «factory method» ConcreteProduct : réalise l’interface Creator : déclare la «factory method» et l’utilise pour manipuler des produits ConcreteCreator : surcharge ou réalise la «factory method» Patron

  19. Exemple : Composite Patron

  20. Exemple : Composite une-Figure Figure uneFigureComposée une-Figure* uneFigureSimple un-Client colorer () tracer () ajouter(fig) supprimer(fig) accéder () composant 1: colorer () 2: colorer () 1,n 3:colorer () 4: tracer () 5: tracer () Cercle FigureComposée colorer () tracer () colorer () { } tracer () ajouter(fig) supprimer(fig) accéder () Texte pour tout c de composants c.colorer() colorer () tracer () Patron

  21. Exemple : Composite Composant 1,n Client Opérationspécifique () Ajouter(Composant) Supprimer(Composant) Accéder() composant Composite Feuille Opérationspécifique () Opérationspécifique () Ajouter(Composant) Supprimer(Composant) Accéder() pour tout c de composants c.operationspécifique Patron

  22. Exemple : Composite Patron

  23. Typologie des patrons Patrons nature couverture Patrons Processus Patrons Produit Patrons Généraux Patrons de Domaine portée Patrons D’Analyse Patrons Conception Patrons D’Implantation

  24. Nouvelle-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.

  25. Nouvelle-Opération-Bancaire • Cas d’application : Cas général 2 cas spécifiques Accéder au compte Nouvelle Opération Contrôler le compte Retrait Vérifier la création du retrait Compte Bancaire Créer le retrait Acteur Client Prévenir le client Accéder au produit Accéder au client Contrôler le produit Nouveau Contrôler le client Vérifier la création de l’opération Compte Vérifier la création du compte Créer l’opération Agent Créer le compte Prévenir l’acteur bancaire Prévenir l’agent

  26. Nouvelle-Opération-Bancaire

  27. Nouvelle-Opération-Bancaire

  28. Nouvelle-Opération-Bancaire • Solution Modèle Nouvelle Opération Bancaire Acteur Accéder au produit Contrôler le produit Vérifier la création de l’opération Créer l’opération Prévenir l’acteur

  29. Nouvelle-Opération-Bancaire • Solution Modèle

  30. Nouvelle-Opération-Bancaire Patron « Nouvelle-Opération-Bancaire »  Agrégat-Produit  nouvelle-opération-produit() Produit un-produit?(): 0..*  Produit  Opération-Bancaire ton-état? () 1 1..* réaliser-opération ():Opération-Bancaire créer-opération-bancaire(p:Produit,..) vérifier-création-opération (): Bool lier-produit(p:Produit) lier-opération-bancaire (o:Opération-Bancaire) • Solution Modèle

  31. Nouvelle Opération Bancaire acteur Supprimer Opération Produit Réutilisation dès l’expression des besoins Dépot Compte Retrait Compte client Nouveau Compte Supprimer Compte Agent Bancaire Supprimer Client

  32. Ingénierie des systèmes • Imitation Imiter un patron = dupliquer et adapter les solutions modèles Adapter un duplicata de patron = (renommer | redéfinir | ajouter | supprimer)* des propriétés

  33. Exemple d ’Imitation patron «Nouvelle-Opération-Bancaire» 1 patron Agrégat-Produit nouvelle-opération-produit() 2 imitations un-produit? (): Produit 0..* modèle «Nouveau-Compte» modèle «Retrait-Compte» Produit ton-état? () Agence Banque réaliser-opération ():Opération-Bancaire vérifier-création-opération (): Bool lier-opération-bancaire (o:Opération-Bancaire) retrait-compte() 1 un-compte?() : Compte 1..* nouveau-compte () Opération Bancaire un-client? () : Client 0..* 0..* créer-opération-bancaire(p:Produit,..) Compte Client lier-produit(p:Produit) ton-état? () ton-état? () réaliser-retrait ():Retrait réaliser-compte ():Compte vérifier-création-retrait (): Bool vérifier-création-compte (): Bool lier-retrait (o:Retrait) lier-compte (c:Compte) retirer () 1 1 1..* 1..* Compte Retrait créer-compte (cl:Client,…) :Compte créer-retrait (c:Compte,…) : Retrait lier-client (cl : Client) lier-compte (c : Compte) verser ()

  34. Ingénierie des systèmes • Intégration d’imitation 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

  35. Exemple d ’Intégration Banque Maintenance et Traçabilité ? Agence retrait-compte() nouveau-compte () un-compte?() : Compte un-client? () : Client 0..* 0..* Compte Client Retrait créer-compte (cl:Client,…) 1..* 1 1 lier-client (cl : Client) ton-état? () verser () créer-retrait (c:Compte,…) 1..* ton-état? () lier-compte (c : Compte) réaliser-compte ():Compte réaliser-retrait ():Retrait vérifier-création-compte (): lier-compte (c:Compte) vérifier-création-retrait lier-retrait (o:Retrait) retirer ()

  36. Agence Client Un système = une intégration d’imitations de patrons Compte Opération-Bancaire Produit Nouveau-Compte «Nouvelle-Opération-Bancaire» Retrait-Compte «Nouvelle-Opération-Bancaire» Opération-Bancaire Agrégat-Produit Produit Agrégat-Produit Retrait Banque

  37. Figure Un système = une intégration d’imitations de patrons FigureChangeListener Composant Sujet Collègue concret Observateur Médiateur Composite Médiateur concret Observateur FigureChangeEventMulticaster Observateur concret Feuille Composite concret Sujet concret AttributeFigure CompositeFigure AbstractFigure StandardDrawing Gestionnaire concret Gestionnaire concret Gestionnaire concret RectangleFigure Gestionnaire Client Chaîne de responsabilité

  38. Ingénierie des systèmes La 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

  39. Complétude des catalogues de patrons SI existants Ingénierie des Ingénierie des Catalogue de Nouveau SI Patrons SI patrons Analyse du domaine Cahier des charges utilisateurs • Trè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 plus le catalogue est complet, plus les patrons sont liés les uns aux autres plus le processus d’ingénierie des SI est spécifié.

  40. Nouvelle approche d’ingénierie • 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

More Related