Beruflich Dokumente
Kultur Dokumente
0 pour
l’architecture logicielle
COSA
A. Alti
Département d’informatique
Université Farhat Abbas de Sétif - Algérie
Email : altiadel2002@yahoo.fr
A.Smeda
Université de Nantes – Ecole des Mines de Nantes - France
Email : smeda@univ-nantes.fr
Introduction
Les éléments architecturaux de COSA sont définis comme des types qui peuvent être
instanciés pour construire plusieurs architectures .
Nous proposons un profil UML 2.0 pour exprimer et modéliser de manière formelle les
concepts architecturaux de COSA.
Le
. Le langage
langage UML
UML 2.02.0 offre
offre des
des moyens
moyens plus
plus explicites
explicites que
que la
la version
version UML
UML 1.4
1.4 pour
pour
représenter
représenter certains
certains concepts
concepts architecturaux.
architecturaux.
D'autres
D'autres concepts
concepts architecturaux
architecturaux tels
tels que
que les
les connecteurs,
connecteurs, les
les configurations,
configurations, etc.
etc. ne
ne
peuvent
peuvent pas
pas être
être exprimés
exprimés directement
directement enen UML
UML 2.02.0
Metamodèle Niveau M2
«COSAProfile»
«apply» «apply»
Modèle Modèle
SimpleCS MergeAndSort Niveau M1
Niveau M0
arch-1 arch-2 arch-1
«COSAComponent»
«COSAComponent» «Attachment» Connector
Component
1 1
context
context UML::InfrastructureLibrary::Core::Constructs::Component
UML::InfrastructureLibrary::Core::Constructs::Component
inv
inv: :self.isStereotyped(“COSAConfiguration”)
self.isStereotyped(“COSAConfiguration”)
implies
implies
(self.ownedPort->forAll->
(self.ownedPort->forAll->
(r|r.isStereotyped(“ComponentInterface”)))
(r|r.isStereotyped(“ComponentInterface”)))and
and
(self.member->select(m|m.oclIsKindOf(Component))->forAll
(self.member->select(m|m.oclIsKindOf(Component))->forAll
->(c|c.isStereotyped(“COSAComponent”)))->size()>=1)and
->(c|c.isStereotyped(“COSAComponent”)))->size()>=1)and
(self.member->select(m|m.oclIsTypeOf(Class))->forAll
(self.member->select(m|m.oclIsTypeOf(Class))->forAll
->(c|c.isStereotyped(“COSAConnector”)))->size()>=1)and
->(c|c.isStereotyped(“COSAConnector”)))->size()>=1)and
(self.clientDependency.target->select->
(self.clientDependency.target->select->
(t|t.oclIsKindOf(Interface)))->isEmpty())
(t|t.oclIsKindOf(Interface)))->isEmpty())
<<COSAImplementation>> <<COSAImplementation>>
<<COSAImplementation>>
ServeurImp <<COSAConstraint>> ClientImp
ClientImp
{self.clients-max = 2}
<<COSAImplementation>>
<<COSAConnector>> Client-ServeurImp
RPC <<COSAImplementation>>
<<COSANonFuncProp>> nb-rôles
<<COSANonFuncProp>> debit = 10 kb/s RPCImp
<<COSAGlu>>
GluRPC
Partcipateur -1 Partcipateur -2
<<COSAConstraint>>
<<ConnectorInterface>> {self.nb-rôles = 2}
IRPC
«profile»
COSA «apply»
CSSimple
«instance» «instance»
arch2 arch1
Particpateur -2
Particpateur -1
Implémentations {RPCImp;} <<COSAComponent>> <<COSAComponent>>
Interface { Mode-connexion : synchrone ; S1 : Serveur C1 : Client
besoin
service
Roles {particpateur-1; particpateur-2;}
Glu {…}} <<ComponentInterface>> <<ComponentInterface>>
} IServeur: IServeurType IClient: IClientType
Nous avons développé un profil UML pour l’approche COSA. Ce profil nous a
permis de projeter les concepts de COSA vers les concepts d’UML 2.0 .
Un prototype d’implémentation écrit en Java a été implémenté dans la plate
forme de développement logiciel d’IBM Software pour Eclipse 3.1. Ce prototype
valide de manière pratique la projection des concepts de COSA vers UML 2.0