Patrons de Conception (Design Patterns)



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

CORBA. (Common Request Broker Architecture)

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

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

Description de la formation

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

NSY102. Conception de logiciels Intranet Introduction

Cours en ligne Développement Java pour le web

Le passage à l échelle de serveur J2EE : le cas des EJB

Chapitre VI- La validation de la composition.

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

NFP111 Systèmes et Applications Réparties

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

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)

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

Chapitre 2 - Architecture logicielle et construction d applications client-serveur

IFT2255 : Génie logiciel

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

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

Classeur de suivi de l auditeur. Architecture et Ingénierie des Systèmes et des Logiciels

Chapitre 1 Windows Server

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

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

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Intergiciel - concepts de base

Analyse,, Conception Objet

Développement d un interpréteur OCL pour une machine virtuelle UML.

Information utiles. webpage : Google+ : digiusto/

Intégration de systèmes

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Architectures n-tiers Intergiciels à objets et services web

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

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

Cours de Génie Logiciel

Environnements de Développement

Compte Rendu d intégration d application

MEAD : temps réel et tolérance aux pannes pour CORBA

Introduction à LDAP et à Active Directory Étude de cas... 37

2 Chapitre 1 Introduction

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Analyse,, Conception des Systèmes Informatiques

UML (Paquetage) Unified Modeling Language

SECTION 5 BANQUE DE PROJETS

Projet Active Object

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Auto-évaluation Aperçu de l architecture Java EE

Messagerie asynchrone et Services Web

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

CQP Développeur Nouvelles Technologies (DNT)

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

Le développement d'applications informatiques

Intégration et Déploiement de Systèmes d Information

Créer et partager des fichiers

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

OCL - Object Constraint Language

Perspectives pour l entreprise. Desktop Cloud. JC Devos IBM IT Architect jdevos@fr.ibm.com IBM Corporation

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

RAPPORT DE CONCEPTION UML :

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

Traduction des Langages : Le Compilateur Micro Java

Université de Bangui. Modélisons en UML

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

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

Conception des systèmes répartis

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

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

GEI 465 : Systèmes répartis

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

Introduction à la plateforme J2EE

Intergiciels orientés composants.

SQL SERVER 2008, BUSINESS INTELLIGENCE

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

Software Engineering and Middleware A Roadmap

18 TCP Les protocoles de domaines d applications

Java - RMI Remote Method Invocation. Java - RMI

Smart Notification Management

Patrons d architecture des Systèmes d Information

Meta Object Facility. Plan

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

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

ECLIPSE ET PDT (Php development tools)

Automatisation de l administration système

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Chapitre I : le langage UML et le processus unifié

Nom de l application

Les diagrammes de modélisation

Mettre en place un accès sécurisé à travers Internet

Architectures Ouvertes pour l Adaptation des Logiciels

Remote Method Invocation (RMI)

Visual Paradigm Contraintes inter-associations

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

RTDS G3. Emmanuel Gaudin

Transcription:

Patrons de Conception (Design Patterns) Introduction 1

Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques bien éprouvées, qui ont déjà montré leur capacité à résoudre des problèmes de développement récurrents Les Patrons de Conception («Design Patterns») sont des canevas («frameworks») qui aident à saisir, spécifier et mettre en œuvre ces techniques éprouvées 2

Observations Les développeurs de logiciel se confrontent à des problèmes qui sont largement indépendants de l application elle même Ex: logiciel réparti problèmes de communication, tolérance aux fautes, gestion de la concurrence, initialisation de services Les bons développeurs résolvent ces problèmes en s appuyant sur les patrons de conception appropriés Par contre, ces patrons de conception ont été traditionnellement : Implicites dans les connaissances des experts Mélangés avec le code source des applications 3

Définition Patron /modèle /motif de conception (design pattern) : une solution réutilisable à un problème récurrent de conception logiciel, dans un certain contexte la documentation d une expérience de conception validée par la spécification d une architecture réutilisable un concept de génie logiciel, associé (la plupart du temps) avec la programmation orientée objet 4

