Architecture basée sur les composants

L'architecture basée sur les composants se concentre sur la décomposition de la conception en composants fonctionnels ou logiques individuels qui représentent des interfaces de communication bien définies contenant des méthodes, des événements et des propriétés. Il fournit un niveau d'abstraction plus élevé et divise le problème en sous-problèmes, chacun associé à des partitions de composant.

L'objectif principal de l'architecture basée sur les composants est de garantir component reusability. Un composant encapsule la fonctionnalité et les comportements d'un élément logiciel dans une unité binaire réutilisable et auto-déployable. Il existe de nombreux frameworks de composants standard tels que COM / DCOM, JavaBean, EJB, CORBA, .NET, les services Web et les services de grille. Ces technologies sont largement utilisées dans la conception d'applications GUI de bureau locales telles que les composants graphiques JavaBean, les composants MS ActiveX et les composants COM qui peuvent être réutilisés simplement par glisser-déposer.

La conception logicielle orientée composants présente de nombreux avantages par rapport aux approches orientées objet traditionnelles telles que -

  • Réduction du temps de mise sur le marché et des coûts de développement grâce à la réutilisation des composants existants.

  • Fiabilité accrue grâce à la réutilisation des composants existants.

Qu'est-ce qu'un composant?

Un composant est un ensemble modulaire, portable, remplaçable et réutilisable de fonctionnalités bien définies qui encapsule sa mise en œuvre et l'exporte en tant qu'interface de niveau supérieur.

Un composant est un objet logiciel, destiné à interagir avec d'autres composants, encapsulant certaines fonctionnalités ou un ensemble de fonctionnalités. Il possède une interface clairement définie et se conforme à un comportement recommandé commun à tous les composants d'une architecture.

Un composant logiciel peut être défini comme une unité de composition avec une interface spécifiée contractuellement et des dépendances contextuelles explicites uniquement. Autrement dit, un composant logiciel peut être déployé indépendamment et est soumis à la composition par des tiers.

Vues d'un composant

Un composant peut avoir trois vues différentes: vue orientée objet, vue conventionnelle et vue liée au processus.

Object-oriented view

Un composant est considéré comme un ensemble d'une ou plusieurs classes coopérantes. Chaque classe de domaine de problème (analyse) et classe d'infrastructure (conception) est expliquée pour identifier tous les attributs et opérations qui s'appliquent à sa mise en œuvre. Il s'agit également de définir les interfaces qui permettent aux classes de communiquer et de coopérer.

Conventional view

Il est considéré comme un élément fonctionnel ou un module d'un programme qui intègre la logique de traitement, les structures de données internes nécessaires à la mise en œuvre de la logique de traitement et une interface qui permet au composant d'être appelé et de lui transmettre des données.

Process-related view

Dans cette vue, au lieu de créer chaque composant à partir de zéro, le système construit à partir de composants existants conservés dans une bibliothèque. Au fur et à mesure que l'architecture logicielle est formulée, les composants sont sélectionnés dans la bibliothèque et utilisés pour remplir l'architecture.

  • Un composant d'interface utilisateur (UI) comprend des grilles, des boutons appelés contrôles et des composants utilitaires exposent un sous-ensemble spécifique de fonctions utilisées dans d'autres composants.

  • D'autres types courants de composants sont ceux qui nécessitent beaucoup de ressources, qui ne sont pas fréquemment utilisés et qui doivent être activés à l'aide de l'approche juste-à-temps (JIT).

  • De nombreux composants sont invisibles et sont distribués dans les applications d'entreprise d'entreprise et les applications Web Internet telles que Enterprise JavaBean (EJB), les composants .NET et les composants CORBA.

Caractéristiques des composants

  • Reusability- Les composants sont généralement conçus pour être réutilisés dans différentes situations dans différentes applications. Cependant, certains composants peuvent être conçus pour une tâche spécifique.

  • Replaceable - Les composants peuvent être librement remplacés par d'autres composants similaires.

  • Not context specific - Les composants sont conçus pour fonctionner dans différents environnements et contextes.

  • Extensible - Un composant peut être étendu à partir de composants existants pour fournir un nouveau comportement.

  • Encapsulated - Le composant AA décrit les interfaces, qui permettent à l'appelant d'utiliser ses fonctionnalités, et n'exposent pas les détails des processus internes ou des variables ou états internes.

  • Independent - Les composants sont conçus pour avoir des dépendances minimales sur les autres composants.

Principes de la conception basée sur les composants

