Académique Documents
Professionnel Documents
Culture Documents
et Design Patterns
Introduction
I. Mouakher
PRÉSENTATION DU COURS
2
Objectifs du cours
Présenter les styles et les patrons
d’architecture et de conception logicielle
en mettant l’emphase sur les systèmes
distribués
3
Evaluation du cours
Charge totale : 31.5
Evaluation du cours
Examen 60%
Devoir 30%
Note présentielle 10%
4
Plan du cours
Introduction
Concepts de base
Patron de conception Gof
Creational patterns
Structural patterns
Behavioral patterns
5
CONCEPTS DE BASES
6
L’architecture et la conception
dans le domaine immobilier
7
L’architecture et la conception
dans le domaine immobilier
8
QU’EST-CE QUE L’ARCHITECTURE?
QU’EST-CE QUE LA CONCEPTION?
9
Architecture logicielle
(ANSI/IEEE Std 1471-2000)
L’architecture d’un système logiciel est
définie comme l’organisation
fondamentale du système, qui s’incarne
dans ses composantes, leurs relations
entre elles et avec leur environnement, et
les principes qui guident sa conception et
son évolution.
10
Architecture logicielle (définition
SEI)
L’architecture d’un système logiciel est
l’ensemble des structures nécessaires
pour raisonner à propos du système, qui
comprennent les éléments logiciels, les
relations entre eux et les propriétés des
chaque.
11
Architecture logicielle (définition
Sangwan, 2015)
L’architecture d’un système logiciel se
préoccupe fondamentalement de
l’organisation d’un système en ses
constituants et leurs interrelations afin de
réaliser un objectif donné.
12
Architecture
Elle répond à « quoi? ».
Au niveau modèle
Paquetages, composantes et relations
Niveau de décision plus abstrait.
Les décisions qui doivent être prises en avance.
Les décisions qui sont très couteuses à changer pendant le
développement.
Pertinente pour les objectifs opérationnels et les exigences
nonfonctionnelles.
Elle inclut:
Modules
Bases/technologies de données
Environnement d’exécution et de déploiement
13
Conception
Elle répond à « comment? ».
Comment on va implémenter l’architecture.
Éléments plus concrets:
Classes
Méthodes/Fonctions
Tables de données
Pertinent pour les exigences fonctionnelles.
Éléments qui peuvent être changés pendant le
développement (la phase de maintenance)
Réingénierie (refactoring)
Évolution
Adaptation 14
Exercice
On vous présente des exemples d’énoncé
que vous pouvez rencontrer durant les
premières phases de cycles de
développement de logiciel. Pour chacun
d’entre eux on vous demande d’identifier
si l’énoncé est pertinent à l’architecture ou
à la conception
15
Énoncé 1
On veut une couche de GUI, une couche
d’analyse et une couche de stockage des
données
16
Énoncé 1
On veut une couche de GUI, une couche
d’analyse et une couche de stockage des
données
Architecture
L’énoncé réfère aux modules de haut niveau,
tels que les couches.
17
Énoncé 2
Toutes les nouvelles applications doivent
étendre l’interface Application.
18
Énoncé 2
Toutes les nouvelles applications doivent
étendre l’interface Application.
Conception
L’énoncé réfère à un détail d’implémentation. Il
requiert des modifications au niveau de la
classe.
19
Énoncé 3
L’application sera disponible comme un
service déployé en infonuagique.
20
Énoncé 3
L’application sera disponible comme un
service déployé en infonuagique.
Architecture
L’énoncé réfère à l’environnement
d’exécution/déploiement de l’application.
21
Énoncé 4
On a besoin d’une base de données
NoSQL avec un taux de disponibilité
élevé.
22
Énoncé 4
On a besoin d’une base de données
NoSQL avec un taux de disponibilité
élevé.
Architecture
L’énoncé réfère à une couche/niveau spécifique
de l’application. Il mentionne aussi une
exigence non-fonctionnelle. NoSQL est une
technologie spécifique, mais pas une
implémentation particulière.
23
Énoncé 5
Une méthode prend le type d’un objet
comme paramètre et retourne une
instance de ce type en appelant le
constructeur privé de la classe
correspondante.
24
Énoncé 5
Une méthode prend le type d’un objet
comme paramètre et retourne une
instance de ce type en appelant le
constructeur privé de la classe
correspondante.
Conception
L’énoncé réfère à un détail d’implémentation. Il
requiert des modifications au niveau de la
classe. Il mentionne aussi un patron de
conception (Singleton). 25
PATTERNS
26
Réutilisation en informatique
Réutilisation de code métier
Sous la forme de bibliothèques / composants
À acheter / fabriquer
28
Patron d'architecture
Un patron d'architecture est la meilleure solution
connue à un problème d'architecture récurrent. Il
apporte des solutions sur la manière de
concevoir l'organisation à grande échelle
(architecture) d'un logiciel en faisant abstraction
des détails. Il concerne la structure générale
d'un logiciel, sa subdivision en unités plus
petites, comporte des guides de bonnes
pratiques et des règles générales qui ne
peuvent pas être traduites directement en code
source5. 29
Patron de conception
Un patron de conception est la meilleure
solution connue à un problème de conception
récurrent.
Le patron de conception suggère un
arrangement, une manière d'organiser des
modules ou des classes. Il décrit une
organisation de classes fréquemment utilisée
pour résoudre un problème récurrent. Le patron
de conception parle d'instances, de rôles et de
collaboration.
30
Idiotisme de programmation
L'idiotisme de programmation est une construction
spécifique à un langage de programmation, qui est une
manière usuelle de mettre en œuvre une solution à un
problème dans ce langage de programmation. Par
exemple pour effectuer cent fois une opération, un
programmeur en langage C utilise les instructions for (i =
0; i < 100; i++) pour sa ligne de code. L'utilisation d'un
idiotisme par le programmeur lui évite d'avoir à remettre
en question la structure détaillée du programme et
améliore la qualité du produit5.
31
Patrons architecturaux vs patrons
de conception
Patrons architecturaux : Structuration globale en paquetages;
Couches, MVC, Client-serveur, Multi-tiers, ...
Patrons de conception : Structuration détaillée en classes
Attributs et opérations des classes : qui doit savoir, qui doit faire ?
Relations entre classes : délégation, héritage, réalisation, ... ?
32