Les langages informatiques modernes orientés objet permettent la réutilisation Importance de la clarté de la documentation



Documents pareils
Plan. Patrons de conception. Motivations. Design Pattern : principe. Philippe Collet

Patrons de Conception (Design Patterns)

Analyse,, Conception Objet

Projet Active Object

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Le développement d'applications informatiques

Générer du code à partir d une description de haut niveau

Design patterns. Design patterns - définition. Design patterns - avantages

Évaluation et implémentation des langages

Plateforme de capture et d analyse de sites Web AspirWeb

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Modélisation UML. Christine Solnon INSA de Lyon - 3IF 1/140.

Vérifier la qualité de vos applications logicielle de manière continue

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Information utiles. webpage : Google+ : digiusto/

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Université de Bangui. Modélisons en UML

Prototype de canal caché dans le DNS

Cours en ligne Développement Java pour le web

Chapitre VI- La validation de la composition.

IFT2255 : Génie logiciel

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

Introduction au Génie Logiciel

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Architectures Ouvertes pour l Adaptation des Logiciels

Héritage presque multiple en Java (1/2)

Analyse,, Conception des Systèmes Informatiques

CNAM cours NFE107 : Urbanisation et architecture des SI Xavier Godefroy, Rapport sur le BPM, mai Le BPM

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Programmes des classes préparatoires aux Grandes Ecoles

NSY102. Conception de logiciels Intranet Introduction

GOUVERNANCE DES IDENTITES ET DES ACCES ORIENTEE METIER : IMPORTANCE DE CETTE NOUVELLE APPROCHE

Entraînement au concours ACM-ICPC

Métriques de performance pour les algorithmes et programmes parallèles

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

RÉUSSIR L AUTOMATISATION DU PROCESSUS DE TEST FONCTIONNEL

Semarchy Convergence for MDM La Plate-Forme MDM Évolutionnaire

L enseignement de méthodes agiles dans un contexte d apprentissage actif

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

SECTION 5 BANQUE DE PROJETS

Guide d administration de Microsoft Exchange ActiveSync

Cours Bases de données

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Objets et Programmation. origine des langages orientés-objet

Machines virtuelles Cours 1 : Introduction

Business Process Execution Language

serena.com Processus et réussite Accélérez avec Serena TeamTrack

Description de la formation

Accélérer la transformation de vos nouveaux modèles assurances

Gestion mémoire et Représentation intermédiaire

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Guide de l utilisateur Mikogo Version Windows

Formula Negator, Outil de négation de formule.

Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Introduction aux concepts d ez Publish

Android 4 Les fondamentaux du développement d'applications Java

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

LOG4430 : Architecture logicielle et conception avancée

Compte-rendu re union Campus AAR 3 mars 2015

WINDOWS SHAREPOINT SERVICES 2007

Alfstore workflow framework Spécification technique

DEVELOPPEMENT ET MAINTENANCE DE LOGICIEL: OUTIL DE PILOTAGE

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

CQP Développeur Nouvelles Technologies (DNT)

Projet de Veille Technologique

Flexible Identity. authentification multi-facteurs. authentification sans token. Version 1.0. Copyright Orange Business Services mai 2014.

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Composants Logiciels. Le modèle de composant de CORBA. Plan

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Formation, Audit, Conseil, Développement, UX WinRT Silverlight WPF Android Windows Phone

ACCORD-CADRE DE TECHNIQUES DE L'INFORMATION ET DE LA COMMUNICATION. PROCEDURE ADAPTEE En application des articles 28 et 76 du Code des Marchés Publics

Windows Server 2012 R2 Administration

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire

Groupe Eyrolles, 2004 ISBN :

Intégration de systèmes

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Contenu de la version 3.4 C I V I L N E T A D M I N I S T R A T I O N

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Le génie logiciel. maintenance de logiciels.

Manipulation 4 : Application de «Change».

Configuration de SQL server 2005 pour la réplication

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

26 Centre de Sécurité et de

Le moteur de workflow JBPM

Programmation parallèle et distribuée

Un cadre de conception pour réunir les modèles d interaction et l ingénierie des interfaces DRAFT

Synergies entre Artisan Studio et outils PLM

