les Design Patterns 26/02/2016 lab-sticc.univ-brest.fr/~babau/ Département Informatique, UFR Sciences, UBO Laboratoire Lab-STICC Jean-Philippe Babau

Documents pareils
Patrons de Conception (Design Patterns)

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

Analyse,, Conception Objet

Projet Active Object

Diagrammes de Package, de déploiement et de composants UML

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

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

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

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)

Once the installation is complete, you can delete the temporary Zip files..

Analyse,, Conception des Systèmes Informatiques

Messagerie asynchrone et Services Web

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

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

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

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

IFT2255 : Génie logiciel

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

Lancez le setup, après une phase de décompression, la fenêtre d installation des prérequis apparaît, il faut les installer :

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Le développement d'applications informatiques

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

modèles génériques applicables à la synthèse de contrôleurs discrets pour l Internet des Objets

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

Introduction au Génie Logiciel

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

NFP111 Systèmes et Applications Réparties

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Refonte front-office / back-office - Architecture & Conception -

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Conception, architecture et urbanisation des systèmes d information

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

Réalisation d une application de soumission de cours en ligne de l Université Virtuelle de Tunis

Prototype de canal caché dans le DNS

AGROBASE : un système de gestion de données expérimentales

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

Système Principal (hôte) 2008 Enterprise x64

OpenText Content Server v10 Cours (ex 101) L essentiel de la gestion des connaissances

Prise en compte des ressources dans les composants logiciels parallèles

TD/TP 1 Introduction au SDK d Android

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

Architecture Orientée Objet Pour l Ingénierie des SIP application à l Entreprise SAFCER

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

APIs de table pour SQL Server

Installation d un serveur AmonEcole

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Cedric Dumoulin (C) The Java EE 7 Tutorial

QUELQUES ÉLÉMENTS DU DÉVELOPPEMENT LOGICIEL

Modélisation des interfaces matériel/logiciel

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

CATALOGUE FORMATIONS DOMAINE Bases de données

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

RTDS G3. Emmanuel Gaudin

Recherche. Instructions d utilisation de ce Tutoriel. Suite d une action. Explication d un exemple, information supplémentaire. Avertissement. Astuce.

Ingénierie des Modèles. Méta-modélisation

Guide de recherche documentaire à l usage des doctorants. Partie 1 : Exploiter les bases de données académiques

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Lions Clubs International e-clubhouse Section réservée aux seuls membres du Lions Club Manuel d utilisation

CQP Développeur Nouvelles Technologies (DNT)

Automatisation de l administration système

Introduction aux bases de données

Cloud et SOA La présence du Cloud révolutionne-t-elle l approche SOA?

MEGA Designer - Integration. Guide d utilisation

Présentation du PL/SQL

Plan. Department of Informatics

DOCUMENTATION UTILISATEUR DU GUICHET VIRTUEL 2.0

White Paper - Livre Blanc

Le moteur de workflow JBPM

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

SCI6052 Information documentaire numérique École de bibliothéconomie et des sciences de l information

Systèmes Répartis. Pr. Slimane Bah, ing. PhD. Ecole Mohammadia d Ingénieurs. G. Informatique. Semaine Slimane.bah@emi.ac.ma

en SCÈNE RATIONAL Rational Démonstration SDP : automatisation de la chaîne de développement Samira BATAOUCHE sbataouche@fr.ibm.com

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

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION

Architecture à base de composants pour le déploiement adaptatif des applications multicomposants

A Libre Ouvert. Médiathèque Jacques Ellul. le

Machines virtuelles Cours 1 : Introduction

ALCATEL IP1020. Guide de Configuration pour l offre Centrex OpenIP

1. Présentation du TP

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

THÈSE. présentée à TÉLÉCOM PARISTECH. pour obtenir le grade de. DOCTEUR de TÉLÉCOM PARISTECH. Mention Informatique et Réseaux. par.

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Chapitre 2 : Abstraction et Virtualisation

WEA Un Gérant d'objets Persistants pour des environnements distribués

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

Licence Pro ASUR Supervision Mai 2013

