Vous êtes sur la page 1sur 18

LOG4430 :

architecture logicielle et
conception avancée
Yann-Gaël Guéhéneuc
Architectures – Partie 2/2
Tiré du cours de Julie Vachon

Département de génie informatique et de génie logiciel


École Polytechnique de Montréal © Guéhéneuc, 2011
Développer un modèle architectural
 Commencer par faire une esquisse de l’architecture
– En se basant sur les principaux requis des cas d’utilisation ; décomposition
en sous-systèmes
– Déterminer les principaux composants requis
– Sélectionner un style architectural
 Raffiner l’architecture
– Identifier les principales interactions entre les composants et les interfaces
requises
– Décider comment chaque donnée et chaque fonctionnalité sera distribuée
parmi les différents composants
– Déterminer si on peut réutiliser un cadriciel existant (réutilisation) ou si on
peut en construire un (réutilisabilité).
 Considérer chacun des cas d’utilisation et ajuster l’architecture pour
qu’il soit réalisable
 Détailler l’architecture et la faire évoluer 2/18
Développer un modèle architectural

 Décrire l’architecture avec UML


– Tous les diagrammes UML peuvent être utiles
pour décrire les différents aspects du modèle
architectural
– Trois des diagrammes UML sont
particulièrement utile pour décrire une
architecture logicielle
• Diagramme de packages
• Diagramme de composants
• Diagramme de déploiement
3/18
Développer un modèle architectural
 Diagramme de packages
– Paquetage = Collection d’éléments de modélisation UML (e.g.,
classes, use cases, etc.) groupés ensemble car liés logiquement
– Il faut essayer de maximiser la cohésion au sein des paquetages
(éléments liés) et minimiser le couplage entre eux
 Dépendance : un paquetage est dépendant d’un autre s’il
l’utilise…
SimpleChat
OCSF
Client <<import>>
Common
Client
Server

4/18
Développer un modèle architectural

 Diagramme de composants
– Offre une vue de haut niveau de l’architecture du
système
– Utilisé pour décrire le système d’un point de vue
implémentation
– Permet de décrire les composants d’un système et les
interactions entre ceux-ci
– Illustre comment grouper concrètement et physiquement
les éléments (objets, interfaces, etc.) du système au sein
de modules qu’on appelle composants

5/18
Développer un modèle architectural
Composant
 Qu’est-ce qu’un composant?
– Unité autonome faisant partie d’un – Granularité ? Un composant peut
système ou d’un sous-système qui représenter quelque chose d’aussi
encapsule un comportement (i.e., fin qu’un objet, comme il peut
implémentation) et qui offre une ou représenter un sous-système
plusieurs interfaces publiques complexe
– Partie constituante d’un système qui – Différence entre composant et
peut être remplacée ou/et réutilisée instance de composant
– Élément d’implémentation (un sous- – Composant : vue de haut niveau
système, un fichier exécutable, une d’un élément logiciel qui compose le
classe d’implémentation (i.e., non système (~classe)
abstraite, etc.) muni d’interface(s) – Instance de composant : le
– Chaque composant est le composant effectivement utilisé
représentant d’une ou plusieurs (~objet)
classes qui implémentent un service – Exemples de composants:
à l’intérieur du système • Binaire exécutable
(<<executable>>), bibliotheque
dynamique/statique (<<librairy>>),
6/18
un fichier à interpréter (<<file>>)…
Développer un modèle architectural
 Les composants et le principe de séparation des
préoccupations
– La séparation des préoccupation est le principe qui assure l’intégrité
fonctionnelle d’un composant
• Chaque composant réalise une, et seulement une fonction au sein du
système, mais peut néanmoins exposer plusieurs méthodes.
Typiquement, chaque composant est défini par une interface qui
constitue son seul moyen d’interagir avec les autres composants
• L’utilisation d’une interface pour communiquer avec les autres
composants du système facilite la maintenance puisqu’on peut alors en
changer l’implémentation sans affecter les autres composants (induit un
couplage plus faible du composant avec le reste du système)
• Les classes d’un composant devrait être vues comme un patron cohésif
qui implémente la fonctionnalité du composant
7/18
Développer un modèle architectural

 Composants et interfaces - Notation


EntréeCmdes
Personne
Commande PaiementComptes

interface requise composant interfaces offertes

Commande
<<provided interfaces>>
EntréeCmdes
PaiementComptes
<<required interface>>
Person
8/18
Développer un modèle architectural

 Composants et relations – notation


– Une flèche de dépendance permet de mettre en relation
des composant via les interfaces requises et fournies
RechercheClient
Système de Repositoire
commande Clients
RechercheClient

(3) dépendance
AccèsProduit (1) composant

AccèsProduit
Système
d’inventaire
(2) interface
9/18
Développer un modèle architectural

 Composants et relations – notation


réservations
Gestionnaire
Planificateur d’horaires
réservations

accèsBD
mise à jour

accèsBD
GUI
mise à jour

Réunions_BD

10/18
Développer un modèle architectural

 Composants – Vue de la structure interne


– Pour montrer la structure interne d’un composant
Magasin
EntréeCmdes
<<delegate>>
:Commande
Personne
Entête :Client
port
EntréeCmdes
LigneCmde
*
Compte

ItemCommandable
<<delegate>>
Assembly :Produit
Compte
11/18
connector
Développer un modèle architectural
 Diagramme de composants MVC

12/18
Développer un modèle architectural

 Exercice à faire : une bouquinerie


– Architecture 3-niveaux (client plus lourd que
dans la version 4-niveaux)
– Architecture 4-niveaux (version web, basée sur
la technologie JSP)

13/18
Développer un modèle architectural

 Construction d’un diagramme de


composants
– Diviser pour régner
– Cohésion forte
– Faible couplage
– Abstraction
– Réutilisabilité
– Réutilisation
– Etc.
14/18
Développer un modèle architectural

 Diagramme de déploiement
noeuds
M2:MachineX
Communication
GPS satellite sans fil
S:Serveur

M1:MachineX
C1:Client TCP/IP lien

C2:Client

15/18
Développer un modèle architectural

 Diagramme de déploiement – exemple 1


internet

Machine de Joe:PC

:Planificateur
Admin:MachineHote
mise à jour
:Gestionnaire
GUI Horaires
réservations

Accès_bd

:Réunions_BD 16/18
Développer un modèle architectural

 Diagramme de déploiement – exemple 2

17/18
Parmi les objectifs d’apprentissage

 Expliquer les objectifs visés par la conception


architecturale
– Décrire le fonctionnement et les caractéristiques de
chacun des styles architecturaux
– Justifier le choix d’une architecture pour la réalisation
d’un logiciel, en tenant compte de ses exigences
fonctionnelles et non fonctionnelles
– Définir ce qu’est un composant
– Expliquer le contenu décrit par un diagramme de
paquetages, de composants et de déploiement (UML)
– Décrire un modèle architectural avec la notation UML
18/18

Vous aimerez peut-être aussi