Vous êtes sur la page 1sur 34

Design patterns

Eléments de conception réutilisables

Badr Hirchoua
badr.hirchoua@gmail.com

06/10/2022
2

Chapitre 2. Introduction aux Patrons de


conception

Design Patterns
3
Plan

I. Définition

II. Rappels sur le génie logiciel

III. Concepts de patrons de conception

IV. Description d’un Design Pattern


4
I. Définition

▪Un design pattern ou patron de conception consiste en un ensemble


d’objets (décrits par des classes) qui forme une solution à un
problème connu et fréquent.

▪Les design patterns répondent à des problèmes de conception de


logiciels dans le cadre de la programmation orientée objet.

▪Ce sont des solutions connues et éprouvées dont la conception


provient de l’expérience des programmeurs.
5
II. Rappels sur le génie logiciel

▪Le génie logiciel touche au cycle de vie des logiciels :


• Analyse du besoin,
• Élaboration des spécifications,
• Conceptualisation,
• Développement,
• Phase de test,
• Maintenance.
6
II. Rappels sur le génie logiciel

▪Caractéristiques d’un bon logiciel

• Validité : remplir exactement les fonctions définies.


• Fiabilité ou robustesse : fonctionner dans des conditions
anormales.
• Extensibilité (maintenance) : facilité de modification ou
d’extension.
• Réutilisabilité : en tout ou en partie.
• Compatibilité : facilité de combinaison avec d’autres logiciels.
7
II. Rappels sur le génie logiciel

• Efficacité : utilisation optimales des ressources matérielles.


• Portabilité : sous différents environnements matériels et logiciels.
• Vérifiabilité : facilité de préparation des procédures de test.
• Intégrité : protéger code et données contre des accès non
autorisés.
• Facilité d’emploi
8
II. Rappels sur le génie logiciel

▪Cycle de vie d’un logiciel: Le cycle de vie désigne toutes les


étapes du développement d’un logiciel, de sa conception à sa disparition.

• Définition des objectifs : Définir la finalité du projet et son inscription


dans une stratégie globale.
• Analyse des besoins et faisabilité : Expression, recueil et
formalisation des besoins et estimation de leur faisabilité.
• Spécification ou conception générale : Élaboration des spécifications
de l’architecture.
• Conception détaillée : Définir précisément chaque sous-ensemble.
• Implémentation : Traduction dans un langage de programmation.
9
II. Rappels sur le génie logiciel

• Tests unitaires : Vérifier que les sous-ensembles sont conformes aux


spécifications.
• Intégration : S’assurer de l’interfaçage des différents éléments
(modules) du logiciel.
• Qualification (ou recette) : Vérification de la conformité du logiciel
aux spécifications initiales.
• Documentation : Informations nécessaires pour l’utilisation du
logiciel et pour des développements ultérieurs.
• Mise en production.
• Maintenance : Actions correctives (maintenance corrective) et
évolutives (maintenance évolutive) sur le logiciel.
10
II. Rappels sur le génie logiciel

•Méthodes d’analyse et de conception orientées objet:


Une bonne conception = l’expérience !!
11
III. Concepts de patrons de conception
▪L’expérience c’est :
• Ne pas réinventer la roue,
• Réutiliser systématiquement des solutions qui ont fait leurs preuves pour
une conception modulaire, réutilisable, adaptable

▪Répétition de certains profils de classes ou collaboration d’objets les


• = design patterns
• = modèle de conception
• = patrons de conception
• = micro-architectures
12
III. Concepts de patrons de conception: Définitions

▪Un patron désigne un modèle, dessin, gabarit, motif, échantillon


▪Un patron de conception capture et extrait la connaissance et
l’expérience liées à un processus de conception orientée objet.
▪Le patron décrit ainsi les classes et les instances qui sont nécessaires
pour résoudre un problème général de conception, dans un contexte
particulier.
▪[GAMMA95] Un patron de conception donne un nom, isole et identifie
les principes fondamentaux d’une structure générale, pour en faire un
moyen utile à l’élaboration d’une conception orientée objet
réutilisable.
13
III. Concepts de patrons de conception: Définitions

▪Chaque patron de conception se consacre à un problème ou à une


solution particulière de conception. Il décrit les circonstances où
s’applique, son adéquation éventuelle à d’autres types de contraintes
de conception, ainsi que les effets résultants de sa mise en œuvre et
les compromis sous-entendus.
14
III. Concepts de patrons de conception: Remarques

▪L’utilisation des Design Patterns intervient en phase de la Conception


détaillée (du cycle de vie du logiciel)
▪Un Design Pattern est indépendant des technologies d’implémentation
sous-jacentes (contrairement aux patrons d’architectures ou
d’implémentation)
▪Idée de réutilisation d’une solution éprouvée concernant une
problématique maintes fois rencontrées
▪Un pattern propose une solution sous la forme d’un diagramme de
classes (notation OMT à l’origine, UML aujourd’hui)
▪Il décrit comment ces classes collaborent entre-elles pour répondre à la
problématique posée.
15
III. Concepts de patrons de conception: Historique

▪Désir de pousser la réutilisation logicielle jusqu'au stade de la


conception
▪Les premiers Design Patterns sont apparus en 1987
▪Groupe d'étude sur les Design Patterns : The Gang of Four, en 1991-92
▪Extension des patterns aux problématiques Web.
16
IV. Description d’un Design Pattern
▪Un design pattern n’est pas uniquement une solution :
• Un nom de Pattern: Permet le référencement et la communication entre
concepteurs
• Un problème à résoudre: Nécessité de savoir quand appliquer le
Pattern, sous quelles conditions et dans quel contexte
• Une solution: Description des éléments participant à la conception de la
solution, leurs relations, leurs responsabilités. La solution reste abstraite et
générique (canevas avec rôles)
• Des conséquences: Permet d’expliciter l’impact du pattern sur la
flexibilité, la portabilité et la réutilisation au sein du projet. Rend compte
des contraintes techniques induites (espace, performances, …)
17
IV. Description d’un Design Pattern