Alfstore workflow framework Spécification technique

Cours en ligne Développement Java pour le web

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

NSY102. Conception de logiciels Intranet Introduction

Le Guide Pratique des Processus Métiers

Module «Pilotage de Projet» - Module GPRO-0

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Vanilla : Virtual Box

Manuel Utilisateur. Boticely

ECLIPSE ET PDT (Php development tools)

Sommaire. Conduite de projet Méthode d analyse et de conception. Processus unifié. Objectifs d un processus de développement

4. SERVICES WEB REST 46

Transcription:

lab-sticc.univ-brest.fr/~babau/ les Design Patterns Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC 2 1

Plan Introduction aux Design patterns Quelques Design Patterns Utilisation des Design Patterns 3 Plan Introduction aux Design patterns Quelques Design Patterns Utilisation des Design Patterns 4 2

Principes de génie logiciel Une classe complexe -> un ensemble de classes Une classe pour les données (avec getter / setter) Une classe par pour un constructeur complexe (fabrique) Une classe de service (visiteur et délégation) Un ensemble de classes Une classe d accès (médiateur) Un ensemble de classes métier Une classe d accès (façade) Séparation vue / métier Plusieurs fenêtres : enchainement des fenêtres dans une classe (controleur) Une vue : des compartiments, onglets; des boutons, menus; des labels; des zones de saisie Une vue : pas de traitement, couplage faible avec le métier 5 Qualité de code CheckStyle 126 règles de codage Indentation du code Nommage des classes Nombre max de méthodes par classe Longueur max d une ligne de code Longueurs max de lignes dans une méthode Nombre maximal de chemins dans une méthode Initialisation des données JDepend 6 3

Historique des Design Patterns Patterns en architecture Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to this problem in such a way that you can use this solution a million times over, without ever doing it the same way twice. C. Alexander Application à divers domaine, dont la conception logicielle La thèse de Erich Gamma éditée en livre «Design Patterns: Elements of Reusable Object-Oriented Software» Addison Wesley, 1995 E. Gamma, R. Helm, R. Johnson, J. Vlissides Gang of Four ou GoF s Book 7 Objectif des Design Pattern Une solution classique à un problème récurrent Solution éprouvée Solution indépendante du contexte La documentation de la solution Un nom Explication du principe Haut-niveau d abstraction Solution et problème générique Indépendant des langages de programmation Classes et communications entre objets Application au contexte Pas de recette toute faite À adapter au problème Choix de conception 8 4

Familles 23 Design pattern dans le GoF Création Initialisation et configuration des classes et des objets Structure Séparation des préoccupations et abstraction pour la réutilisation Comportement Combiner interactions et structure 9 Familles Création Abstract Factory : créer des objets sans se soucier des classes concrètes Factory Method : déléguer la création à une sous-classe Prototype : créer des instances à partir de prototypes Object Pool : créer des ressources «recyclables» après utilisation Builder : construction incrémentale d objets complexes Singleton : créer une classe ne possédant qu une seule instance Structure Facade : créer un interface à un sous-système Adapter ou Wrapper: adapter une interface à une autre Proxy : contrôler l accès à un objet Decorator : étendre dynamiquement les capacités d un objet Bridge: découpler un concept de son implémentation Composite : gérer un ensemble comme un élément FlyWeight : partage de données MVC : découpler IHM et Données 10 5

Familles Comportement Chain of responsability : découpler l émetteur du receveur Command : réifier, pour la manipuler, la requête Interpreter: créer un langage d interprétation Mediator : gestion des interactions entre objets Observer ou Publish/Subscribre: découpler vues et donnée Visitor Strategy,Template Method, State, Memento, Iterator Concurrence Active object, monitor, 11 Plan Introduction aux Design patterns Quelques Design Patterns Utilisation des Design Patterns 12 6