Utilité Aide au développement de logiciels par la réutilisation de l expérience collective des ingénieurs expérimentés en informatique Aide à promouvoir les bonnes pratiques de conception, en capturant les expériences existantes et bien validées en développement logiciel Aide à la gestion de la complexité du logiciel Facilite la communication entre les développeurs 5

Historique Les patrons de conception Tirent leur origine des travaux de l'architecte Christopher Alexander dans les années 70 Formalisés pour la première fois en 1995 dans le livre du «Gang of Four» (GoF) GoF : Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides «Design Patterns - Elements of Reusable Object-Oriented Software» 6

Constitution Un patron de conception est défini par: un Contexte : une situation qui engendre le problème un Problème : le problème récurrent qui apparaît dans ce contexte une Solution : une résolution validée du problème Le patron de conception extrait les aspects statiques et dynamiques de la structure et de la coopération entre les participants clés de la conception d application 7

Sommaire Proxy Usine («Factory») Adaptateur («Adapter») Intercepteur («Interceptor») Chaîne de Responsabilités («Chain of Responsibility») 8

Une très brève introduction à UML Unified Modelling Language Spécification de l OMG (Object Management Group) Langage standard de modélisation d applications à objets: Structure, comportement, architecture, processus métier, structures de données, Plusieurs notations pour plusieurs diagrammes / modèles: Diagramme de cas d utilisation Diagramme de classes Diagramme de séquence Diagramme d activités Diagramme d état... 9

Diagramme de classes Modélise la structure statique de l application: Les classes et les relations entre les classes Qui interagit avec qui? (mais pas comment) classe abstraite généralisation association nom de la classe attributs de la classe méthodes de la classe multiplicité (d une extrémité d une association) > association : une instance d une classe doit connaître une instance de l autre classe > généralisation : un lien d héritage une classe est la super classe de l autre > multiplicité : le nombre d instances de la classe qui peuvent être associés avec une instance de l autre classe 10

Diagramme de séquence Modélise le comportement dynamique de l application : Les objets et les interactions entre les objets Quels messages sont échangés et quand? objet message Les messages sont ordonnés par rapport au temps création d objet barre d activation message ligne de vie («lifeline») destruction d objet 11

Proxy Offre un substitut ou représentant d un autre objet, afin de contrôler l accès à cet objet 12

Proxy Exemples Proxy distant Est le représentant local d un objet situé dans un autre espace d adressage Ex: le Stub de RMI, CORBA, Java EE,.NET, Proxy virtuel Crée des objets coûteux à la demande (lazy loading, caching, ) Ex: reporter la création d un client email jusqu à la première utilisation Ex: utiliser un cache local d images Proxy de protection Contrôle l accès au composant (plusieurs droits d accès sont possibles) Ex: Serveur d Application le traitement d une requête client n est pas démarré si les droits d accès du client sont insuffisants 13

Proxy Contexte Le client a besoin d accéder aux services d un autre composant (ex. objet, base de données, page html ou image) L accès direct est possible du point de vue technique mais sans être la meilleure solution Problème L accès direct à un composant n est souvent pas pratique des procédures additionnelles de contrôle sont nécessaires (ex. authentification, localisation) Le code client doit rester simple et l accès aux composants transparent et efficace Solution Le client communique avec le représentant (proxy) plutôt qu avec le composant Le proxy offre l interface du composant mais exécute des procédures additionnelles avant (pre) et après (post) l invocation du composant 14

Proxy Diagramme de classes UML 15

Proxy Rôles Proxy Offre aux clients l interface de l Original Assure l accès sécurisé, efficace et correct à l Original AbstractOriginal Définit l interface (ou la classe de base) pour l Original et le Proxy Ainsi, le Proxy peut être utilisé à tout endroit où l Original est attendu Original Implémente les services décrits dans l AbstractOriginal Définit l objet réel représenté par le Proxy Client Utilise l interface du Proxy pour requérir les services de l Original 16

Proxy Diagramme de séquence UML 17

Méthode Usine («Factory Method») Fournir une interface pour la création d un objet, mais laisser les sous-classes décider quelle classe instancier Déléguer l'instanciation aux sous-classes 18

