Des objets aux composants…

Transcription

Des objets aux composants…
Plan
„ Les limites de la programmation par objets
„ Les composants et connecteurs
„ « modules » réutilisables
„ séparation aspects métiers / propriétés fonctionnelles
„ assemblage
„ Programmation par composition
„ A.D.L.
„ Environnement de programmation par composition
„ Des exemples de composants
„ Java Beans : introspection, persistance, environnement
„ Enterprise Java Beans : architecture, persistance,
transaction, sécurité
„ Corba : architecture, déploiement
„ COM+ et .Net
Des objets aux composants…
Michel RIVEILL
[email protected] - http://rangiroa.essi.fr/riveill
Laboratoire I3S
2
Limites de la programmation usuelle
Programmation par composition (1)
„ « programming in the small »
„ Courtier d'objets
„ Communication synchone
„ tout est la la charge du programmeur
„ construction des différents modules
„ définition des instances
„ interconnexions des modules
Interface (services fournis)
„ structure de l’application peu visible
„ ensemble des fichiers de codes nécessaire
Objet
client
„ développement, génération des exécutables, déploiement
„ pas ou peu d’outils pour les applications réparties
Objet
client
Objet
serveur
Objet
serveur
référence
„ évolution / modification difficile
„ changement du mode de communication
„ évolution, ajout, suppression de fonctionnalités
„ modification du placement
„ Bus de message
„ Communication asynchrone
(services requis)
(services
fournis)
courtier
Bus de message
(assure la localisation de l'objet
et le transport des requêtes)
(assure l'appareillage et le transport
des requêtes)
Exécution
(réaction)
La programmation par composition
combine les deux approches
3
4
Programmation constructive
Programmation par composition (2)
(ou programmation par composition)
„ « programming in the large »
„ Motivation : réutilisation de logiciel
„ intégration de modules logiciels existants
„ construction d'applications réparties par assemblage de
modules logiciels existants
„ programmation à gros grain ("programming in the large")
Composant "client"
Interface (services requis)
Objet
client
„ Approche : description de l'architecture de l'application à
référence
l'aide d'un langage déclaratif
modèle de construction des composants
„
„
„
Connecteur = Assemblage + Communication/synchronisation
Interface (services fournis)
composants : interfaces, attributs, implémentation
description des interactions entre composants (connecteurs)
description de variables d'environnement
(placement, regroupement, sécurité, etc.)
Composant "serveur"
Les objets sont du code existant et encapsulés
ou écrit pour l'occasion
Objet
serveur
5
Les modèles de composants :
Les composants...
caractérisation d’un composant
„ Comment coopère un composant
„ Ce que fournit le composant
(entrées)
„
„
„
„
„
module logiciel autonome pouvant être installé sur différentes
plates-formes
qui exporte différents attributs, propriétés ou méthodes
qui peut être configuré
capable de s’auto-décrire
„
Intérêt : être des briques de base configurables pour
permettre la construction d’une application par composition
„
„
„
composition et références aux
autres composants
modes de communication des
connecteurs (synchrone,
asynchrone, flots)
„ Propriétés configurables du
composant
„ Contraintes techniques (QoS)
„ Quelques composants célèbres (ou qui vont l’être)
„
Ce qu’utilise le composant
(dépendances)
„
„
„
COM / DCOM / COM+ / .Net
Java Beans
Enterprise Java Beans (EJB)
Composants CORBA (CCM)
„
„
7
Propriétés
configurables
composantes, interfaces,
opérations, propriétés
bus logiciel (« middleware ») :
placement, sécurité, transaction
internes : cycle de vie,
persistance
implantation : OS, bibliothèques,
version
Fournit
„ Qu’est-ce que c’est ?
„ Définition usuelle
„
6
s
y
n
c
s
y
n
c
a
s
y
n
c
Composant
Contraintes
techniques
a
s
y
n
c
8
Utilise
„
Désignation
d'un proxy
(le composant)
Les modèles de composants :
Les modèles de composants :
conteneurs et structures d’accueil
conteneurs et structures d’accueil
„ Conteneur
„ encapsulation d’un composant (et ses composantes)
„ prise en charge (masque) les services systèmes
„
„
„
„
nommage, sécurité, transaction, persistance ...
Utilise
Client
prise en charge partielle des connecteurs
Connecteur
synchrone
Conteneur
Composant
invocations et événements
techniquement par interposition (ou délégation)
Connecteur
asynchrone
Structure d’accueil
Composant
Conteneur
Conteneur
„ Structures d’accueil
„ espace d’exécution des conteneurs et des composants
„ médiateur entre les conteneurs et les services systèmes
„ des + comme le téléchargement de code (navigateur)
Composant
Structure d’accueil
Intergiciel (« Middleware »)
+ Services (désignation, persistance, transaction, sécurité, …)
9
10
Construction
par assemblage de composants
Les modèles de composants :
de l’installation à l’introspection
„ Installer les composants
„ technologie de regroupement (« packaging »)
„ production des conteneurs
„ Créer les composants
„ par des fabriques (« home »)
„ configuration des valeurs initiales
„ Retrouver les composants
„ services de désignation
„ Utiliser
„ appel synchrone et communication par événements
„ Introspection
„ Découvrir leurs APIs (fonctionnelle)
„ Découvrir les connecteurs (structurelle)
„ Construction par assemblage
plutôt que ingénierie de développement
„
„
réduire les besoins en compétence technique
focaliser l’expertise sur les problèmes du domaine
„ Langage de description d’Architecture
„ capturer les composants
„
„
capturer les connecteurs
„
„
„
11
fonctionnalités et besoins
composition et modes de communication
adapter les communications
C’est le point faible des solutions industrielles !
12
Programmation constructive
MIL (Module Interconnection Language)
MIL, ADL
Composants « existants »
ADL (Architecture Description Language)
„
Modèles éprouvés
„
„
„
„
„
„
Java Beans
CORBA Component Model (CCM)
Enterprise Java Bean (EJB)
OLE / ActiveX / COM / COM+ / .Net
Web services
Fractal
A
A2
B
A1
B1
B2
A3
Connecteur
Composant élémentaire
(objet de communication)
Composant construit
Interfaces d'entrée (export)
Application
Interfaces de sortie (import)
13
Exemple d’architecture
instances de sous composants
Exemple d’architecture
Lookup
(in string key,
out string email)
Initialize
14
Regroupement des instances
Directory
Directory
de sous composants dans des
state
state==MD
MD
collections
(in string state)
coll
coll::collection
collection[0..N]
[0..N]of
ofDirectory
Directory
Directory
Directory
state
state==NY
NY
Services fournis
Services
requis
Lookup
(in string key,
out string email)
Directory
Directory
state = MD
state = MD
Directory
Directory
state = NY
state = NY
Directory
Directory
Directory
Directory
state
state==CA
CA
state = CA
state = CA
Initialize
(in string state)
15
16
Description de l ’architecture (A.D.L)
Interconnexion de composants
coll
coll::collection
collection[0..N]
[0..N]of
ofDirectory
Directory
client.Search(key, email, state) => coll.Lookup(key, email)
where state == coll.state
using SyncCall;
Client
Client
Start
Search
(in string key,
out string email,
in string state)
Lookup
(in string key,
out string email)
Start
Search
(in string key,
out string email,
in string state)
Directory
Directory
state = CA
state = CA
Directory
Directory
Lookup
(in string key,
out string email)
state
state==MD
MD
Directory
Directory
state = NY
state = NY
coll
coll::collection
collection[0..N]
[0..N]of
ofDirectory
Directory
Client
Client
Directory
Directory
state
state==MD
MD
Admin
Admin
Directory
Directory
StartDirectory
Initialize
(in string state)
(in string state)
state
state==NY
NY
Directory
Directory
state
state==CA
CA
Admin
Admin
StartDirectory
Initialize
(in string state)
(in string state)
admin.StartDirectory(state) => coll.Initialize(state)
using createInCollection();
coll : collection [0..N] of Directory;
client : Client;
admin : Admin;
17
Langage de description d ’architecture
(A.D.L)
Description de composant
DirectoryItf
DirectoryItf
string
stringstate
state
Stats
(in string statusreport)
Initialize ()
Lookup (in string key,
out string email)
interface DirectoryItf {
attribute string state;
provide Initialize();
provide Lookup(in string key,
out string email);
notify Stats( in string statusreport);
}
DirectoryImpl
DirectoryImpl
DirectoryMod
DirectoryMod
class
classDirectory
Directory
....
....
client.Search(key, email, state) => coll.Lookup(key, email) where state == coll.state using
SyncCall;
18
admin.StartDirectory(state) => coll.Initialize(state) using createInCollection();
module «Java» DirectoryMod : DirectoryItf {
java : ‘/usr/local/...’;
classpath : ‘...’;
class : ‘applicationTest.Directory’
}
19
„ Description de la structure de l’application
„ A des fins de lisibilité, de réutilisation
„ Assemblage de composants
„
„
Définition des composants
Définition des interconnexions
ƒ Dépendances entre composants
ƒ Règles de communication
„ 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
20
Architecture : Intérêts
L'environnement de développement
„ 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
„
„
Description de l’architecture de
l’application - langage OCL
–
–
–
„
„ 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
„
Modèle et Outils de Configuration
Description OCL
Description
textuelle
aspects statiques
aspects dynamiques
règles de placement
Génération du script d’installation
Compilateur
OCL
„
Langage de
programmation
Support de
Configuration
„
la modification des constituants d'un système
la modification des interconnexions entre ces constituants
la modification du placement
Mise en œuvre
des composants
„
Base de
composants
services de déploiement
services de reconfiguration Scripts
d’installation
Machine
de
Configuration
21
Chaîne de construction
22
Chaîne d'exécution
Déploiement
Structure
d ’accueil
(containers + …)
Observation des
containers
Déploiement
Description
des composants
Description
d'une
Architecture
Modèle
Configuration
Script de
déploiement
Propriétés
Deployment Script
Properties 23
Script de
déploiement
Propriétés
Deployment Script
Properties
Observation des
composants (applications)
24
Déploiement
Reconfiguration
Installation d ’une application
„ Installation ou déploiement… puis redéploiement statique ou
dynamique
„ Association de propriétés
„ Support nécessitant la présence d'un service de
aux composants
déploiement/redéploiement
„
„
„
„
„
„
„
// utilisateur privilégié possède ce
composant
admin.User.name == ‘admin’;
„
coll.Host.name == ‘db?.inrialpes.fr’;
„
// site avec peu d’utilisateurs
connectés
coll.Host.userLoad <= 2;
„
// annuaire et le client sur des sites
différents
coll.Node <> client.Node;
Fonctions de ce support
création de composants
liaison de composants
suppression/clonage/migration de composants
reliaison de composants
Caractéristiques de ce support
„
„
„
notion de déploiement : suite d'ordres
caractère transactionnel du déploiement
notion d'application déployée et suivi des changements architecturaux
d'une application
25
démo
26
Architecture d ’un service d ’observation
Observation des exécutions
„ Deux outils de surveillance
„ Surveillance des containers
„ Surveillance des composants (i.e. des applications)
„ Service de d ’observation intégré
„ instrumentation des containers
„ instrumentation des composants
„
„
„
Containers Proxy
techniques d'héritage et d ’interposition
Proxy
Containers
Administratio
n
AdminisAdministration
abonnements aux événements
dissémination de l ’observation en préservant la causalité
Agent
Agent
Agent
Composants
27
Interrogation:
état
Bus à messages
Dissé
Dissémination:
événements avec pré
préservation causalité
causalité
Agent
Agent
Agent
Composants
28
Une classification
des solutions industrielles
Observation des composants et de l ’application
„ Modèles orientés client / IHM
„ sur les postes clients
„ solutions « propriétaires »
„
„
OLE, COM, ActiveX de Microsoft
Java Beans de SUN
„ Modèles orientés serveur / métier
„ sur les postes serveurs
„ en liaison avec BD, transactions, sécurité
„ solutions « propriétaires »
„
„
„
29
DCOM, COM+, .Net de Microsoft
Entreprise Java Beans (EJB) de SUN
Corba Component Model (CCM) de l’OMG
30

Documents pareils