Design Pattern : Observer Le problème Assurer la séparation des vues d une donnée (objet) Pour améliorer la réutilisation des vues et des données Gestion dynamique des vues (création / suppression possible) Assurer la cohérence des vues et des données A B C X 30 35 35 Y 30 40 30 Z 25 25 50 Répartition A B C Les vues C A B A=25%, B=25%, C=50% La donnée Design Pattern : Observer La solution : la structure Créer une classe pour la donnée (Subject) et une pour les vues (Observers) Séparer, via l abstraction, la donnée et les vues Subject attach (Observer) detach (Observer) subject 1 observers * Observer Update() Notify () Concrete Subject GetState() SetState() subjectstate Concrete Observer Update() observerstate 14 7

Design Pattern : Observer La solution : le comportement Communication de type publish / subscribe entre la vue et la donnée Notify() : for all x in observers{ x.update(); } Update() : observerstate = subject.getstate(); :ConcreteSubject :ConcreteObserver-1 :ConcreteObserver-2 SetState() Notify() Update() GetState() Update() GetState() 15 Design Pattern : Observer Diffusion des informations Communications non optimisées Mise à jour systématique Pas toujours utile Découplage fort entre vues et données Gestion cohérente des évolutions Diffusion entre vues qui ne se connaissent pas entre elles Par le biais de la donnée Une implémentation disponible en Java http://blog.netapsys.fr/pratiquer-le-design-pattern-observer-en-15-min/ http://www.javaworld.com/article/2077258/learn-java/observer-and-observable.html 16 8

Design Pattern : Facade Le problème Assurer l interface avec un sous-système Pour améliorer la séparation des modules : évolutions, réutilisation Masquer la complexité du sous-système Classes clientes communications Classes du sous-système Design Pattern : Facade La solution : structure Insérer une classe intermédiaire qui se charge du traitement des requêtes Classes clientes Package Facade communications Classes du sous-système 9

Design Pattern : Facade Simplification pour le client Requête à la façade qui transmet au sous-système Découplage client / service Contrat d utilisation et de communication Couche d abstraction Standardisation API Architecture en couche Attention aux performances 19 Design Pattern : Mediator Le problème Assurer l interface avec plusieurs objets La solution : structure Insérer une classe intermédiaire qui se charge des échanges entre les divers éléments Mediator 10

Design Pattern : Mediator Utilisation Encapsuler uns séquence d interactions Découpler les objets qui interagissent Design Pattern : Singleton Le problème Assurer qu une classe n a qu une seule instance La solution Le constructeur est privé Une méthode ne crée une instance que si il n en existe pas encore Singleton - singletondata : Singleton - Singleton () + GetInstance() : Singleton 11

Design Pattern : Composite Le problème Gérer un objet comme un groupe d objets La solution Une feuille et le composite sont des éléments implémentant les méthodes de l élément Le composite implémente des méthodes de gestion des feuilles Utilisations Interface graphique Bureautique Souvent des versions dégradées Design Pattern : Flyweight Le problème Limiter la duplication de données La solution Créer des objets partageables (ou non) via une Fabrique qui contrôle la création Utilisation Partage d informations redondantes, création d un seul objet, optimisation de ressources 12

Design Pattern : Proxy Le problème Contrôler l accès à un objet La solution Créer un objet qui intercepte les messages et délègue le traitement Utilisation Communication distante : encapsulation de la communication Proxy virtuel : création si nécessaire de l objet réel Contrôler l utilisation d un objet : droits, nombre d accès, Insérer d autres traitements : persistence, suivi des appels, Combiné à FlyWeight : partage optimisé d information Design Pattern : Abstract Factory Le problème Créer un objet sans se préoccuper de son implémentation Il existe plusieurs façons de construire un objet La solution Séparation fabrique / élément Séparation abstrait / concret 13

Design Pattern : Abstract Factory Utilisation Plateformes multiples Design Pattern : MVC Le problème Mettre en place un IHM Pour améliorer la séparation des modules : évolutions, réutilisation La solution : structure Séparation Modèle / Vue / Contrôleur (Model / View / Controller) 14