Usine («Factory») Exemples : Créer et utiliser des Connecteurs pour communiquer avec les objets distants, en utilisant différents intergiciels (ex : Sockets, RMI ou CORBA) Créer et utiliser des gestionnaires de sauvegarde sans savoir à l avance si le gestionnaire utilisé sera basé sur un système de fichiers ou une base de données 19

Usine («Factory») Contexte Un des buts de l orientation objet est de déléguer la responsabilité du traitement des requêtes entre plusieurs objets Problème Parfois, une application ne peut pas anticiper la classe concrète d objet qu elle doit instancier (seulement l interface ou la classe abstraite) Solution Définir une interface pour créer des objets d un certain type mais laisser les sous-classes décider quel sous-type de classe concrète instancier 20

Usine («Factory») Diagramme de classes UML 21

Usine («Factory») Rôles Product Interface Définit l interface des objets crées par l Usine ConcreteProduct Classe Concrète Implante l interface Product Factory Interface Définit la méthode de création qui retourne un objet de type Product ConcreteFactory Classe Concrète Crée une instance d un ConcreteProduct 22

Usine («Factory») Diagramme de séquence UML création objet utilisation objet destruction objet (optionnel) 23

Adaptateur Transforme l interface d une classe en une autre interface, connue par les clients 24

Adaptateur Exemple Adaptation des logiciels «legacy» pour l intégration dans des nouveaux systèmes Intégration des systèmes hétérogènes CORBA - Portable Object Adapters (POA) Java Connector Architecture (JCA) Resource Adapters 25

Adaptateur Contexte Un service est défini par une interface; les clients appellent le service via cette interface; les servants implantent l interface Problème Réutiliser un servant qui implante une interface non-conforme à l interface attendue par les clients Solution Introduire un composant (adapter ou wrapper) représentant une couche de transformation entre les clients et le servant L adapter intercepte les requêtes et réponses du servant et les adapte de façon à les rendre conformes avec l interface attendue 26

Adaptateur Diagramme de classes UML 27

Adaptateur Rôles Target - Interface Définit l interface utilisée par les clients Client Utilise des objets conformes à l interface Target Adaptee Définit une interface existante qui exige une adaptation Adapter Adapte l interface d Adaptee à l interface Target 28

Adaptateur Diagramme de séquence UML Interface standard Interface spécialisée (non-conforme) 29

Intercepteur Permet l insertion transparente de services dans un canevas et l activation automatique de ces services lors de l occurrence de certains événements. 30

Intercepteur Exemple Surveiller le fonctionnement d une application Remplacer un service de sécurité par un autre Utiliser ou désactiver un service de journalisation (Logging) CORBA Portable Interceptors Aspect-Oriented Programming (AOP) 31

Intercepteur Contexte Développement de canevas extensibles de façon transparente Problème Certains canevas ne peuvent pas anticiper tous les services qu ils doivent offrir aux clients => permettre l intégration de nouveaux services sans avoir besoin de modifier l architecture de base L intégration de nouveaux services ne doit pas affecter les services existants Solution Permettre l extension transparente d un canevas par l enregistrement des services via des interfaces prédéfinies Permettre au canevas de déclencher automatiquement l exécution de ces services lors de l occurrence de certains événements Définir des objets «contexte» qui permettent la transmission de l état interne du canevas aux services 32

Intercepteur Diagramme de classes UML (simplifié) 33

Intercepteur Rôles Interceptor Interface Définit les méthodes de services d interception (appelées automatiquement lors de l occurrence de certains événements) ConcreteInterceptor Classe Concrète Implante un certain service d interception Utilise l objet Context pour connaître son contexte d exécution Dispatcher Classe Concrète Permet l enregistrement et le retrait d Intercepteurs Distribue les appels de méthodes vers les Intercepteurs enregistrés, lors de l occurrence d événements Context Classe Concrète Permet aux services d obtenir des informations sur (ou de modifier) leur contexte d exécution 34

Intercepteur Dynamique Application ConcreteInterceptor1 Dispatcher ConcreteInterceptor2 événement1 événement 2 ConcreteInterceptor3 35

Intercepteur Diagramme de séquence UML 36