1. Nom et classification
2. Intention (une phrase)
3. Alias (Autres dénominations)
4. Motivation (scénario qui illustre le problème traité)
5. Indication d’utilisation (conditions et contexte d’application)
6. Structure (représentation graphique des classes)
7. Constituants (description des rôles)
18
IV. Description d’un Design Pattern

8. Collaborations (description de la dynamique des classes)


9. Conséquences (contraintes induites, facteurs améliorés)
10. Implémentation (problèmes concernant le codage)
11. Exemple de code
12. Utilisations connues (sur d’autres projets)
13. Patterns proches (liens avec d’autres patterns, différences)
19
IV. Description d’un Design Pattern
1. Nom et classification
– un vocabulaire de référence
2. Intention
– but, raison d’être
– cas ou problèmes particuliers de conception concernés
3. Alias
– autres noms connus
4. Motivation
– scénario qui illustre un cas de conception et montre comment le modèle contribue à la solution.
5. Indications d’utilisation
– cas qui justifient son utilisation,
– situations peu satisfaisantes qui tirent avantage de son utilisation,
– contextes d’utilisation.
20
IV. Description d’un Design Pattern

6. Structure
– modèle de classe,
– (modèle de collaboration).
– (notation OMT à l’origine, UML aujourd’hui)
7. Constituants
– Description des classes et des objets intervenant dans la collaboration
8. Collaboration
– Collaboration entre constituants pour assurer les responsabilités
9. Conséquences
– impacts sur l’architecture de conception
– « degrés de liberté » laissés par le patron
– compromis éventuels
21
IV. Description d’un Design Pattern

10. Implémentation
– techniques particulières
– spécificités du langage de programmation
11. Exemples de code
– extraits de programmes
12. Utilisations remarquables
– exemples appartenant à des systèmes existants
13. Patterns proches
– modèles en étroite relation
– différences importantes
– utilisation conjointe d’autres modèles
22
IV. Description d’un Design Pattern

Les Designs Patterns les plus évolués se basent sur les bonnes
pratiques de la POO et tirent partie principalement de:
– L’abstraction/ Encapsulation
– Héritage
– Du polymorphisme
utilisent très souvent:
– La délégation
– La composition
Notations du langage UML!!
23

Résumé
24
Qu’est-ce qu’un patron de conception ?

▪Les patrons de conception sont des solutions classiques à des problèmes


récurrents de la conception de logiciels. Ce sont des sortes de plans ou
de schémas que l’on peut personnaliser afin de résoudre un problème
récurrent dans notre code.

▪Vous ne pouvez pas vous contenter de trouver un patron et de le


recopier dans votre programme comme vous le feriez avec des
fonctions ou des librairies prêtes à l’emploi. Un patron, ce n’est pas un
bout de code spécifique, mais plutôt un concept général pour résoudre
un problème précis. Vous pouvez suivre le principe du patron et
implémenter une solution qui convient à votre propre programme.
25
Qu’est-ce qu’un patron de conception ?

▪Les patrons sont souvent confondus avec les algorithmes, car ils décrivent
tous deux des solutions classiques à des problèmes connus. Un algorithme
définit toujours clairement un ensemble d’actions qui va vous mener vers
un objectif, alors qu’un patron, c’est la description d’une solution à un plus
haut niveau. Le code utilisé pour implémenter un même patron peut être
complètement différent s’il est appliqué à deux programmes distincts.

▪Un algorithme c’est un peu comme une recette de cuisine, ses étapes sont
claires et vous guident vers un objectif précis. Un patron, c’est plutôt
comme un plan : vous pouvez voir ses fonctionnalités et les résultats
obtenus, mais la manière de l’implémenter vous revient.
26
Que trouve-t-on dans un patron de conception ?
▪La majorité des patrons sont présentés de façon très générale, afin qu’ils
soient reproductibles dans tous les contextes. Voici les différentes sections
que vous retrouverez habituellement dans la description d’un patron :
• L’Intention du patron permet de décrire brièvement le problème et la
solution.
• La Motivation explique en détail la problématique et la solution
offerte par le patron.
• La Structure des classes montre les différentes parties du patron et
leurs relations.
• L’Exemple de code écrit dans un des langages de programmation les
plus populaires facilite la compréhension générale de l’idée derrière le
patron.
27

Le catalogue des
patrons de conception
28
Le catalogue des patrons de conception

▪Patrons de création
• Ces patrons fournissent des mécanismes de création d’objets qui augmentent
la flexibilité et la réutilisation du code.
▪Patrons structurels
• Ces patrons vous guident pour assembler des objets et des classes en de
plus grandes structures tout en gardant celles-ci flexibles et efficaces.
▪Patrons comportementaux
• Ces patrons s’occupent des algorithmes et de la répartition des
responsabilités entre les objets.
29

▪Design Patterns de création


• permettent de résoudre des contraintes de création
• instance unique
• mécanismes de cache
• contrôle des valeurs des instances créées
▪Design Patterns structuraux
• permettent de structurer des problèmes courants
• modélisation d'arbres, de graphes
▪Design Patterns comportementaux
• permettent d'obtenir un comportement spécifique
• personnalisation d'algorithmes
• changement de comportement en cours du cycle de vie
• réaction aux événements
30
Patrons de création Patrons structurels Patrons comportementaux
31
Patrons de création
32

Patrons structurels
33
Patrons comportementaux
34
Patrons comportementaux

Vous aimerez peut-être aussi