Composant A
Transcription
Composant A
Introduction à la notion de composant ESIR2, GL (LSI) Benoit Combemale Université de Rennes 1, ESIR & IRISA (Triskell team) [email protected] Inspiré des slides d’Olivier Barais (UR1, ISTIC) Supports disponibles sur : http://www.irisa.fr/triskell/perso_pro/combemale/teaching/modeling/ Limites de programmation OO • beaucoup de tâches doivent être gérées manuellement • définition des instances • références directes entre les instances + appels explicites de méthodes • gestion des dépendances entre classe • structure des applications peu lisible ( = ens. de fichiers ) • évolutions/modifications difficiles • changement de modes de communication • évolution, ajout, suppression de services systèmes • assemblage • déploiement ( => installation ) • peu ou pas d’outils pour installer les exécutables sur les différents sites Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 2 Limites de programmation OO • Objets prônent l'encapsulation pour masquer l'implantation § utilisation d'un objet via une interface ok § construction d'une appli à l'aide de classes not(ok) Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 3 Programmation orientée composant Motivations "Programming in the large vs programming in the small" [1976] • Construction d’applications par assemblage d’entités existantes ( = composants ) • Définition de connecteurs et de schémas de connexions entre les composants ➡ définition d'une architecture logicielle • formalisme pour décrire les interactions entre composants • formalisme pour décrire le déploiement des composants • programmation à gros grain ("in the large") Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 4 Programmation orientée composant • Programmation orientée composant = programmation par assemblage, plutôt que par développement (cas de la prog. OO) ➡ focaliser l’expertise sur les problèmes "métiers" plutôt que "techniques" ➡ un autre pas vers "encore plus" de réutilisabilité Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 5 Définition d’un composant Pb pas de consensus actuellement sur une définition commune • Un composant est un morceau de logiciel assez petit pour que l'on puisse le créer, le maintenir et en assurer le support. Il est également doté d'interfaces standards pour pouvoir intéropérer. [Jed Harris 1995] • A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independantly and is subject to composition by third parties. [Szyperski 1996] ➡ chaque plate-forme a sa définition de composant, mais un objectif commun : augmenter réutilisation et la composabilité Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 6 Définition d’un composant • Module logiciel • • • • • qui exporte => propriétés et opérations qui est prévu pour être configuré => propriétés initialisables (ex. XML) qui est prévu pour être installé => paquetage (ex. .war .ear) qui est révu pour être composé => connecteurs qui fournit un mécanisme lui permettant de «s'auto-décrire» • Réification de la notion de connexions entre composants • types de connecteur : synchrone, asynchrone, diffusion, avec QoS, … Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 7 Définition d’un composant • Module logiciel • • • • • qui exporte => propriétés et opérations qui est prévu pour être configuré => propriétés initialisables (ex. XML) qui est prévu pour être installé => paquetage (ex. .war .ear) qui est révu pour être composé => connecteurs qui fournit un mécanisme lui permettant de «s'auto-décrire» • Réification de la notion de connexions entre composants • types de connecteur : synchrone, asynchrone, diffusion, avec QoS, … Intérêt : être une brique de base pour la construction d’applications par composition Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 7 Définition d’un composant • Propriétés configurables du composant • Comment coopère un composant • Ce que fournit le composant (entrées) – composantes, interfaces, opérations, propriétés – références aux autres composants • Modes de communication des connecteurs (synchrone, asynchrone, flots) • Contraintes techniques (QoS) • bus logiciel (« middleware ») : placement, sécurité, transaction • internes : cycle de vie, persistance • implantation : OS, bibliothèques, version Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ Fournit • Ce qu’utilise le composant (dépendances) s y n c s y n c a s y n c Composant a s y n c Contraintes techniques 8 Utilise Propriétés configurables Notion de séparation Interface - Implantation • Interface = ensemble d’opérations publiques • La séparation Interface – Implantation permet de § Caractériser le protocole d’accès à un composant logiciel indépendamment de son implantation § Réaliser plusieurs implantations de la même interface § Favoriser la substitution d’implantations Client! ! “utilise”! ! ImplantationA! ! ! Opération()! …! Interface! ! Opération()! ImplantationB! ! ! Opération()! …! Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ ImplantationC! ! ! Opération()! …! 9 Notion de port • Un composant interagit avec le monde extérieur via des ports offerts et requis § Un port = 1 ou plusieurs interfaces • Ports offerts = exportation vers le monde extérieur § Implantés dans le code du composant § Aussi nommés interfaces offertes ou serveurs • Ports requis = importation depuis le monde extérieur § Utilisés depuis le code du composant § Aussi nommés interfaces requises ou clientes Ports! Offerts! Composant Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ Ports! Requis! 10 Notion de liaison Assemblage de composant • Liaison ou binding § association entre 1 interface requise et 1 interface fournie § Compatibilité des interfaces, e.g. • I3 sous-type de I1 • I4 sous-type de I2 I3! Composant B I4! Composant C I1! Liaisons! Composant A I2! • Pour simple assemblage de composants non répartis § Pas de communication réseau via un intergiciel Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 11 Notion de connecteur • Connecteur = objet de communication • Capturant interactions entre composants répartis • Encapsulant mécanismes de communication des intergiciels • Peut servir à résoudre l’impédance entre les ports des composants • Adaptateur pour changement des noms d’opérations, des types, des paramètres, etc. • Divers modèles d’interactions • Client / serveur par invocation synchrone d’opérations • Producteur / consommateur par envoi asynchrone de messages • Diffusion, mémoire partagée, etc. Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 12 Notion de connecteur • Diverses cardinalités : 1 -> 1 ; 1 -> n ; n -> 1 ; n -> m • Diverses propriétés extra-fonctionnelles • Couche de transport réseau : TCP/IP, UDP, IP Multicast, ... • Couche protocolaire : IIOP, HTTP, ... • Format d’encodage : CDR, XML, ... • Compression, sécurité, transaction, QoS, … Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 13 Trois exemples de connecteurs Connecteur 1 C1 I1! Souche! Squelette! I2! C2 Intergiciel! I4! Connecteur 2 C3 I4! I3! C4 Multicast IP Adaptation I3 -> I4 I4! Liaison ~ connecteur “ basique ”! Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ C5 14 Notion de configuration • Configuration = ensemble de composants reliés par des liaisons et connecteurs C1 C3 Connecteur C2 Connecteur C4 C5 Configuration Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 15 Notion de composite • Composite = composant encapsulant configuration § composants hiérarchiques C1 C3 Connecteur Connecteur Composite Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ C2 C4 C5 16 Notion d’architecture • Trait d'union entre § Le cahier des charges d'un programme § Les méthodes de conception § La mise en œuvre § L'installation en environnement réparti • Synthétise la complexité d'un système • Facilite l’installation et l’évolution de l’application § Automatise le processus d’installation de l’application § Puis permet l’évolution de l’application • la modification des constituants d'un système • la modification des interconnexions entre ces constituants • la modification du placement Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 17 Why designing a software architecture ? [Garlan & Shaw 92] • Understanding § High-level system structure • Automated analysis • Blueprint for construction § Basis to generate code § Basis to identify opportunities for reuse • Program evolution support § Preservation of invariants § Effect of changes Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ C3 C1 C2 18 Langage de description d’architecture • Architecture Description Language (ADL) = langage déclaratif • Description de la structure / architecture de l’application • A des fins de lisibilité et de réutilisation • Définition des composants – Interfaces, ports, propriétés de configuration => types – Implantations et dépendances • Définition des connecteurs – Description des interactions entre composants – Mode communication, cardinalité, propriétés – Adaptation pour impédance entre composants • Capturer les configurations ~ architecture – description de variables d'environnement (placement, regroupement, sécurité, etc.) Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 19 Langage de description d’architecture • Vérification de la sémantique d’assemblage • Systèmes de type de composants caractérisant la nature du logiciel • Conformité entre interfaces pour autoriser des interconnexions • Spécification de contraintes globales sur le fonctionnement de l'application – validation, preuve • Peu de solutions industrielles, principalement travaux de recherche ➡Darwin, Unicon, Olan Configuration Language, Rapide, Fractal ADL Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 20 Vue graphique d’un ADL A A2 A1 B B1 B2 A3 Composant élémentaire Connecteur (objet de communication) Composant construit Interfaces d'entrée (export) Application Interfaces de sortie (import) Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 21 Environnement d’exécution serveur d'applications serveur d'applications conteneur client conteneur connections composant composant Service Service Service composant Système/Middleware(Intergiciel) Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 22 Environnement d’exécution • Conteneur § encapsulation d'un composant § prise en charge (masquage) des services systèmes § prise en charge des connexions entre composants § invocations et événements • Serveur d'applications § structure d'accueil pour les conteneurs § espace d'exécution § médiateur entre les conteneurs et le système/middleware Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 23 Environnement d’exécution • Idée sous-jacente § composants : code métier + configuration des services techniques § conteneur + serveur : services techniques (non fonctionnels) • Objectifs § faciliter la conception, le développement, et la maintenance § meilleure évolutivité / évolutions des solutions techniques Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 24 Exemples de modèle à composants • Modèles orientés IHM / client •Sur machines utilisateurs •OLE, COM, ActiveX de Microsoft •Java Beans de SUN • Modèles orientés métier / serveur •Sur machines serveurs •Conteneurs en liaison avec BD, transactions, sécurité •COM+, MTS, … .NET de Microsoft •Entreprise Java Beans de SUN • Modèles généralistes •Fractal du consortium ObjectWeb •OSGi Benoit Combemale (IRISA, Triskell), 2011. http://www.irisa.fr/triskell/perso_pro/combemale/ 25