Principes et conseils : Organisation des calques
Rubriques
L'organisation des calques permet un partitionnement logique des sous-systèmes dans un certain nombre d'ensembles et comprend certaines règles sur la formation des relations
entre les calques. L'organisation des calques offre un moyen de limiter les dépendances entre les sous-systèmes, avec pour résultat, un système plus librement couplé et par conséquent, plus facile à gérer.
Les critères de regroupement des sous-systèmes sont basés sur quelques patterns :
- Visibilité. Les sous-systèmes ne peuvent dépendre que de sous-systèmes appartenant au même calque et au calque inférieur suivant.
- Volatilité.
- Dans les calques de niveau supérieur, placez les éléments qui varient lorsque les exigences de l'utilisateur changent.
- Dans les calques de niveau inférieur, placez les éléments qui varient lorsque la plate-forme d'implémentation (matériel, langue, système d'exploitation, base de données, etc.) change.
- Au centre, placez les éléments généralement applicables à de vastes gammes de systèmes et d'environnements d'implémentation.
- Ajoutez des calques lorsque des partitions supplémentaires au sein de ces vastes catégories permettent d'organiser le modèle.
- Généralité. Les éléments de modèle abstraits tendent à être placés au niveau inférieur du modèle. S'ils ne sont pas spécifiques à l'implémentation, ils tendent à graviter vers les calques du centre.
- Nombre de calques. Pour un système de petite taille, trois calques suffisent.
Pour un système complexe, 5 à 7 calques sont généralement suffisants. Pour tout degré de complexité, un nombre supérieur à 10 calques doit être considéré avec une attention particulière, qui augmente avec le nombre de calques. Quelques règles empiriques sont présentées ci-dessous :
# classes |
# calques |
0 - 10 |
Aucune mise en calque requise |
10 - 50 |
2 calques |
25 - 150 |
3 calques |
100 - 1000 |
4 calques |
Les sous-systèmes et les packages d'un calque particulier doivent uniquement dépendre de sous-systèmes appartenant au même calque et au calque inférieur suivant. L'incapacité à restreindre les dépendances de cette manière entraîne une dégradation architecturale et rend le système fragile et difficile à gérer.
Les exceptions incluent des cas où les sous-systèmes nécessitent un accès direct aux services du calque inférieur : une décision consciencieuse doit être prise quant au mode de traitement des services primitifs requis dans le système, tels que l'impression, l'envoi de messages, etc. Il est inutile de restreindre les messages aux calques inférieurs si la solution consiste à implémenter de manière efficace des fonctions d'intercommunication d'appels dans les calques intermédiaires.
Dans les calques supérieurs du système, un partitionnement supplémentaire permet d'organiser le modèle. Les principes et conseils suivants relatifs au partitionnement présentent différentes questions qu'il convient de considérer :
- Organisation des utilisateurs. Les sous-systèmes peuvent être organisés le long de lignes qui reflètent la structure des fonctionnalités de l'organisation commerciale (ex. : le partitionnement se produit le long de lignes de services). Ce partitionnement se produit souvent au stade préliminaire de la conception, car un modèle d'entreprise existant comporte une structure organisationelle fortement partitionnée. Ce pattern organisationnel n'affecte généralement que les quelques calques de niveau supérieur des services spécifiques aux applications et disparaît souvent à mesure que la conception évolue.
- Un partitionnement le long de lignes de l'organisation des utilisateurs peut constituer un excellent point de départ pour le modèle.
- La structure de l'organisation des utilisateurs n'est pas stable sur une longue période de temps (en raison de la réorganisation commerciale) et ne représente pas une base à long terme satisfaisante pour le partitionnement du système. L'organisation interne du système doit permettre l'évolution du système et sa gestion, indépendamment de l'organisation de l'activité qu'il soutient.
- Domaines de compétences et/ou aptitudes. Les sous-systèmes peuvent être organisés pour diviser les responsabilités des composants du modèle en plusieurs groupes au sein de l'organisation de développement. En règle générale, cette division se produit dans les calques centraux et inférieurs du système, et reflète le besoin d'une spécialisation des compétences lors du développement et d'un support des technologies infrastructurelles complexes. Parmi ces technologies, on distingue la gestion des réseaux et de la distribution, la gestion des bases de données, la gestion des communications et le contrôle des processus, entre autres. Le partitionnement le long des lignes de compétences peut également se produire dans les calques supérieurs, où la compétence interne dans le domaine de problème est nécessaire pour comprendre et appuyer les fonctionnalités clés de l'activité, comme par exemple, la gestion des appels de communication, le traitement des titres, des déclarations de sinistre et le contrôle du trafic aérien, pour n'en nommer que quelques unes.
- Distribution du système. Dans l'un des calques du système, les calques peuvent être ultérieurement partitionnés "horizontalement" pour refléter la distribution physique des fonctionnalités.
- Le partitionnement comme reflet de la distribution permet de visualiser les communications réseau qui sont établies lors de l'exécution du système.
- Toutefois, il peut entraver les modifications du système
si le modèle de déploiement change de manière significative.
- Domaines secrets. Certaines applications, notamment celles nécessitant des contrôles de sécurité spéciaux pour le développement et/ou le support, exigent un partitionnement supplémentaire le long de lignes de privilèges d'accès sécurisé. Un logiciel contrôlant l'accès aux domaines secrets doit être développé et géré par un personnel disposant des autorisations appropriées.
Si le nombre de personnes impliquées dans le projet et correspondant à ce profil est limité, les fonctionnalités exigeant des autorisations spéciales doivent être partitionnées dans des sous-systèmes qui seront développés indépendamment des autres sous-systèmes, les interfaces avec les domaines secrets constituant le seul aspect visible de ces sous-systèmes.
- Domaines de variabilité. Les fonctionnalités susceptibles d'être facultatives, et par conséquent fournies dans certaines variantes du système uniquement, doivent être organisées dans des sous-systèmes indépendants, qui sont développés et fournis indépendamment des fonctions obligatoires du système.
| |
|