Introduction au patrons de conception « Design patterns »

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
MOT Éditeur de modèles de connaissances par objets typés
Réalisation d’un Framework pour la création de jeux d'arcades
6 — Aperçu du processus unifié
Génie Logiciel 2 Julie Dugdale
Julie Dugdale Génie Logiciel 2 Julie Dugdale
Affichage interactif, bidimensionnel et incrémental de formules mathématiques Hanane Naciri et Laurence Rideau INRIA Sophia Antipolis CARI'2000.
Classe : …………… Nom : …………………………………… Date : ………………..
Patterns & Anti Patterns
Projet n°4 : Objecteering
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
UML - Présentation.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Génération interactive dimages projectives : Application à la Radiothérapie Pierre BLUNIER Du 01/12/2002 au 28/03/2003 Centre Léon Bérard.
Les Ateliers de Génie Logiciel
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Développement d’applications web
1- Accueil et introduction Cours MGP Accueil et introduction Gilles Corriveau Maîtrise en Gestion de Projet UQTR Automne 1998.
Etude des Technologies du Web services
Interaction Homme Robot Sujet « 16/03/2012 » Réalisé par :
XML-Family Web Services Description Language W.S.D.L.
Principes de la technologie orientée objets
Introduction to Information Systems
Application des algorithmes génétiques
le profil UML en temps réel MARTE
II. Chaînage, SDD séquentielles
Serveurs Partagés Oracle
Introduction à la conception de Bases de Données Relationnelles
Révision Les principes SOLID.
La voyage de Jean Pierre
Configuration de Windows Server 2008 Active Directory
Patterns et maintenabilité dans lindustrie : un cas concret Christophe Saint-Marcel Silicomp Ingénierie.
Journées Pattern Grenoble - 1 Une expérience à l'IUT de Bayonne : Les patrons Composite et Interprète Philippe Lopistéguy I.U.T. de Bayonne-Pays.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
SYSTEMES D’INFORMATION
SCIENCES DE L ’INGENIEUR
MOT Éditeur de modèles de connaissances par objets typés
Ecaterina Giacomini Pacurar
Design Patterns Factory Method – Pattern de construction [DANT] Génie Logiciel 1.
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
Conception des Réalisé par : Nassim TIGUENITINE.
SEG2505 – Introduction au Génie Logiciel Plan de cours – Automne 2012.
Proxy et plus Cnam Paris jean-michel Douin, douin au cnam point fr
Journées Patterns, Grenoble, 3-4 Avril 2003 DR /AC/JPGpage 1 Agnès Conte Département Informatique - IUT2 Grenoble Transparents issus dune présentation.
Sensibilisation a la modelisation
Patrons de conceptions de créations
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Le workflow Encadré par: M . BAIDADA Réalisé par: ATRASSI Najoua
‘‘Open Data base Connectivity‘‘
ANALYSE METHODE & OUTILS
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
Supports de formation au SQ Unifié
Présente Conception d’un petit site Web. 2 4-nov-03© Préambule Cette présentation fait suite à celle intitulée « Imaginer, concevoir, mettre.
Institut Supérieur des Sciences Appliquées et de Technologie Sousse
Algorithmique et programmation (1)‏
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Initiation à la conception des systèmes d'informations
IFT 785 Approches Orientée Objets Plan de cours. Information générale Professeur : – Sylvain Giroux –
Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
Introduction à la Programmation Orientée Objet
31/05/2007Projet Master 11 Présentation ludique de la recherche opérationnelle à la fête de la science Année universitaire 2006/2007 Sylvain FIX Julien.
INSTITUT SUPERIEURE D’INFORMATIQUE Design Pattern
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Transcription de la présentation:

Introduction au patrons de conception « Design patterns » Génie Logiciel Introduction au patrons de conception « Design patterns » Daniel.Bardou et Julie Dugdale @upmf-grenoble.fr

Sommaire Qu'est ce qu'un patron? Pourquoi les utiliser? Historique des patrons logiciels Types de patrons logiciels Types de patrons de conception Création, Structure, Comportement Un exemple de patron de comportement Templates de patron Avantages et désavantages d'utiliser des patrons Master ICA

Qu'est ce qu'un patron de conception? L'utilisation actuelle vient des travaux de l'architecte Christopher Alexander Alexander a étudié les manières d'améliorer le processus de conception de bâtiments et des zones urbaines “Chaque patron est une règle en 3 parties, qui exprime une relation entre un certain contexte, un problème et une solution.” La définition habituelle d'un patron est : “Une solution à un problème dans un contexte.” Les patrons peuvent être utilisés dans de nombreux domaines différents, y compris le développement logiciel. Master ICA

Pourquoi utiliser les patrons? "Concevoir un logiciel orienté-objet est difficile, et concevoir un logiciel orienté-objet réutilisable est encore plus difficile." - Erich Gamma Les concepteurs expérimentés réutilise des solutions qui ont fonctionné dans le passé Les systèmes orientés-objet bien structurés suivent des patrons récurrents pour les classes et objets Les patrons qui ont fonctionné dans le passé permettent d'être plus productif. Les conceptions qui en résultent sont plus flexibles et réutilisables. Master ICA