Transcription:

Clues from other disciplines (from E. Gamma) Patrons de conception («Design Patterns») ESIR2, GL (LSI) Benoit Combemale Université de Rennes 1, ESIR & IRISA (Triskell team) Benoit.Combemale@irisa.fr Inspiré des transparents de Noël Plouzeau cf. http://fose.ethz.ch/slides/gamma.pdf Supports disponibles sur : http://www.irisa.fr/triskell/perso_pro/combemale/teaching/modeling/ Design Pattern : Pourquoi? Sur la réutilisation... La réussite prime sur la nouveauté Les langages informatiques modernes orientés objet permettent la réutilisation Importance de la clarté de la documentation 2! par importation de classes! par héritage : extension / spécialisation! par l'inversion de contrôle (aspects) Validation qualitative des acquis et de la connaissance pratique Importance de la dimension humaine dans le développement logiciel Faciliter la réutilisation de savoir faire 3 4

Design Pattern : C est quoi? Sur le découplage... Un fragment d architecture à objets Une solution «!classique!» à un problème fréquent Une solution indépendante des algorithmes Une solution qui découple les différents problèmes et leurs différentes réponses Face à un problème à résoudre! la solution choisie ne doit pas restreindre la liberté de choix pour résoudre les autres problèmes Pas spécifique des architectures logicielles! mais souvent mal traité Pour caricaturer, un exemple! le choix d un réfrigérateur ne doit pas imposer un choix de modèle de téléphone portable 5 6 Design Pattern : Origine? Design Pattern : Catégories? Concept proposé pour les architectures de bâtiments (Christopher Alexander) Début d application aux architectures logicielles en 1987 Visibilité publique en 1994 grâce au livre! Design patterns: elements of reusable object-oriented software (Gamma, Helm, Johnson et Vlissides, dit le Gang of Four : GoF) Patrons de création! ils ont pour but de gérer les problèmes de création de nouveaux objets! Abstract Factory, Builder, Factory Method, Prototype, Singleton Patrons de structure! ils servent à organiser les informations dans un graphe d objets! Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy Patrons de comportement! ils servent à maîtriser les interactions entre objets! Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor, Callback 7 8

Patron «State» Patron «State» - structure L objectif est de gérer les états d un objet par une hiérarchie de classes Exemple La fonction "display" d'une icône représentant une connexion change selon l'état. Pour le code qui invoque display, il suffit de changer dynamiquement l'objet qui implémente l'état pour que cette particularité soit insensible 9 10 Patron «State» - example Patron «Strategy» L objectif est de mettre en œuvre des algorithmes différents avec un choix dynamique de la mise en œuvre Analogie! permet de remplacer les «!pointeurs de fonction!» 11 12

Patron «Strategy» - rôles Strategy! défnit une interface pour configurer l algorithme (paramètres) et l exécuter ConcreteStrategy! définit une mise en œuvre activée par l opération d exécution Context! désigne l algorithme concret en vigueur! peut contenir des données pour l algorithme Patron «Strategy» - structure 13 14 Patron «Strategy» - example Patron «Command» <<interface>> Java::Collection ListeTriée getitem(n:integer):float setitem(n:integer,v:float) sort() <<interface>> AlgoTrieur configure(l:listetriée) execute() L objectif est de découpler! le choix d une action à faire dans une certaine situation! la détection de la situation et l exécution de l action décidée QuickSort configure(l:listetriée) execute() BubbleSort configure(l:listetriée) execute() 15 16

Patron «Command» - rôles client! chargé de la création des commandes concrètes et de leur association avec des situations invoker! chargé de détecter une situation et de faire exécuter la commande correspondante receiver! effectue le travail requis par la commande command! déclare une opération d exécution concrete command! fournit une méthode pour l opération d exécution Patron «Command» - structure 17 18 Patron «Command» - example Patron «Observer» L objectif est de propager les changements d état d un objet vers d autres objets toute création, suppression ou renommage de fichier dans le dossier doit être répercutée 19 20

