Objet
|
Prendre en compte les nouveaux éléments du modèle dans l'organisation du modèle de conception.
Rééquilibrer la structure du modèle de conception si nécessaire.
|
Lorsque de nouveaux éléments ont été ajoutés au modèle de conception, le regroupement des éléments du modèle de
conception est souvent nécessaire. Le regroupement permet d'atteindre différents objectifs : il réduit le couplage
entre les packages et améliore la cohésion au sein des packages dans le modèle de conception. Le but ultime étant de
permettre aux différents packages (et sous-systèmes) d'être conçus et développés indépendamment les uns des autres par
des personnes séparées ou des équipes. Même si une indépendance complète est probablement impossible à atteindre, un
couplage souple entre les packages tend à améliorer le développement des systèmes complexes et de grande envergure.
Une structure de modèle 'plate' (où tous les packages et sous-systèmes résident au même niveau conceptuel dans le
système) convient à un petit système ; les systèmes plus volumineux nécessitant un outil de structuration
supplémentaire appelé 'outil d'organisation en couches' (voir Instructions relatives au
produit : Organisation en couches). Les règles d'organisation en couches définissent des restrictions sur des
relations autorisées entre certains types de packages. Ces règles prennent en compte le fait que certaines dépendances
ne devraient pas exister : la fonctionnalité de l'application ne doit pas être directement dépendante de services
spécifiques relatifs au système d'exploitation ou au système de fenêtrage - il doit exister une couche intermédiaire
contenant des services logiques de système d'exploitation et de fenêtrage qui isolent la fonctionnalité de
l'application de changements effectués dans les services d'implémentation de bas niveau. L'organisation en couches
permet de réduire l'impact des changements : en mettant en place des règles qui restreignent les dépendances entre les
packages et les sous-systèmes, réduisant ainsi le degré de couplage entre les packages et les sous-systèmes, le système
devient plus robuste. Il tolère les changements.
Au fur et à mesure que les éléments de modèle sont ajoutés au système, il est possible que les packages existants
soient trop grands pour être gérés par une seule équipe : le package doit être scindé en différents packages avec un
couplage souple entre les packages. Cela peut s'avérer difficile - certains éléments peuvent être compliqués à placer
dans un package spécifique dans la mesure où ils sont utilisés par des éléments des deux packages. Il existe deux
solutions possibles : scinder l'élément en différents objets, un dans chaque package (cela fonctionne lorsque l'élément
a différentes 'personnalités' ou des ensembles de personnalités disjointes), ou déplacer l'élément vers un package dans
une couche inférieure, où tous les éléments de la couche supérieure en dépendront de manière égale.
Au fur et à mesure que le système gagne en complexité, un grand nombre de couches sera nécessaire pour obtenir une
structure gérable et compréhensible. Cependant, même dans les grands systèmes, il est rare d'avoir plus de 7 à 10
couches dans la mesure où la complexité s'accroît et la compréhensibilité diminue avec le nombre de couches.
Ci-dessous figure un exemple d'organisation en couches, comprenant des couches logicielles système et intermédiaires :
Exemple d'organisation en couches d'un package pour une application Java/Web. Remarque : les dépendances sur le package
TCP/IP ne seraient normalement pas explicitement modélisées dans la mesure où l'utilisation de services TCP/IP est
encapsulée au sein de la machine virtuelle Java, java.rmi et le navigateur Web. Les descriptions de cet exemple ne sont
fournies qu'à titre d'illustration.
Affectation de responsabilités pour les sous-systèmes et les couches à des personnes ou des équipes. Chaque package ou
sous-système doit être la responsabilité d'une personne (si sa portée est petite) ou d'une équipe (si sa portée est
grande).
|