Devenir un champion aux échecs Apprendre à développer un bon logiciel est similaire à apprendre à bien jouer aux échecs. D'abord apprendre les règles Par exemple le nom des pièces, les mouvements permis, la géométrie de l'échiquier, etc. Puis apprendre les principes Par exemple la valeur relative de certaines pièces, la valeur stratégique des emplacements centraux, etc. Cependant, pour devenir un champion aux échecs, il faut étudier le jeu d'autres champions Ces jeux contiennent des patrons qui doivent être compris, mémorisés, puis appliqués de manière répétée. Il y a des centaines de patrons Master ICA

Devenir un champion du développement logiciel D'abord apprendre les règles c.a.d. les algorithmes, les structures de données, UML, les langages de programmation, etc. Puis apprendre les principes Par exemple la programmation structurée, la conception UML, la programmation orientée-objet, la programmation générique, etc. Mais pour devenir un champion de la conception logicielle, il est important d'étudier la conception d'autres champions Ces conceptions contiennent des patrons qui doivent être compris, mémorisés, et appliqués de manière répétée. Il y a des centaines de patrons Master ICA

Historique des patrons logiciels 1987 - Cunningham et Beck utilisent les idées d'Alexander pour développer un petit langage de patrons pour Smalltalk 1990 – Le Gang des 4 (« Gang of Four » : Gamma, Helm, Johnson and Vlissides) commence à travailler à la compilation d'un catalogue de patrons de conceptions 1991 - Bruce Anderson donne le premier workshop de Patrons au OOPSLA 1993 - Kent Beck et Grady Booch sponsorisent la première réunion de ce qui est maintenant connu comme le groupe Hillside http://www.hillside.net/ 1995 - Le Gang des 4 (GoF) publie le livre des Patrons de conception Master ICA

Types de patrons logiciels Riehle et Zullighoven dans “Understanding and Using Patterns in Software Development” mentionnent trois types de patrons logiciels 1. Patrons conceptuels Patrons dont la forme est décrite par les termes et concepts du domaine d'application 2. Patrons de conception Patrons dont la forme est décrite par les éléments de construction de conception logicielle (par exemple objets, classes, héritage et aggrégats)‏ 3. Patrons de programmation Patron dont la forme est décrite par les éléments de construction du langage de programmation Master ICA

Gang des 4 – Patrons de conception Le premier livre sur les patrons de conceptions était : ‘Design Patterns’ par Erich Gamma, Richard Helm, Ralph Johnson, et John Vlissides’ - Connus comme le Gang des 4 (‘Gang of Four’)‏ Les patrons de conception sont : « Descriptions d'objets et de classes communicantes qui sont adaptées à la résolution d'un problème général de conception dans un contexte particulier » Chaque patron de conception décrit un ensemble d'objets et de classes communicants. Master ICA

Gang des 4 – Patrons de conception Dans leur livre, le Gang des 4 a défini 23 patrons de conception fondamentaux Les patrons sont regroupés en 3 catégories Master ICA

Classification du GoF pour les patrons de conception   Classification du GoF pour les patrons de conception But – (les 3 types de patrons de conception) 1. Patrons de création Concernent le processus de la création d'objets Les patrons de création aident à créer des objets pour vous, au lieu d’avoir à instancier les objets directement. 2. Patrons de structure Concernent la composition de classes et d'objets Les patrons de structure aident à composer des groupes d’objets en des structures plus larges, telles que des interfaces utilisateur complexes. 3. Patrons de comportement Concernent l'interaction des classes et des objets Les patrons de comportement aident à définir la communication entre les objets du système et définir comment le flux est controlé. Master ICA

Un exemple Un patron de comportement appelé ‘Chaine de responsabilité’ Le patron concerne la relation entre l'ensemble des objets et une requête. Le patron est utilisé quand plusieurs objets peuvent gérer une requête Le premier objet sur la chaine reçoit la requête : Il la résout ..ou la passe au prochain objet de la chaine Master ICA

Chaine de responsabilité Les restaurants travaillent de cette manière : Un client ne passe pas une requête directement au chef A la place, un client passe une requête à un serveur, qui peut la passer à un sous-chef (chaine de responsabilité)‏ Les participants à ce patron : client, un handler abstrait Des handlers concrets (fils du handler abstrait) Master ICA

Chaine de responsabilité Le client initie une requête Si un 'handler concret' peut gérer la requête, il le fait Sinon, il la passe vers le prochain handler Client Handler handleRequest()‏ HandlerConcret1 HandlerConcret2 Successeur La structure du patron de conception «chaine de responsabilité » Master ICA

