Académique Documents
Professionnel Documents
Culture Documents
Département d’Informatique
Master 2 Génie Logiciel
Plan du cours
I. L’architecture logicielle à base de composants (TP & Cours)
Introduction
Les trois dimensions d’un composant
Les composants industriels
Métamodèle (Niveau M2)
Les profils UML
Modèle client-serveur: Niveau M1 (TP)
Conclusion
Disponible à : https://sites.google.com/site/altiadel19/support-de-cours
Chapitre 1 : L’architecture logicielle à base de composants
I.1. Introduction
Le but de ce cours d’objets composants est de construire un métamodéle de composants académique. Nous
allons donc mettre en application et approfondir les notions des composants architecturaux.
La modélisation à base de composants architecturaux permet aux développeurs de faire abstraction des
détails d’implémentation, de se concentrer sur des éléments de plus haut niveau comme les différentes vues
et structures des systèmes complexes et de raisonner sur leurs propriétés (protocole d’interaction,
conformité avec d’autres architectures, etc.).
Cette approche décrit un système comme un ensemble de composants (unité de calcul ou de stockage) qui
interagissent entre eux par le biais de connecteurs (unités d’interactions). Leurs objectifs consiste à réduire
les coûts de développement, à améliorer des modèles, à faire partager des concepts communs aux
utilisateurs et enfin à construire des systèmes hétérogènes à base de composants réutilisables sur étagères
(COTS, commercial off the shelf).
L’architecture logicielle à base de composants (composants architecturaux) décrit les systèmes logiciels
comme un ensemble de composants (encapsulation des fonctionnalités) qui interagissant entre eux par
l’intermédiaire des connecteurs (encapsulation de communication), comme indiqué dans la figure 1.
Configuration
Rôle - Requis Rôle - Fourni
Connecteur
Composant Composant
Glue
Port - Fourni Port - Fourni
Les utilisateurs peuvent se contenter d’une description graphique de haut niveau (type boîte et flèche). Les
développeurs voudront détailler par exemple les modèles de connecteurs et de composants, alors que les
managers peuvent requérir une vue du processus de développement. Le mode d’expression d’un composant
dépend également de sa granularité. La notion de granularité de composant recouvre, selon les langages de
représentation, aussi bien des unités atomiques telles que les structures de données, les fonctions
mathématiques ou de véritables structures composées d’éléments et de liens.
Les intergiciels représentent le niveau d’exécution des applications (par exemple CORBA, J2EE, .NET, etc.) et
les services normalisés fournissent le support à l’exécution de ces applications (par exemple la sécurité des
transactions et des évènements). Tout cet ensemble, de technologies est utilisé pour supporter différents
domaines tels que la finance, le commerce électronique ou la télécommunication. Si le nombre de modèles
de base disponibles est faible, il n'est pas cependant figé.
J2EE permet un découpage multitiers. Elle supporte par défaut la séparation selon les trois présentations,
traitements et données. Pour chacun de ces tiers, J2EE offre des technologies différentes. L’architecture
J2EE repose de deux blocs :
Servlets/JSP : Ce bloc gère l’interface avec le client. Les servlets et les JSP sont des technologies J2EE
qui permettent les communications avec les clients selon, entre autres le protocole http. Les JSP sont
notamment utilisées pour générer les pages HTML qui seront visualisées par le client. Dans une vision
trois tiers, ce bloc représente la tierce présentation.
EJB : permet de représenter sous forme de composants les traitements et les données des
entreprises. EJB se déclinent en deux types : les EJB Session et les EJB Entity. Les EJBs sont connectés aux
bases de données de l’entreprise.
ORB (Object Request Broker) : bus objet. C'est le nœud central de l'architecture. Toutes les
informations échangées entre les différents composants transitent par l'ORB.
Services : cycle de vie, persistance, nommage, événements, sécurité, licences, etc.
Interfaces de domaines : objets dédiés à un domaine applicatif (santé, finance, etc.) CORBA Facilities
: gestion des processus, des interfaces utilisateurs, des systèmes)
Application Interfaces : applications.
I.4. Métamodèle
I.4.1. Niveau M2
Une hiérarchie de trois niveaux d’abstraction pour l’élaboration des architectures logicielles est illustrée dans
la figure 2. Le niveau le plus élevé (M2) contient les différents concepts de base pour définir les architectures
logicielles ADL, le second niveau (M1) contient les modèles d’architectures et le troisième niveau (M0)
contient les instances de ces modèles. La relation entre M2-M1 est nécessaire pour vérifier la cohérence des
modèles, alors que la relation entre les niveaux M1-M0 permet de générer plusieurs instances
d’architectures. Les trois niveaux d’abstraction de l’architecture logicielle sont inspirés de trois niveaux
d’abstraction de l’OMG comme le montre le tableau 1.
Métamétamodéle
Niveau M3
(Méta-ADL)
(MOF 2.0)
Niveau M2
ACME COSA
Modèle Niveau M1
Modèle Modèle
Niveau M0
Applications
Ainsi nous définissons la liste des suivantes des éléments devant être présenté dans la diagramme UML :
Les composants sont des unités de calcul ou du stockage pour lesquelles est associée une unité
d'implantation. La plupart des systèmes à base de composants peuvent avoir plusieurs interfaces : chaque
interface définit un point d’interaction entre un composant et son environnement.
Les connecteurs représentent les interactions entre les composants et les règles qui régissent ces
interactions correspondent aux lignes dans les descriptions de type "boites-et-lignes". Ce sont des entités
architecturales qui lient des composants ensemble et agissent en tant que médiateurs entre elles.
Les interfaces d’un composant sont des points de communication qui lui permettent d’interagir avec son
environnement ou avec d’autres composants.
Les propriétés représentent les informations sémantiques des composants et de leurs interactions.
I.4.2. Contraintes
Les contraintes représentent les moyens permettant à un modèle d’architecture de rester valide durant
toute sa durée de vie et de prendre en compte l’évolution et le remplacement des composants logiciels dans
cette dernière. Ces contraintes peuvent inclure des restrictions sur les valeurs permises de propriétés, sur
l’utilisation d’un service offert par un composant et garantir la validité des résultats retournés par ce service.
Les contraintes appliquées sur un connecteur sont :
Contrainte
1
Style Configuration 1
1 1 Propriété
composé de 1 1 composé de
1 1..* 0..* 0..* 1
1
Composant Connecteur
1
1
0..* 0..*
1 composé de
1
1 composé de 1
composé de composé de
1 1
Interface
0..*
Liaison Liaison
0..1 1
1 0..1
Port Rôle
0..1 0..1
Attachment
Figure 1.3. Les concepts de base des langages de description d’architectures dans COSA.
Composant Server
+ send-date ()
Composant DataBase-Manager
Connecteur
SecurityQuery Composant
requestor securityManagement
DataBase
Sec_Glu
secManager
queryIntf
Composant
cerdQuery
SecurityManager Connecteur
SQL_Query
callee
SQL_Glu
secAuthor
caller
Grantor
Connecteur
DBQueryIntf
Composant
ClearanceRequest ConnectionManager
Cle_Glu
requset securityCheck
extrnalSocket
extrnalSocket
provide
Légende
Define-Composition {
Class Components {
Class Component ConnectionManager {
Interface { Ports provide {externalSocket; DBQueryIntf;}
Ports request {securityCheck;}}
Class Component SecurityManager {
Interface { Ports provide {securityAuto;CerdentialQuery;}}}
Class Component Database {
Interface { Ports provide{queryIntf;}
Ports request{securityManagement;}}}
Class Connector SQLQuery {
Interface { Ports provide{callee;} Ports request{caller;}}
Class Connector CleranceRequest {
Interface { Ports {grantor; requestor;}}
Class Connector SecurityQuery {
Interface { Ports provide{securityManager; requestor }
}
Attachments {
ConnectionManager. SecurityCheck to CleranceRequest.requestor;
SecurityManager. SecurityAutothorization to CleranceRequest.grantor;
ConnectionManager.DBQueryIntf to SQLQuery.caller;
Database. queryIntf to SQLQuery.callee;
SecurityManager.cerdentialQuery to SecurityQuery.SecurityManager;
Database. securityManagement to SecurityQuery. Requestor;
}
Bindings {ConnectionManager. ExternalSocket to server.provide; }
}
}
I.7. Conclusion
Le but de ce cours d’objets composants est de construire un métamodèle de composants dans le but de
modéliser le système client/serveur. Après avoir méta-modélisé, à l’aide de cours, les concepts du cours, les
concepts de base des composants, nous avons procédé à l’instanciation de ce diagramme en vue de
présenter le modèle client/serveur. Nous avons approfondi ce modèle par la description COSA du système.
Nous avons également réalisé un diagramme de déploiement du système client/serveur.
Ce cours a permis de mettre en application les notions vues en cours et ainsi de mieux centrer les concepts
des composants. A présent, nous allons pouvoir nous pencher sur la définition d’un méta-métamodèle (méta
ADL).
Chapitre 2 : L’architecture logicielle à base de services
II.1. Introduction
L'architecture orientée services (calque de l'anglais Service Oriented Architecture, SOA) est une forme
d'architecture de médiation qui est un modèle d'interaction applicative qui met en œuvre
des services (composants logiciels) :
1. avec une forte cohérence interne (par l'utilisation d'un format d'échange pivot, le plus souvent XML),
2. et des couplages externes « lâches » (par l'utilisation d'une couche d'interface interopérable, le plus
souvent un service web WS).
II.2. 1. Service
Le service est l’un des composants clés des architectures orientées services, « le service dans les
architectures orientées services expose une partie de fonctionnalité qui respecte les propriétés suivantes :
(1) Le contrat d'interface pour le service est indépendant de la plateforme, (2) le service a une
localisation dynamique et invocation, (3) le service est autonome et sait maintenir son propre état courant ».
Le service possède plusieurs caractéristiques :
SOAP
Simple Object Access Protocol possède un format XML pour échanger des informations structurées et
typées entre deux pairs distants dans un environnement décentralisé et distribué, c.-à-d. l’échange et le
transfert de messages ce fait à l’aide de protocoles http, SMTP, etc. La structure de L’enveloppe SOAP
(figure 1) repose sur deux parties essentielles:
1. SOAP Header : est l’entête de message contient tous les informations sur le message et son
acheminement.
2. modèle de données qui spécifier le format à transmit.
WSDL
Le Web Service Description Language, est un format décrit en XML pour la description des services Web, il
repose sur deux groupe de sections, la définition abstraite et la description concrète, la définition abstraite
inclut les éléments : types, message, portType, et la description concrète inclut les éléments : binding,
service. Nous allons décrit les détails de ce Standard dans la section 3.1 du chapitre 3.
UDDI
« Universal Description Discovery and Integration » est standard repose sur le format XML, utiliser
par le fournisseur de services pour la publication et utiliser aussi par le consommateur de service pour
découvrir des services qui répond à ces besoins, il est spécifique aux approches centralisées fondées sur
le langage XML Schéma, et connu aussi par l’annuaire des services ou (UDDI registry en anglais), et
destiné aux services
La structure d’un document WSDL en six éléments : <definition>, <types>, <message>, <portType>,
<binding>, <service>, un document WSDL divisé en deux groupes de sections, l’un sur l’autre, la section
en haut connu par la définition abstraite, qui inclut les éléments <types>, <message>, <portType>, et la
section en bas connu par la description concrète , qui inclut les éléments <binding>, <service>.
La figure 2.2 ulster les éléments fondamentaux pour la description d’une interface WSDL et les
relations entre eux, la <definition> inclut les deux groupes de sections : définition abstraite et description
concrète, la section message utilise les définitions de la section types, la section portType utilise les
définitions de la section message, la section binding réfère à la section portType et la section service
réfère à la section binding, les sections binding et portType contiennent des éléments d’opérations et
la section service contient des éléments de port. Les éléments d'opération de la section portTypes sont
modifiés ou décrits plus précisément par les éléments d'opération de la section Bindings. Dans ce qui
suite la définition des éléments précédente :
1. <types> : les données peuvent être simples ou complexe, simple comme l’âge, qui prend une
valeur décimale, données complexe si par exemple un service qui cherche la position d’un client,
il prend en entrée location comme une donnée complexe, constitué des éléments country et city,
comme montre la figure (a).
<definitions
>
<types>
Définition
<message> abstraite
Utilise
<binding> <operation> Description
Modificateur
concrète
<service> <port>
2. <message> : représente une définition abstraite des données communiquant, un message est
constitués d'une ou plusieurs parts, chaque part est associé à un type de données définit dans
l’élément <type>, le message de la figure (b) possède un nom getInternationalTimeRequest, un
part est associe au type de donnés getInternationalTime.
4. <binding> : définit les formats des messages et les détails de protocole de transmission des
messages pour les opérations et les messages définit pour un portType particulier, l’exemple de
la figure (d) ulster le binding possède deux attributs, le name définit le nom de l’attribut binding
et le type qui définit le portType utilisé pour le binding, dans l’élément soap:binding l’attribut
transport définit le protocole http pour véhiculer les messages SOAP.
5. <service> : un service agrégé un ensemble associé de ports. l’exemple de la figure (d) présente
le service serviceDescription à travers un port, le port associe au binding
tns:ServiceDescriptionSOAP et une adresse http://example.com/ServiceDescription.
L’élément WSDL <types>
Le WSDL v1.0 en 2000 est la première version développée par IBM, Microsoft et Ariba, le
WSDL 1.1 a été proposé en 2001 comme une note W3C mais n’est pas agréer, la version 2.0 a
été agréer en 27 juin 2007 comme une recommandation officielle du W3C, dans ce qui suite la
différence entre ces versions :
L’annuaire de
service (UDDI)
Dé
ou SOAP Publier
vr
e
Appeler
Consommateur Fournisseur
Application Clients Exploite Service
Toute d’abord le fournisseur de service publie ses services dans un annuaire de services, ces
dernies serons disponible, lorsqu’un client demande d’utiliser un service, il cherche dans
l’annuaire les services qui répond à ces besoins, ensuite l’annuaire renvoie une liste de services
disponibles, la liste contient la description de chaque service et ses fournisseurs (numéro de
téléphone, adresse, etc.), un contrat est mis en place concernant les conditions d’utilisation,
dont le fournisseur doit respecter le bon fonctionnement de service et l’utilisateur doit
respecter les conditions d’utilisation, comme : le payement si nécessaire, n’utilise pas le service
dans un contexte malveillants, etc.
Le protocole SOAP est utilisé pour l’échange des messages entre les acteurs : fournisseur,
consommateur et l’annuaire.
II.4. La composition des services
Les architectures orientées services soufre des problèmes lors de l’intégration des services
dans les environnements distribués, l’objectif de l’intégration est de fournir un service qui offre
une fonctionnalité qui n’est pas fournie par les autres services. Pour résoudre ce problème,
plusieurs travaux ont été proposés, avant de discuté les détails, nous allons présenter quelques
définitions et types de composition.
II.4.1 Définition
La composition est le processus de sélection, la combinaison et l’exécution des services web,
pour atteindre à l’objectifs de l’utilisateur »,
II.4.2 Les types de composition
Dans la littérature, nous distinguons les types de composition de services web : la
composition manuelle, la composition semi-automatique et la composition automatique.
La composition manuelle
La composition manuelle repose sur l’expert qui génère la composition, car il nécessite des
connaissances préalables sur la programmation, l’expert fait le choix pour construire leur
processus de composition, si par exemple un service web destiné à l’utilisateur supporte ce
type de composition, l’utilisateur rejette cette application dans le cas où l’utilisateur n’est pas
un expert.
La composition semi-automatique
L’annotation sémantique des fichiers de description des services permet une découverte
semi-automatique et plus précise. L'utilisateur exprime sa requête en fonction des concepts et
des instances de l'ontologie de référence utilisée pour annoter les descriptions des services. Le
système pré-sélectionne les services susceptibles de satisfaire la requête de l'utilisateur. Ce
dernier intervient pour choisir le service qui lui semble le plus pertinent parmi ceux pré-
sélectionnés.
La composition automatique
Cette technique repose sur une composition automatique et ne nécessite pas l’intervention humaine,
le choix de la composition est fait par un moteur de composition intelligent, ce dernier fonctionne d’une
manière dynamique et choisit les services pertinentes selon des critères fonctionnelles pour répond au
besoin de l’utilisateur, le mécanisme de composition dans cette technique est transparent à l’utilisateur,
OWL-S (Semantic Markup for Web Services) est une approche sémantique pour la composition
automatique qui présente une ontologie de processus spécifiant la composition en trois classes de
processus :
1. Le processus atomique : correspond à l’action qui peut être engagé par le service afin
d’effectuer une tâche avec une seule interaction, c’est un processus invocable qui s’exécute dans
un seul pas, possède comme input un message et effectue ces fonctionnalités puis retourne
comme output ces résultats.
2. Le processus simple : est processus non exécutable et non invocable, un processus simple est
utilisé pour fournir une vue de certains processus composés ou processus atomiques.
3. Le processus composite : correspond à l’action qui peut être effectué par l’engagement de
plusieurs services, le processus composite peut être décomposé en sous-processus non
composable ou composable, la décomposition spécifier par des instructions du contrôle comme
séquence, split, split-join, choise, etc. et les instructions de branchement comme if-then-else,
La composition
Service web
Service Web sémantique
Processus
Processus
documentation
.....
partnerLinks
partnerLink
partnerLinkType
myRole
variables
faultHandlers
.....
<reply>
le processus métier exécutable : est un processus conçue pour être exécuter, il décrit le
comportement actuel du processus participé à une interaction métier.
Montant 100
code 1 Donneur.crediter
Donneur.verif_coord [solde = solde -100] 12
Mot passe 1000
I.7. Conclusion
Dans ce chapitre, nous avons étudié les aspects importants des architectures logicielles à base des
services, la description du service et les et les approches de composition des services. La première gère
un aspect important pour fournir des modèles d’architecture interopérables. Et la deuxième décrit la
sélection pour choisir un service parmi plusieurs, ce service établie les objectifs fixé par l’utilisateur.