La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

D. Rieu Dept Informatique, IUT2 Grenoble Introduction aux patrons.

Présentations similaires


Présentation au sujet: "D. Rieu Dept Informatique, IUT2 Grenoble Introduction aux patrons."— Transcription de la présentation:

1 D. Rieu Dept Informatique, IUT2 Grenoble Introduction aux patrons

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

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

4 Département info/IUT2 4 Patron ? l Un patron constitue une base de savoir-faire pour résoudre un problème récurrent dans un domaine particulier. l Lexpression de ce savoir-faire : permet didentifier le problème à résoudre permet didentifier le problème à résoudre propose une solution possible et correcte pour y répondre propose une solution possible et correcte pour y répondre offre les moyens dadapter cette solution offre les moyens dadapter cette solution

5 Département info/IUT2 5 PATTERNité : larchitecture C. Alexander : 253 patrons de conception architecturaux (64,77,79) tiré de «Introduction aux patterns» Jean Bézivin

6 Département info/IUT2 6 Dautres domaines : lhydraulique. Ken Asplund en 1973

7 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 larchitecture de la solution à ce problème de telle façon que vous puissiez utiliser cette solution des milliers de fois sans jamais ladapter deux fois de la même manière. C. Alexander Définition

8 Département info/IUT2 8 Les patrons pour les SI Les patrons sont des composants logiques décrits indépendamment dun langage donné (solution exprimée par des modèles semi-formels)

9 Département info/IUT2 9 Historique PLoP 94 Montibello Design Patterns : Element of Reusable Object-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 Applications Coad 95 Patterns Languages of Program Design Coplien et Schmidt 95 Pattern-Oriented Software Architecture: A System of Patterns. Buschmann 96 Analysis Patterns : Reusable Object Model Fowler 97 ChiliPLoP 98 Wickenburg

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

11 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-Observateur un-Observateur 2: notifier 1: 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 ()

12 Département info/IUT2 12 Documenter un framework Documentation - technique de dialogue, de documentation, denseignement, etc. Gestion des ressources Opérations Bancaires Analyse «métier commun» «métier spécifique» - Le problème traité est issu dune analyse de domaine - Aide à la construction de modèles objets descriptifs Simuler lhéritage multiple en Java Implantation « idiome » - comment implanter dans un langage particulier certains traits absents de ce langage Types de patrons / portée Composite Observateur Blackboard 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

13 Département info/IUT 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 dErich Gamma, Object-Oriented Software Development based on ET++ : Design Patterns, Class Library, Tools, Institut für Informatik, Zurich, des conférences OOPSLA 91, 92, … Design Patterns - Elements of Reusable Object Oriented Software, Addison-Wesley, (existence dune version française) Patrons de Gamma : introduction

14 Département info/IUT nom du patron et classification 2- intention : le problème à résoudre 3- alias : les patrons similaires dans dautres langages de patrons 4- motivation : un scénario dapplication du patron, les problèmes particuliers 5- indications dutilisation : 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 dutilisation du patron 10- implantation : les astuces et les conseils d'implantation 11- exemples de code : fragments de code illustrant limplantation du patron 12- utilisations remarquables : des exemples dutilisations réelles de ce patron 13- modèles apparentés : dautres patrons utilisés avec (ou par) celui-ci Patrons de Gamma : formalisme

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

16 Département info/IUT2 Patron16 Classification Gof Fonction Portée

17 Département info/IUT2 Patron17 Exemple : Factory Method Document MyDocument Application MyApplication CreateDocument NewDocument doc = self.CreateDocument docs.inserer(doc) doc.ouvrir docs CreateDocument return new MyDocument()

18 Département info/IUT2 Patron18 Exemple : Factory Method Product ConcreteProduct Creator ConcreteCreator FactoryMethod AnOpération FactoryMethod... product = self. FactoryMethod.... Structure Participants Product : linterface des objets créés par la «factory method» ConcreteProduct : réalise linterface Creator : déclare la «factory method» et lutilise pour manipuler des produits ConcreteCreator : surcharge ou réalise la «factory method» return new ConcreteProduct()

19 Département info/IUT2 Patron19 Exemple : Composite

20 Département info/IUT2 Patron20 Exemple : Composite un-Client une- Figure uneFigure Composée uneFigure Simple 1: colorer () 2: colorer () 3:colorer () 4: tracer () 5: tracer () une- Figure* Figure colorer () tracer () ajouter(fig) supprimer(fig) accéder () FigureComposée colorer () { } tracer () ajouter(fig) supprimer(fig) accéder () 1,n Cercle colorer () tracer () Texte colorer () tracer () pour tout c de composants c.colorer() composant