Design Pattern : MVC Le Modèle Les données et le traitement Orienté métier Indépendant des interactions Indépendant des vues et du contrôleur Pas de mise en forme des données La Vue Les interactions utilisateurs Actions utilisateurs et présentation du modèle Pas de traitement Plusieurs vues possible d une même donnée (Observer) Le Contrôleur Contrôle la synchronisation des vues et du modèle Est informé des actions utilisateurs et agit en conséquence sur le modèle Modifie les vues en fonction des actions utilisateurs N effectue aucun traitement, ne modifie pas les données Design Pattern : MVC La solution : comportement Contrôleur Analyse la requête Demande si nécessaire la mise à jour du modèle Détermine la vue à afficher et demande son affichage La vue Interroge le modèle 15

MVC en Java Listener Java Spécialisé pour la réception d événements spécifiques Changement dans le modèle Le modèle Le modèle + gestion d une liste de listener Le contrôleur Connait le modèle et les vues Abstraction des vues pour être indépendant d une technologie Initialise la liste des listeners Une vue Avise le contrôleur à chaque action Implémente un listener Est notifié du changement du modèle Des exemples d implémentation http://www.infres.enst.fr/~hudry/coursjava/interswing/boutons5.html https://openclassrooms.com/courses/apprenez-a-programmer-en-java/mieux-structurerson-code-le-pattern-mvc Design Pattern : MVP Model / View / Presenter Presenter : Mediator Plus adapté pour une architecture n-tiers MVC MVP 32 16

Design Pattern : MVVM Model / View / ViewModel ViewModel : Adapter Traitement pour la mise en forme des données View Gère certains contrôles liés à l IHM A appliquer lorsque le modèle ne peut être exploité par la vue Modèle complexe Actions utilisateurs complexes 33 Plan Introduction aux Design patterns Quelques Design Patterns Utilisation des Design Patterns 34 17

Principes généraux Découplage abstrait/concret Observer, Abstract Factory Découplage donnée / vues ou donnée / constructeur ou donnée / traitements Observer, MVC Fabrique Délégation, visiteur Introduction d objets intermédiaires Facade, Mediator, proxy, adapter 35 Design Pattern dans la pratique Découverte Bon sens Bons sang, mais c est bien sûr Première lecture Catalogue universitaire, proposition académique 1 ère expérimentation Je connais, je vais adapter Heu J aurais du lire plus attentivement Deuxième lecture C est puissant 2 ème expérimentation On les voit partout On en met partout 36 18

Design Pattern : Pro et Cons Un niveau d abstraction élevé qui permet d élaborer des constructions logicielles de meilleure qualité Réduction de la complexité par séparation des préoccupations Capitalisation de l expérience en conception de logiciel Catalogue de solutions Nombreuses mises en œuvres dans les langages de programmation Apprentissage Effort de synthèse : reconnaître, abstraire et appliquer Expérience de mise en œuvre Choisir les «bons» Design Patterns à appliquer Mise en œuvre dégradées Nombreuses solutions Composition de patterns Complexité et efficacité du code Beaucoup de couches, beaucoup de classes Fondre les patterns dans le code 37 Design Pattern : Pro et Cons Un niveau d abstraction élevé qui permet d élaborer des constructions logicielles de meilleure qualité Réduction de la complexité par séparation des préoccupations Capitalisation de l expérience en conception de logiciel Catalogue de solutions Nombreuses mises en œuvres dans les langages de programmation Apprentissage Effort de synthèse : reconnaître, abstraire et appliquer Expérience de mise en œuvre Choisir les «bons» Design Patterns à appliquer Mise en œuvre dégradées Nombreuses solutions Composition de patterns Complexité et efficacité du code Beaucoup de couches, beaucoup de classes Fondre les patterns dans le code 38 19

Bibliographie OMG et UML http://www.omg.org/ http://www.uml.org/ Wikipedia http://en.wikipedia.org/wiki/design_pattern_(computer_science) Cours Introduction to Design Patterns, Jean-Marc Jézéquel Design Patterns CS 406 Software Engineering I, Aditya P. Mathur, Purdue University Les Design Patterns d Antoine Beugnard Design Patterns de A. Nauwynck et N. Mellouli 39 20