Chaine de responsabilité Idée : libérer un objet du besoin de savoir quel autre objet remplit sa requête Interface du handler abstrait pour gérer les requêtes Client Employé handleRequest()‏ Serveur Sous-Chef Successeur Chef Association reflexive : possibilité que le handler implémente le successeur – pour trouver leurs propres successeurs (représenté comme classe d'association)‏ Client: envoie une requête Le patron de conception de la 'chaine de responsabilité' appliqué au problème du restaurant Handler Concret Master ICA

Un autre exemple où le patron de la chaine de responsabilité peut être utilisé Considérons un aide contextuelle pour une interface utilisateur graphique L'utilisateur clique sur le bouton d'aide La requête d'aide est gérée par l'un objet parmi plusieurs objets de l'interface utilisateur, mais quel sera cet objet dépend du contexte et de la spécificité de l'aide disponible. Le problème est que l'objet qui fournit l'aide n'est pas connu par l'objet qui demande de l'aide. Master ICA

Chaine de responsabilité Utilisez la chaine de responsabilité quand : Plus d'un objet peut gérer une requête, et quel objet peut gérer une requête donnée n'est pas connu d'avance. Nous voulons passer une requête vers l'un de plusieurs objets sans spécifier le destinataire explicitement. L'ensemble des objets qui peuvent gérer une requête devrait être spécifié dynamiquement. Master ICA

D'autres patrons... Master ICA

Patrons de création Fabrique Fabrique abstraite Monteur Prototype Une méthode dans une classe dérivée créé les instances associées Fabrique abstraite Fabrique pour construire des objets liés Monteur Fabrique pour construire des objets complexes de manière incrémentale Prototype Fabrique pour cloner de nouvelles instances d'un prototype Singleton Fabrique pour n'avoir qu'une seule et unique instance Master ICA

Patrons de structure Adaptateur Un traducteur qui adapte une interface de serveur pour un client Pont Découpler l'interface d'une classe et son implémentation Objet composite Structure pour construire des aggrégats récursifs Décorateur Etend un objet de manière transparente Façade Façade simplifie l'interface pour un sous-système Poids-mouche De nombreux objets partagés efficacement Proxy Un objet est l'approximation d'un autre Master ICA

Patrons de comportement Chaine de responsabilité Requête déléguée au fournisseur de service responsable Commande Requête comme objet de première classe Interpréteur Interpréteur de langage pour une petite grammaire Itérateur Eléments d'un agrégat sont atteints séquentiellement Médiateur Médiateur coordonnes les interactions entre ses associés Memento Une photo qui capture et restaure des états d'objets Observateur Les observateurs sont mis au courant des changements des observés Etat Object dont le comportement dépend de son état Stratégie Abstraction pour la sélection d'un parmi plusieurs algorithmes Patron de méthode Algorithme avec des pas fournit par une classe dérivée Visiteur Opérations appliquée aux éléments d'une structure d'objet hétérogène Master ICA

Les parties essentielles des patrons de conception d'après le Gang of 4 Nom de patron Un nom court et parlant améliore la communication entre développeurs Problème Quel est le problème et le contexte pour lesquels nous utiliserions ce patron? Quelles sont les conditions pour l'utilisation de ce patron? Solution Une description des éléments constituant le patron de conception Conséquences Le pour et le contre de l'utilisation du patron Inclus les impacts sur la réutilisabilité, la portabilité et l'extensibilité Master ICA

Le template de patron du Gang des 4 Nom et classification du patron Un nom concis et le type du patron Intention Une explication courte de ce que fait le patron Alias Autres noms du patron Motivation Un scénario illustrant quand le patron serait utile Applicabilité Situations où le patron peut être utilisé Master ICA

Le template de patron du Gang des 4 (suite) Structure Une représentation graphique du patron Participants Les classes et objets participant au patron Collaborations Comment les participants interagissent pour gérer leurs responsabilités? Conséquences Le pour et le contre de l'utilisation du patron? Implémentation Conseils et techniques pour l'implémentation du patron Master ICA

Le template de patron du Gang des 4 (suite et fin) Echantillon de code Fragments de code pour un échantillon d'implémentation Utilisations connues Exemples du patron dans des systèmes réels Patrons liés Autres patrons qui sont liés de manière proche à ce patron Master ICA

Bénéfices des patrons de conception Capturent l'expertise et la rendent accessible à des non-experts Réduisent le temps de développement Facilitent la communication entre les développeurs en fournissant un langage commun Facilitent la réutilisation réussie de conceptions Améliorent la documentation de conception AméIiorent la compréhensibilité des conceptions Master ICA

Désavantages des patrons Les patrons sont simplistes, mais ils doivent être appliqués à votre problème Utiliser des patrons requiert la capacité de faire le lien entre un patron et votre problème! Les patrons sont validés par l'expérience, plutôt que par des tests automatiques Master ICA

Références Design Patterns: Elements of Reusable Object- Oriented Software, Gamma, Helm, Johnson and Vlissides, Addison-Wesley, 1995 Le Gang des 4! A lire! http://fr.wikipedia.org/wiki/Patron_de_conception Master ICA

C'est tout pour aujourd'hui ! Master ICA