21 Département info/IUT2 Patron21 Exemple : 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 pour tout c de composants c.operationspécifique composant

22 Département info/IUT2 Patron22 Exemple : Composite

23 Département info/IUT2 23 Typologie des patrons Patrons Généraux Patrons de Domaine couverture Patrons DAnalyse Patrons Conception Patrons DImplantation portée Patrons Processus Patrons Produit nature

24 Département info/IUT2 24Nouvelle-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 lexpression des besoins.

25 Département info/IUT2 25Nouvelle-Opération-Bancaire Cas dapplication : 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 client Client Nouveau Compte Accéder au client Contrôler le client Vérifier la création du compte Créer le compte Prévenir lagent Agent bancaire Cas général Nouvelle Opération Bancaire Acteur Accéder au produit Contrôler le produit Vérifier la création de lopération Créer lopération Prévenir lacteur

26 Département info/IUT2 26Nouvelle-Opération-Bancaire

27 Département info/IUT2 27Nouvelle-Opération-Bancaire

28 Département info/IUT2 28 Nouvelle Opération Bancaire Acteur Accéder au produit Contrôler le produit Vérifier la création de lopération Créer lopération Prévenir lacteur Solution ModèleNouvelle-Opération-Bancaire

29 Département info/IUT2 29 Solution ModèleNouvelle-Opération-Bancaire

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

31 Département info/IUT2 31 Nouvelle Opération Bancaire acteur Supprimer Opération Produit Réutilisation dès lexpression des besoins Retrait Compte client Nouveau Compte Agent Bancaire Supprimer Compte Supprimer Client Dépot Compte

32 Département info/IUT2 32 Imitation 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 Ingénierie des systèmes

33 Département info/IUT2 33 Exemple 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-Bancaire vérifier-création-opération ():Bool lier-opération-bancaire (o:Opération-Bancaire) créer-opération-bancaire(p:Produit,..) lier-produit(p:Produit) 1 créer-retrait (c:Compte,…) : Retrait lier-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,…) :Compte lier-client (cl : Client) verser () retrait-compte() un-compte?() : Compte 0..* 1..* Banque Compt e Retrait Client Compte Agence ton-état? () réaliser-compte ():Compte vérifier-création-compte ():Bool lier-compte (c:Compte) ton-état? () réaliser-retrait ():Retrait vérifier-création-retrait ():Bool lier-retrait (o:Retrait) retirer () 2 imitations 1 patron

34 Département info/IUT2 34 Intégration dimitation Intégration dimitation Ingé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

35 Département info/IUT2 35 Exemple 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 ():Retrait vérifier-création-retrait lier-retrait (o:Retrait) retirer () 0..* 1 1..* Agence Compte Client Retrait ton-état? () réaliser-compte ():Compte vérifier-création-compte (): lier-compte (c:Compte) Maintenance et Traçabilité ?

36 Département info/IUT2 36 Nouveau-Compte «Nouvelle-Opération-Bancaire» Agence Banque Client Compte Retrait Opération-Bancaire ProduitAgrégat-Produit Retrait-Compte «Nouvelle-Opération-Bancaire» Produit Opération-Bancaire Un système = une intégration dimitations de patrons

37 Département info/IUT2 37 Un système = une intégration dimitations 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 concret Feuille Observateur Gestionnaire Gestionnaire concret Client Gestionnaire concret Chaîne de responsabilité Gestionnaire concret

38 Département info/IUT2 38 Ingénierie des systèmes La structure générale dun 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 dabstraction (usage du patron Rôle, des patrons de Gamma, etc.) - le catalogue de Patrons est complet

39 Département info/IUT2 39 Complétude des catalogues de patrons Très difficilement vérifiable Plus facile pour un catalogue mono-domaine (SI bancaire, produit…) Lingé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 dingénierie des SI est spécifié.

40 Département info/IUT2 40 Deux processus complémentaires - dingénierie des SI à partir de patrons (BY reuse) langage de patrons + opérations de bases Imitation, Intégration dimitations - dingénierie des patrons (FOR reuse) systèmes existants, analyse de domaine + relations inter-patrons Alternative, Extension/Raffinement, Utilisation Nouvelle approche dingénierie


Télécharger ppt "D. Rieu Dept Informatique, IUT2 Grenoble Introduction aux patrons."

Présentations similaires


Annonces Google