Une conception au niveau des composants peut être représentée en utilisant une représentation intermédiaire (par exemple graphique, tabulaire ou textuelle) qui peut être traduite en code source. La conception des structures de données, des interfaces et des algorithmes doit se conformer à des directives bien établies pour nous aider à éviter l'introduction d'erreurs.

  • Le système logiciel est décomposé en unités de composants réutilisables, cohésives et encapsulées.

  • Chaque composant a sa propre interface qui spécifie les ports requis et les ports fournis; chaque composant cache sa mise en œuvre détaillée.

  • Un composant doit être étendu sans qu'il soit nécessaire de faire du code interne ou de modifier la conception des parties existantes du composant.

  • Dépendre des abstractions, les composants ne dépendent pas des autres composants en béton, ce qui augmente la difficulté de durabilité.

  • Les connecteurs ont connecté les composants, spécifiant et régissant l'interaction entre les composants. Le type d'interaction est spécifié par les interfaces des composants.

  • L'interaction des composants peut prendre la forme d'invocations de méthode, d'appels asynchrones, de diffusion, d'interactions pilotées par message, de communications de flux de données et d'autres interactions spécifiques au protocole.

  • Pour une classe de serveur, des interfaces spécialisées doivent être créées pour servir les principales catégories de clients. Seules les opérations pertinentes pour une catégorie particulière de clients doivent être spécifiées dans l'interface.

  • Un composant peut s'étendre à d'autres composants tout en offrant ses propres points d'extension. C'est le concept d'architecture basée sur des plug-ins. Cela permet à un plugin de proposer une autre API de plugin.

Directives de conception au niveau des composants

Crée des conventions de dénomination pour les composants spécifiés dans le cadre du modèle architectural, puis affine ou élabore dans le cadre du modèle au niveau des composants.

  • Obtient les noms des composants architecturaux à partir du domaine du problème et s'assure qu'ils ont une signification pour toutes les parties prenantes qui visualisent le modèle architectural.

  • Extrait les entités de processus métier qui peuvent exister indépendamment sans aucune dépendance associée à d'autres entités.

  • Reconnaît et découvre ces entités indépendantes comme de nouveaux composants.

  • Utilise des noms de composants d'infrastructure qui reflètent leur signification spécifique à l'implémentation.

  • Modélise toutes les dépendances de gauche à droite et l'héritage du haut (classe de base) au bas (classes dérivées).

  • Modélisez toutes les dépendances de composants en tant qu'interfaces plutôt que de les représenter comme une dépendance directe de composant à composant.

Réalisation de la conception au niveau des composants

Reconnaît toutes les classes de conception qui correspondent au domaine du problème tel que défini dans le modèle d'analyse et le modèle architectural.

  • Reconnaît toutes les classes de conception qui correspondent au domaine de l'infrastructure.

  • Décrit toutes les classes de conception qui ne sont pas acquises en tant que composants réutilisables et spécifie les détails du message.

  • Identifie les interfaces appropriées pour chaque composant, élabore les attributs et définit les types de données et les structures de données nécessaires à leur mise en œuvre.

  • Décrit en détail le flux de traitement de chaque opération au moyen d'un pseudo code ou de diagrammes d'activités UML.

  • Décrit les sources de données persistantes (bases de données et fichiers) et identifie les classes requises pour les gérer.

  • Développer et élaborer des représentations comportementales pour une classe ou un composant. Cela peut être fait en élaborant les diagrammes d'état UML créés pour le modèle d'analyse et en examinant tous les cas d'utilisation pertinents pour la classe de conception.

  • Élabore des diagrammes de déploiement pour fournir des détails d'implémentation supplémentaires.

  • Montre l'emplacement des packages clés ou des classes de composants dans un système en utilisant des instances de classe et en désignant un environnement matériel et système d'exploitation spécifique.

  • La décision finale peut être prise en utilisant les principes et directives de conception établis. Les concepteurs expérimentés envisagent toutes (ou la plupart) des solutions de conception alternatives avant de choisir le modèle de conception final.

Avantages

  • Ease of deployment - Au fur et à mesure que de nouvelles versions compatibles deviennent disponibles, il est plus facile de remplacer les versions existantes sans impact sur les autres composants ou sur le système dans son ensemble.

  • Reduced cost - L'utilisation de composants tiers vous permet de répartir les coûts de développement et de maintenance.

  • Ease of development - Les composants implémentent des interfaces bien connues pour fournir des fonctionnalités définies, permettant le développement sans impact sur les autres parties du système.

  • Reusable - L'utilisation de composants réutilisables permet de répartir les coûts de développement et de maintenance sur plusieurs applications ou systèmes.

  • Modification of technical complexity - Un composant modifie la complexité grâce à l'utilisation d'un conteneur de composants et de ses services.

  • Reliability - La fiabilité globale du système augmente car la fiabilité de chaque composant individuel améliore la fiabilité de l'ensemble du système via la réutilisation.

  • System maintenance and evolution - Facile à changer et mettre à jour l'implémentation sans affecter le reste du système.

  • Independent- Indépendance et connectivité flexible des composants. Développement indépendant de composants par différents groupes en parallèle. Productivité pour le développement logiciel et le développement logiciel futur.