CHAPITRE 6: ARCHITECTURE
LOGICIELLE
Dr. Rania MZID
COMMENT STRUCTURER UN PROJET ?
Imaginons un simple exemple : une calculatrice
+FrameCalculatrice()+refreshDisplay+intialiser()+AddCible(calculatrice:Calculatrice)FrameCalculatriceOperationButtonNumericButton+Calculatrice()+ajouter(nombre:integer)+soustraire(nombre:integer)+intialiser()+toString():String+AddObservable(frameCalculatrice:FrameCalculatrice)valeur:integer:0Calculatrice1 uneCalculatriceuneIHM1uneIHM1uneIHM operationButton1..operationButton1..*
CRITIQUES
Un seul diagramme de classes
– impossible pour de gros projets
• exploiter au maximum la notion de modèle (de vue)
La séparation IHM et cœur de métier n’est pas
assez marquée
– mieux séparer les concepts :
• 1 modèle pour l'IHM
• 1 modèle pour le cœur même : la calculatrice
COMMENT STRUCTURER UN PROJET ?
Coeur
IH
M
+FrameCalculatrice()+refreshDisplay+intialiser()+AddCible(calculatrice:Calculatrice)FrameCalculatriceOperationButtonNumericButton+Calculatrice()+ajouter(nombre:integer)+soustraire(nombre:integer)+intialiser()+toString():String+AddObservable(frameCalculatrice:FrameCalculatrice)valeur:integer:0Calculatrice1 uneCalculatriceuneIHM1uneIHM1uneIHM operationButton1..operationButton1..*COMMENT STRUCTURER UN PROJET ?
La définition de la structure d’un projet revient á définir
son architecture logicielle
Advertisement
Le terme architecture d’un
désigne sa
structure en terme de composants, relations entre
composants et relations avec l’environnement
logiciel
Durant la phase de conception, les choix réalisés
représente des contraintes sur l’architecture qui sera
traduites par la suite au niveau du code
COMMENT STRUCTURER UN PROJET ?
L’architecture est une succession d’abstractions
SÉPARATION EN 2 PAQUETAGES
2 couches : 2 paquetages
ModèleCalculatrice:
– Contient tous les éléments
propres à la notion de
calculatrice
IHMCalculatrice
– Tous les éléments liés à
l'IHM
Liés par des liens de
dépendances:
« je peux utiliser tous les éléments du
Advertisement
paquetage qui est ma cible »
IHMCalculatriceModèleCalculatrice
SÉPARATION EN 2 PAQUETAGES
Remarque :
– bannir les dépendances circulaires !
A découper en 2 paquetages
IHMCalculatriceModèleCalculatriceDIAGRAMME DE CLASSES DU PAQUETAGE MODÈLE
Indication du paquetage
d’origine en italique
+FrameCalculatrice()+refreshDisplay+intialiser()+AddCible(calculatrice:Calculatrice)FrameCalculatrice(From IHMCalculatrice)+Calculatrice()+ajouter(nombre:integer)+soustraire(nombre:integer)+intialiser()+toString():String+AddObservable(frameCalculatrice:FrameCalculatrice)valeur:integer:0Calculatrice1 uneCalculatriceuneIHM *LES ARCHITECTURES N-TIERS
Décomposition d’un plusieurs niveaux : horizontale
et/ou verticale
ARCHITECTURE 3-TIERS (MVC)
Passage du modèle 1 au modèle MVC pour une plus grande
maitrise du développement web
Modèle 1 (1-tier) : Tous les traitements sont réalisés dans
un même niveau
Repose sur une séparation en couches (3 couches) des
différents concepts
MVC : Patron de conception (Model-View-Controller)
ARCHITECTURE 3-TIERS (MVC)
Model (Modèle)
Advertisement
Représente le fond du sujet
S’intéresse à la représentation des données de la
couche métier (business logic), i.e. données spécifiques
à l’application
ARCHITECTURE 3-TIERS (MVC)
View (Vue)
Concerne la forme (représentation)
La vue concerne principalement la représentation des données du
modèle à l’écran (ou sur tout autre périphérique de sortie)
Il peut donc exister plusieurs vues
ARCHITECTURE 3-TIERS (MVC)
Controller (Contrôleur)
Gère les interactions avec l’utilisateur
Détermine quels traitements doivent être réalisés
Interface entre le modèle et la vue
ARCHITECTURE 3-TIERS (MVC)
DIAGRAMME DE PAQUETAGE
Officiellement en tant que diagramme avec UML2
Organisation de l’architecture
o Vue structurelle
o Structure hiérarchique et modulaire
Un paquetage
Advertisement
o Contient des diagrammes
(dont d’autres des
paquetages)
Règles de nommage
o Un paquetage = un espace de noms
DIAGRAMME DE PAQUETAGE
Dépendance entre les éléments contenu dans le
paquetages
o Relation « use »
Pas de transitivité entre dépendances
o A dépend de B, qui dépend de C : A ne dépend pas
obligatoirement de C
Stéréotypes de dépendance
o «import »: utilisation sans préfixe des noms des
éléments importés
o « access » : les éléments sont accessibles
o « merge » : fusion de deux paquetages en un seul