Concept: Spécification de composant
La spécification de composant représente une description et une représentation d'un ensemble de composants de logiciel et de matériel spécifiques qui composent le système.
Relations
Description principale

Introduction

En passant du niveau d'analyse au niveau de conception de l'architecture, il convient de déterminer la conception des composants matériels et logiciels. Cette spécification de niveau conception est constituée des composants à déployer : matériels, logiciels et travailleurs.

Les composants matériels sont déterminés en analysant les localisations, leurs caractéristiques dérivées et les opérations de sous-systèmes hébergées. Le résultat de cette analyse permet de sélectionner les réalisations des localisations au niveau du descripteur. Les diagrammes de noeud de descripteur spécifient les composants, les serveurs, les postes de travail, les travailleurs etc. sans choix particulier des technologies implémentant ces composants. La figure ci-dessous est un exemple de diagramme de noeud Descripteur qui réalise le diagramme Localisation dans Concept : Localisation. La distribution Localisation comprend quatre composants : une passerelle d'entrepôt de données, un système de messagerie/publipostage et deux travailleurs.

Les caractéristiques des noeuds Descripteur proviennent de leurs localisations via un processus d'affectation ou de budgétisation.

Diagramme décrit dans le texte d'accompagnement.

Matériel

Les composants matériels d'implémentation, c'est-à-dire l'ensemble de matériels déployé, sont déterminés en faisant des compromis en termes de coût/performance/capacité à partir de la vue Descripteur. En fait, un système peut avoir plusieurs configurations matérielles, chacune répondant à des exigences différentes en termes de prix et de performance. 

Logiciels

Les composants sont déterminés en spécifiant un ensemble de classes puis en compilant et en assemblant le code associé à ces classes dans des fichiers exécutables. Une conception de composants logiciels complète doit refléter différentes préoccupations : 

  • Localisation — emplacement où les composants doivent s'exécuter
  • Hébergement — ensemble d'instructions processeur et limitations de mémoire pour le code d'exécution
  • Accès concurrent — séparation du traitement en différents hôtes ou espaces mémoire pour répondre aux exigences de fiabilité et questions associées

Il s'ensuit que les informations nécessaires pour spécifier les composants comprennent l'analyse des opérations du sous-système hébergé pour les localisations et leurs composants matériels réalisés, l'analyse des opérations exécutées pour les processus, ainsi que les collaborations réalisant les opérations du sous-système, qui renvoient l'ensemble des classes nécessaires à la constitution d'une structure de composants.

Supposez tout d'abord que toutes les classes soient dans un seul composant, le mappage composant/sous-système se faisant alors dans une relation un à un — c'est la suggestion par défaut que vous trouverez dans Instructions relatives au produit : Sous-système de conception. Cherchez ensuite les raisons de subdiviser davantage le composant. Si un ensemble de classes contient plusieurs classe actives, qui représentent un processus, envisagez alors de créer une classe active (processus) par composant, en reliant ces classes avec des relations fortes. Certaines classes peuvent ainsi être utilisées par de multiples composants. Si l'une de ces classes représente un état partagé dans un ensemble commun d'instances auxquelles plusieurs composants doivent accéder, il y a alors matière à les séparer en composants distincts. Si les classes partagées n'ont pas d'état et sont fonctionnellement cohésives, vous pouvez choisir de les séparer en un composant de service (un composant fonctionnel sans état). Même dans un sous-système passif (sans classes actives), vous pouvez choisir de les diviser encore, par exemple pour rechercher des composants plus détaillés qui sont réutilisables. Terminez le processus en séparant/divisant davantage les composants afin de représenter des choix spécifiques de technologie (comme la plateforme J2EE, ou Microsoft .NET), les contraintes de mémoire (par exemple, choix entre .exe et .dll), les limites de livraison de supports, etc. 

Toutes ces tâches ont pour résultat un ensemble de composants logiciels et matériels spécifiques qui composent le système.