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