Patron «Observer» - rôles subject! Comporte un état interne type non spécifié un patron de conception est indépendant de ce genre de détail! Est chargé de gérer une collection d abonnés capable de recevoir des notifications! Est chargé d envoyer un message aux abonnés lorsque son état change observer! Est capable de réagir à la réception d un message de notification venant d un sujet Patron «Observer» - structure 21 22 Patron «Observer» - example Patron «Abstract Factory» L objectif est de! permettre de créer des familles de produits! masquer les mécanismes de choix des classes de mise en œuvre de ces produits 23 24

Patron «Abstract Factory» - rôles Client! Détient une référence sur une Abstract factory! Crée des produits par appel des opérations de cette référence! Ne connaît pas la classe concrète des produits Abstract Product! Masquer la classe concrète! Offrir un ensemble d opérations applicables à tous les variantes d un même produit Abstract Factory! Comporte une opération de création (pour chaque produit, une opération de création retourne un objet produit)! La classe concrète des produits est masquée Patron «Abstract Factory» - rôles Concrete Product! Contient la mise en œuvre spécifique des opérations! Non accessible au client! Peut être amené à jouer un rôle d adaptateur Concrete Factory! Chargée de mettre en œuvre la création des produits concrets! Une fabrique concrète pour une plate-forme/variante/ version donnée ne fait que des produits concrets de la même plate-forme/variante/version 25 26 Patron «Abstract Factory» - structure Patron «Abstract Factory» - diagramme de séquence 27 28

Patron «Abstract Factory» - example Patron «Memento» L objectif est de capturer l état d un objet pour le stocker et le restaurer plus tard, sans briser l encapsulation Principe : une interface Memento sert de type opaque 29 30 Patron «Memento» - rôles Originator! possède un état à sauver/restaurer! est capable de créer des mémentos concrets Memento! interface permettant de transmettre des états sauvegardés de manière opaque ConcreteMemento! mise en œuvre de stockage d un état Caretaker! capable de stocker des mémentos et de les récupérer Patron «Memento» - structure 31 32

Patron «Memento» - sauvegarde Patron «Memento» - restauration 33 34 Patron «Visitor» Patron «Visitor» - rôles Objectif :! faciliter l organisation des méthodes de traitement d une structure de graphe/d arbre! séparer le choix des techniques de traitement de la description des types! permet d étendre ou de modifier les traitements en ne changeant qu un fichier source Visitor! Définir une opération dite de traitement pour chaque type d élément (visitfoo())! Cette opération sera appelée par chaque élément pour déclencher le traitement qui le concerne Element! Déclare une opération qui sera appelée par le Visitor (accept()) ConcreteElement! Mise en œuvre de Element::accept()! Le but est de déclencher le traitement correct 35 36

Patron «Visitor» - structure Patron «Visitor» - diagramme de séquence 37 38 Patron «Visitor» Patron «Adapter» Remarque :! Le contrôle du parcours est sous la responsabilité du visiteur, pas des éléments Quand utiliser le patron «Visitor»! Pour parcourir des structures d éléments (graphes, arbres)! Quand l ensemble des types change peu souvent si nouveau type : il faut modifier tous les visiteurs! Quand les traitements changent souvent une seule classe à ajouter ou à modifier Objectif :! Permet le réemploi d un type qui n est pas conforme à une interface attendue Exemple! votre code emploie une interface Stack «!idéale!» (push, pop, top, size)! la classe Java disponible n a pas exactement cette interface 39 40

Patron «Adapter» - rôles Patron «Adapter» - structure Client! emploie des opération de l interface Adaptor Adaptor! définit les opérations attendues par le Client ConcreteAdaptor! réalise les opérations par délégation vers Adaptee Adaptee! contient la mise en œuvre à réutiliser 41 42 Patron «Adapter» - diagramme de séquence Associer «Adapter» et «Abstract Factory» Les différentes fabriques concrètes existantes! créent des produits ayant des interfaces différentes! doivent être réunies par un concept de produit abstrait Solution! on interpose un PC Adapter entre Abstract product et Concrete product 43 44

Associer «Adapter» et «Abstract Factory» Et dans le futur? Exemple de JUnit :! A simple framework => Design pattern dense! Simplified using annotation/attribute based programming 45 Et dans le futur? (from E. Gamma) 46 References 47 48