Chaîne de Responsabilités Eviter le couplage entre l expéditeur d une requête et son destinataire en donnant à plusieurs objets la possibilité de traiter la requête. Chaîner les objets traitants et faire passer la requête à travers ces objets jusqu à ce qu elle soit traitée. 37

Chaîne de Responsabilités Exemple - transformer le format d un document Faire passer le document initial via plusieurs filtres afin d obtenir le document dans le format final Chaque filtre exécute certaines transformations sur le document entrant et produit un nouveau fichier sortant Un nouveau filtre peut être facilement inséré dans la chaîne Exemple système de sécurité Plusieurs critères possibles pour autoriser l accès Les critères peuvent changer selon la configuration donnée 38

Chaîne de Responsabilités Contexte Le système doit traiter une requête La requête peut être traitée de plusieurs façons (par plusieurs objets) Problème Différents objets peuvent traiter une requête et on ne sait pas a priori lequel L'ensemble des objets pouvant traiter une requête doit être facilement modifiable Solution Isoler les différents parties d un traitement dans différents objets Faire passer la requête via une chaîne d objets (maillons) Chaque maillon peut traiter la requête et/ou la faire passer au maillon suivant 39

Chaîne de Responsabilités Diagramme de classes UML 40

Chaîne de Responsabilités Rôles Handler (Maillon) classe abstraite Définit l interface d un maillon de la chaîne Implante la gestion de la succession des maillons ConcreteHandler sous-classe concrète Définit le comportement d un maillon de la chaîne A la responsabilité d une partie d un traitement de requête Client Appelle le premier maillon dans la chaîne 41

Bibliographie Design Patterns - Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides POSA 1 - Pattern-Oriented Software Architecture A System of Patterns, Vol. 1, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerland, Michael Stal POSA 2 - Pattern-Oriented Software Architecture Patterns for oncurrent and Networked Objects, Vol. 2, Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann POSA 3, POSA 4, POSA 5, 42

Cas d étude Simulation d un serveur d application élémentaire http://infres.enst.fr/~diacones/tp-patterns 43

Objectif Simulation d un serveur d application élémentaire Chaque objet est géré par un conteneur («container») Un conteneur peut utiliser plusieurs services non-fonctionnels (ex: sécurité, journalisation ou supervision) Vue générale d'un containeur 44

Défis L utilisation du conteneur et des services nonfonctionnels doit rester transparente aux clients Les services utilisés par le conteneur doivent pouvoir être changés souvent et facilement Insertion, modification ou retrait des services Changement de l ordre d exécution des services 45

Cas d application Magasin (réutilisation de l application du TP RMI) un client interroge plusieurs magasins (GerantMagasin) sur le prix d un certain produit (ou ingrédient) afin de déterminer le magasin le moins cher (par rapport au produit) Hébergement d'un objet GerantMagasin dans un container 46

Conception (1) Combinaison de trois patrons de conception Chaîne de Responsabilité Chaque appel d une méthode du Magasin passe par une chaîne de maillons (proxies) Ex: Un maillon pour le service de sécurité, un maillon pour la journalisation et un pour la supervision Proxy Le container, ainsi que chaque maillon de la chaîne d interception implantent l interface Magasin la même interface implantée par le GerantMagasin Intercepteur Chaque service non-fonctionnel est implanté par un intercepteur Chaque maillon joue le rôle d un Dispatcher pour un certain type d intercepteur 47

Conception (2) Conception du container du GerantMagasin 48

Implantation Squelette du code source disponible www.infres.enst.fr/~diacones/tp-patterns/interceptor-tp-project.zip Code de l application Magasin: Réutilisation du code du TP RMI (mises à jour mineures) Paquet shop Code du conteneur et des services Paquet container 49

Travaux Pratiques 1. Reconfiguration du serveur Utilisation d un fichier de configuration 2. Utilisation du service de sécurité Modification de l authentification client Modification du service de sécurité 3. Implantation des services d interception Développement des services de supervision et de journalisation Transmission de paramètres par le Context du container 4. Extension de la chaîne d interception Implantation et introduction d un nouveau service non-fonctionnel 50