Les Langages de description d`architectures

Transcription

Les Langages de description d`architectures
Adaptation d'un langage de description d'architecture à
l'expression du comportement ; applications.
Christophe Mareschal
ONERA-Supaéro, LIA
10 avenue Edouard Belin
31055 Toulouse cedex
1
Introduction
Depuis le début des années 90, la communauté de l'ingénierie du logiciel a développé des techniques
centrées sur la description de l'architecture des systèmes [IEEE1471]. Celles ci ont été élaborées à de mutiples
fins : améliorer la compréhension et la conception des systèmes complexes, favoriser leur évolution et leur
réutilisation, procéder à diverses analyses, faciliter la construction et le déploiement, ou encore aider à la gestion
de configuration. Ces techniques se sont concrétisées au travers de langages spécifiques, les ADL's (Architecture
Description Language), et l'outillage associé [MT00].
Plusieurs travaux actuels vont dans le sens de l'unification ou de la standardisation de ce type de langage
pour les rendre plus utilisables. L'aboutissement de ces recherches permettrait de palier les difficultés de
cohérence et de compréhension des modèles dues à la multiplicité et à la spécificité des langages, ou encore de
surmonter les problèmes d'interopérabilité issus de la variété des formats. Un voie s'est ouverte avec le travail
effectué à UCI (University of California, Irvine) qui a élaboré un ADL modulaire et hiérachisé, xADL2.0, isolant
ainsi le fondement générique des ADL's, et laissant la voie ouverte vers la spécialisation par l'extension. Nous
proposons dans cet article d'étendre xADL2.0 à un domaine qu'il ne couvre pas encore, l'expression du
comportement, pour en faire un langage d'analyse.
La démarche nous permet en outre de démontrer la possibilité de construire sur la base d'un ADL
spécialisable, une infrastructure d'outils souple et adaptable où l'analyse côtoie la conception, l'implémentation et
le contrôle de la configuration. L'architecture de cette infrastructure se fonde sur une description unique du
système agissant comme base de données de référence et pouvant être utilisée de multiples manières par des
outils spécialisés. La mise en œuvre de ce modèle d'infrastructure fait appel aux technologies XML déjà
largement mises à profit dans le projet xADL2.0.
Après avoir introduit les ADL's et les techniques XML utilisées, nous présentons xADL2.0. Ce dernier n'a
pas été conçu pour exprimer et analyser le comportement des systèmes, son objectif premier étant la fourniture
d'un support pour la gestion de configurations. Pour la modélisation du comportement, nous avons choisi
d'utiliser AltaRica, un langage qui permet de représenter les systèmes sous forme d'automates à contraintes, pour
l'inclure dans le champ d'expression d'xADL2.0. C'est ce que nous expliquons plus en détail dans la partie
consacrée à l'extension d'xADL2.0 que nous avons développée (que nous appelons xADL2.0*). Nous présentons
pour finir l'applications de nos résultats : l'adaptation des outils, l'interopérabilité xADL2.0* et AltaRica, et une
proposition de modèle générique d'infrastructure d'outils évolutive et adaptable.
2
2.1
Techniques support
ADL
Les ADL's sont une famille de langages élaborés dans les années 90 dans le domaine de l'ingénierie du
logiciel. Ils ont en commun une capacité à décrire l'architecture des systèmes mais diffèrent largement quant à
leurs motivations et leurs formalismes d'écriture. Ils sont en général graphiques et textuels et possèdent des outils
associés. Le tour d'horizon qui suit donne une indication sur la diversité des concepts et des usages couverts par
ce type de langage:
• Aesop (D. Garlan & al, CMU, 1994): Développement d'applications fondé sur la notion de style
architectural. [DG95], [Aesopweb].
• Darwin (J. Magee, Impérial College, 1994): Configuration et instanciation dynamique des systèmes
distribués. [MDEK95], [DarwinRef], [Darwinweb].
• C2 (R. N. Taylor, N Medvidovic, UCI, 1995): Architectures évolutives ou dynamiques, C2 s'appuie sur un
style d'architecture logiciel en couche et des communications par échange de message. [TMAWR95],
[ISRpub], [C2web].
• Rapide (D. C. Luckham, 1995): Modélisation, simulation et analyse du comportement dynamique d'un
système à l'exécution. Rapide se fonde sur le concept de posets (Partial Ordered event Sets). [DL96],
[Rapideweb].
1
•
•
•
•
•
•
UniCon (M. Shaw, CMU, 1995): Construction et vérification d'architectures à partir d'éléments
architecturaux prédéfinis. [SDKRTZ95], [GZ96], [UniConweb].
MetaH (S. Vestal, Honeywell, 1995): Conception, vérification, validation, assemblage et déploiement de
système temps réel critique (Avionique embarquée). [MetaHRef], [MetaHweb].
Wright (R Allen, D Garlan, 1997) Vérification formelle, absence de blocage, Wright décrit formellement le
comportement d'une architecture à l'aide de CSP (Communicating Sequential Process).[RA97],
[Wrightweb].
SADL : Structural Architecture Description Langage (M. Moriconi, SRI, 1997) Raffinement formel
(traçabilité des variantes et des évolutions).[MQRG97], [SADLweb].
Acme (D Garlan, R Monroe, D Wile, CMU, 1997) Interchange, Acme a été conçu comme langage
passerelle pour permettre aux différents ADL's d'intéropérer. Cette vocation l'a conduit à se définir comme
langage d'architecture générique. [GMW97], [Acmeweb].
Olan (L Bellissard, M Riveill, INRIA Rhône Alpes, 1995) Développement, configuration, déploiement et
administration d'applications réparties.[LB97], [Olanweb].
Il n'y a pas de définition officielle de ce qu'est un ADL. La définition admise est qu'un ADL spécifie les
composants d'un système, leurs interfaces, les connecteurs (lieux d'interaction entre les composants), et la
configuration architecturale. A partir de cette définition minimale, chaque ADL possède des caractéristiques de
modélisation propres liés à sa motivation et à son usage [MT00].
Aussi, bien souvent élaborés de façon ad hoc pour répondre à des besoins particuliers, les ADL's n'ont pas
réussi à surmonter les obstacles d'incompatiblilité, de non portabilité, de multiplicité et de complexité, d'absence
1
de standardisation, etc., ce qui leur aurait permis de dépasser le cadre de leur niche d'origine et de s'imposer
comme langages de référence.
Une réponse a été trouvée en intégrant la technologie XML et ses dérivés pour la spécification, la
manipulation et l'utilisation des langages [PSSC98]. C'est ce qui conduit à la respécification de certains ADL's
par les métalangages d'XML (DTD et XML schema), ou à une redéfinition nouvelle générique et hiérarchisée :
•
•
•
•
•
•
Les DTD's
xADL1.0 (R. Khare, 1999) , dérivé de C2 [KGOMT01].
ADML (Open Group, 2000) , dérivé d'Acme [ADMLweb]
xOlan (L Bellissard & al, INRIA Rhône-Alpes, 2001) , dérivé d'Olan
Les schémas
xArch (E Daschofy, D Garlan, A. van der Hoek, B Schmerl, UCI, CMU, 2001) ADL à minima
[xArchweb].
xAcme (B Schmerl , CMU, 2001) extension d'xArch, inspiré d'Acme [BS01], [xAcmeweb]
xADL2.0 (E Dashofy, UCI, 2001) extension d'xArch, hiérarchisé et spécialisé "famille de produit"
[xADLweb]
Signalons également l'effort de standardisation du projet AADL [AADLweb], "Avionic ADL". AADL est
très inspiré de MetaH, et reste orienté système temps réel (critique) embarqué. Si AADL est pour l'heure défini
avec UML Profile, une version XML est prévue2 [FLV03].
2.2
XML
XML est un monde vaste regroupant des langages et des techniques; nous ne présentons ici que l'essentiel
utile dans notre démarche.
• XML Schema: DTD et XML Schema sont les deux métalangages d'XML. Ils permettent de spécifier les
règles syntaxiques que doit respecter à un document, dans notre cas les descriptions d’architecture. Les
schémas sont une alternative aux DTD plus récente et plus puissante. Ils y apportent quelques améliorations
comme l'adhérence à XML, des mécanismes forts de typage et d'héritage, et des mécanismes d'importation
qui permettent de modulariser les définitions en plusieurs schémas.
• XML parser : Les données contenues dans un document écrit au format XML sont lues et analysées par des
analyseurs syntaxiques dont le rôle est de décoder les balises ; ceci permet d'une part de vérifier la syntaxe,
d'autre part d'offrir aux applications clientes l'accès aux données dont elles ont besoin. Les deux types
d’analyseurs syntaxiques de base sont SAX (Simple API for XML ) et DOM API (Document Object Model
API). Ce dernier permet de représenter en mémoire le document sous la forme d'un arbre syntaxique, le
1
A part MetaH conçu par Honeywell, les ADL's proviennent généralement du monde académique.
Par Ed Colbert (USC) dans le cadre d'un projet de développement d'outils autour d'AADL, pour plus de détail voir
http://sunset.usc.edu/classes/cs577a_2003/projects/description/project8.htm
2
2
DOM, sur lequel les applications effectuent navigations et manipulations. Les parseurs vérifient et valident
la conformité syntaxique d'un document avec XML, et avec les définitions syntaxiques qui lui sont associées
dans les DTD's ou les Schémas .
• XSLT, XML Stylesheet Language, Transformation : XSLT permet de spécifier les règles de transformation
qui, appliquées à un document source XML permettent de produire un autre document sous une forme
voulue (conforme à un autre langage XML, ou mis en page en HTML, en PDF, etc.). Ces règles sont
contenues dans un document appelé feuille de style. Les processeurs XSLT permettent d'automatiser la
traduction des descriptions d'un formalisme à un autre.
• XLL (Xlink), XML Linking language (Xlink): XLink est le langage de lien d'XML. Il préserve la simplicité
des mécanismes de liaison de HTML en l'enrichissant (liens multidirectionnels, externes, comportement et
sémantique du lien). xADL2.0 utilise XLink de la façon la plus simple (liens unidirectionnel), ce qui lui
procure un système de pointeur.
• XQL, XML Query Language. XQL, comme son nom l'indique est le "SQL" d'XML. Il permet de concevoir
les requêtes destinées à chercher, filtrer, extraire des éléments de documents XML (des fragments) . Nous ne
l'utilisons pas dans le cas présent mais nous considérons qu'XQL peut représenter une alternative à XSLT.
• XML Data Binding : Ce n'est pas une norme XML mais c'est une pratique qui tend à se développer et qui
permet de rapprocher XML avec les langages orientés objets (en particulier Java), et par conséquent les
documents de leur représentation en mémoire. Le Data Binding consiste à produire du code orienté objet (en
l'occurrence du code Java) à partir des items XML; ceci en dérivant de façon systématique des classes et des
interfaces en correspondance avec le contenu des schémas. La représentation interne du document XML
après le parsing sera constituée d'éléments instances de ces classes et non d'objets XML comme dans le
DOM. En pratique, cela permet de manipuler des objets spécialisés avec des noms de classes, des noms
d'attributs, des constructeurs et des prototypes de méthodes (accesseurs et modifieurs) conformes à la
syntaxe définie dans les schémas. Cette technique peut s'avérer très utile s'il s'agit de développer ou
d'adapter de l'outillage où on manipule des objets d'architecture. Des processeurs permettent d'automatiser la
génération des interfaces et des classes directement dérivées des schémas. Nous verrons par la suite
qu'ArchStudio 3, l'environnement de développement associé à xADL2.0 s'appuie sur cette technique3.
2.2.1
Outils XML
Beaucoup d'outils ont été développés autour d'XML, sous forme d'API, ou d'environnements. Certains sont
gratuits ; on citera:
• Java WSDP (Java Web Service Developer Pack), gratuit, le package de SUN centré autour du
développement web. JWSDP contient JAXP (Java APIs for XML Processing) incluant les parseurs et les
processeurs de transformation, et JAXB (Java Architecture for XML Binding) pour le Data Binding
[JWSDPweb].
• Saxon, développé par M. Kay, un processeur XSLT open-source. La dernière version ajoute un processeur
xQuery. [Saxonweb].
Dans le cadre de développement XML, l'utilisation d'environnements XML commerciaux est souhaitable. Ils
sont plus complets, et bien documentés (guides utilisateur et tutoriels).
• TIBCO Extensibility, commercial avec clé d'évaluation gratuite 30 jours, une suite d'outils XML incluant
éditeurs (TurboXML) et outils de mapping et de tranformation (XMLTransform) [TIBCOweb]
• XMLSpy, MapForce, commercial avec clé d'évaluation gratuite 30 jours, un ensemble complet d'outils
XML. Actuellement c'est la référence en la matière.[Altovaweb]
2.3
xADL2.0 [xADL2.0web], [DHN01], [DH01].
2.3.1
Origine et particularité
xADL2.0 est un ADL développé par UCI (University of California, Irvine) dans le cadre de recherches
autour de la gestion de configuration d'architectures dynamiques et distribuées. Dès l'origine, xADL2.0 a donc
été défini pour être, avec les outils qui le supportent, fortement extensible, flexible et adaptable afin de servir aux
expérimentations au fur et à mesure de l'avancée des recherches.
A cet effet xADL2.0 s'appuie sur XML, plus exactement XML Schema. Il est défini par un ensemble de
schémas XML, chacun supportant une partie du langage. Ainsi construit de façon modulaire, il peut être étendu
par de nouveaux modules sans risque de modification régressive, de plus il est hiérarchisé, ce qui lui laisse la
possibilité d'avoir des extensions spécialisées et de s'adapter à des usages spécifiques. C'est pourquoi, même si à
l'origine il a été élaboré pour l'étude de la gestion et du dynamisme de la configuration, il offre une base solide et
3
Les concepteurs d'ArchStudio 3 ont également développé un générateur automatique de classes et d'interfaces dérivées
appelé Apigen car à cette époque, en 2001, la technique n'était pas encore bien répandue et les outils proposés immatures.
3
stable à une ou plusieurs extensions comme l'expression du comportement et on peut dès lors imaginer l'adapter
à l'analyse des propriétés.
2.3.2
La base générique xArch
A l'origine d'xADL2.0, il y a eu le développement conjoint par UCI et CMU (Carnegie Mellon University)
d'un schéma de base appelé xArch [xArchweb] sur lequel se fonde également xAcme [xAmeweb]. xArch se veut
générique en offrant l'essentiel des éléments de la représentation architecturale. C'est l'ADL a minima. Il inclut
les quatre éléments fondamentaux de l'architecture, composant, connecteur, interface et configuration, offre en
outre un mécanisme de composition hiérarchique et un mécanisme de groupage arbitraire.
xArch est entièrement défini dans un schéma appelé instance.xsd dont voici une image simplifiée
xArch
ArchInstance [0..*]
ComponentInstance [0..*]
InterfaceInstance [0..*]
Direction (in, inout,out) [0..1]
SubArchitecture [0..1]
ArchInstance
InterfaceInstanceMapping [0..*]
outerInterfaceMapping -- pointeur vers une interface du composant père -innerInterfaceMapping -- pointeur vers une interface d'un composant fils -ConnectorInstance [0..*] -- même composition que ComponentInstance -LinkInstance [0..*]
Point [2]
anchorOnInterface -- pointeur vers une interface -Group [0..*]
member -- pointeur vers ce qu'on veut --
Figure 1 : le meta-modèle xArch4
2.3.3
Les extensions xADL2.0
xADL2.0 étend xArch, l'ensemble est à ce jour composé de neuf schémas reliés entre eux par des relations
5
de dépendance .
xArch
Sturcture & Types
Variants
Options
Abstract Implementation
Versions
Stuctural Diffing
BooleanGuard
Java Implementation
Message Rules
Figure 2 : le diagramme des schémas xADL2.0
•
•
•
Les schémas d'xADL2.0 s'articulent autour de trois domaines d'expression (tableau 1) :
La modélisation de l'architecture : Le premier groupe de schémas sert à la modélisation descriptive (xArch)
ou prescriptive (Structure & Types) de l'architecture. La différence entre les deux approches réside dans le
fait que l'une, l'approche prescriptive, concerne la conception et utilise les mécanismes de typage, l'autre,
l'approche descriptive, concerne l'exécution et se fonde sur des instances.
Le mapping avec l'implémentation : Les ADL's ont montré depuis leur début l'intérêt de spécifier le
mapping entre les éléments de la description et leur implémentation. C'est par ce biais que des outils peuvent
instancier et manipuler le système à l'exécution à partir du modèle.
La gestion de la configuration architecturale: Il s'agit d'appliquer les outils de gestion de configuration
traditionnels, comme la spécification des options, des versions et des variantes, aux éléments architecturaux
et à l'architecture elle même.
A noter que la description du comportement ne fait pas partie des préoccupations des auteurs de xADL2.0.
4
La figure 1 représente la syntaxe de façon hiérarchique, l'occurrence des instances de chaque élément est représentée entre
crochet, l'absence de crochet signifie qu'une et une seule instance de l'élément est obligatoire. Les commentaires sont en
italiques.
5
XML schema offre des mécanismes d'import et d'include qui permet à un schéma d'utiliser, voire de dériver des items d'un
autre schéma.
4
Purpose
Architecture
Modeling –
Description
&Prescription
Instanciable
Architecture
Architecture
Configuration
Managment /
Product Family
Archirtecture
Schema
Features Provided
xArch Instance
Java Implementation
Options
Component, connector, interface & link instances; arbitrary groups;
hierarchical construction.
Design-time architectural prescription; architectural structure (Components,
Connectors, Interfaces & links), programming-language style types-andinstances model; hiérachical construction via type.
Abstract placeholder for implementation information for components &
connectors
Java-spécific implementation information for component & connectors
Optionnal components, connectors & links
Variants
Variant component & connector types.
Versions
Version graphs for components, connectors, & interfaces
Structure & Types
Abstract Implementation
Tableau 1 : xADL2.0 schemas and features provided6
Parmi les schémas qui composent xADL2.0, plus utile à la conception qu'à la gestion de la configuration, le
schéma "Structure & Types" fournit un mécanisme de typage/instanciation à l'image des langages de
programmation classiques. Ce schéma permet de distinguer la description des types de la description des
structures et des instances. A priori, l'analyse d'un système ne nécessite pas cette vision "prescriptive" de
l'architecture, toutefois elle pourrait permettre d'associer aux composants typés des modèles de comportements.
xArch : {ArchStructure [0..*], ArchTypes [0..*]}
ArchTypes
ComponentType
Signature [0..*]
Direction (in, inout,out) [0..1]
type [0..*] -- pointeur vers un InterfaceType -SubArchitecture [0..1]
archStructure -- pointeur vers une ArchStructure -SignatureInterfaceMapping [0..*]
outerSignature -- pointeur vers une signature du composant père -innerInterface -- pointeur vers une interface d'un composant fils -ConnectorType [0..*] -- même composition que ComponentType -InterfaceType [0..*]
ArchStructure
Component [0..*]
Interface [0..*]
Direction (in, inout, out) [0..1]
Type [0..*] -- pointeur vers un InterfaceType -Type [0..*] -- pointeur vers un ComponentType -Connector [0..*] -- même composition que Component -Link [0..*] -- idem archInstance: LinkInstance-Group [0..*] -- idem archInstance: Group--
Figure 3 : le modèle Structure & Types
2.3.4
Outils xADL2.0
Trois outils participent à la spécification, la manipulation et l'utilisation d'xADL2.0 [ED01], [DHN02]:
XML Spy
Apigen
ArchStudio 3
Schémas
xADL2.0
xarchlibs
document de
description
d' architecture
?
légende
outils
données
in
out
Figure 4 : la chaîne d'outils autour d'xADL2.0
•
XML Spy (Altova) ou tout autre environnement de développement XML, pour la spécification, l'édition et
la manipulation des schémas.
6
Ce tableau est extrait de l'article de présentation initial d'xADL2.0 et date de 2001 [DTH01], les schémas BooleanGuard,
StructuralDiffing et Message Rules ont été développés après, ils ne présentent que peu d'intérêt dans le cas présent. Pour plus
d'explication, se reporter au site consacré à xADL2.0 [xADLweb].
5
•
Apigen (UCI), un générateur "data-binding" qui permet de dériver automatiquement en classes et interfaces
Java le contenu des schémas xADL2.0. Ces implémentations sont regroupées dans une librairie appelée
xarchlibs. (pour le data binding , se reporter au chapitre consacré à XML)
ArchStudio 3 (UCI), écrit en Java, est un environnement de développement d'architecture qui supporte
xADL2.0. ArchStudio 3 utilise les implémentations Java obtenues par data binding pour construire les
représentations internes en mémoire des descriptions qu'il traite.
•
Cette chaîne d'outils facilite l'adaptation de l'environnement ArchStudio 3 aux évolutions du langage
xADL2.0. Il fournit aussi un cadre d'interropérabilité pour un possible atelier logiciel composé de plusieurs
outils compatibles XML-xADL2.0.
2.3.5
Archstudio 3 et Apigen [ArchStudioweb]
ArchStudio 3, développé par UCI, est un environnement d'édition, de configuration et d'analyse
d'architectures logicielles fondé sur xADL2.0. A noter que ArchStudio 3 est largement ouvert aux
développements extérieurs. Le site web qui lui est consacré permet d'y trouver un grand nombre d'informations
bien détaillées autant à l'intention des utilisateurs que d'éventuels développeurs.
Les fonctionalités d'ArchStudio 3 sont :
•
•
•
•
L'édition de documents de description d'architecture xADL2.0 (Création, lecture, écriture, enregistrement)
La vérification et la validation syntaxique conforme avec xADL2.0.
La sélection de variantes ou de versions.
L'instanciation et le lancement des applications à partir de leur description architecturale et de
l'implémentation de chaque composant ou connecteur.
Un certain nombre d'analyses (en cours de développement, actuellement non documentées).
•
Notons l'interface graphique de l'éditeur, adaptable en fonction de l'évolution du langage. L'IHM de l'éditeur
s'appuie sur une représentation de l'arbre syntaxique de la description (cadre de gauche). approche qui permet
une accessibilité visuelle pratique et rapide, ainsi que le pliage et le dépliage de l'arbre à volonté en fonction de la
zone manipulée. Son adaptation suite au modification des schémas, et qui concerne les menus contextuels et les
cadres de saisies est réalisée automatiquement après recompilation par Apigen de la librairie xarchlibs (figure 4).
description de
l'architecture
menu contextuel
de composition
Champ de saisie des
valeurs d'attributs
Figure 5 : L'éditeur d'ArchStudio 3
Quant à l'ajout de nouvelles fonctionnalités, elle est facilitée d'une part par le data binding (le développeur
maîtrise les objets du modèle représenté en mémoire, il en connaît la composition et l'interface) et par
l'architecture de style C2 [C2web] d'ArchStudio 3 (voir le tour d’horizon sur les ADL’s en début de document).
Sans entrer dans les détails, précisons que le style d'architecture C2 est aussi fait pour favoriser le développement
et l'intégration de nouveaux composants dans une architecture.
2.4
AltaRica [AltaRicaweb]
2.4.1
But du langage
"Le langage AltaRica a été conçu pour spécifier formellement le comportement de systèmes en présence de
fautes et exploiter ces spécifications à l'aide d'outils complémentaires : simulateur symbolique, model-checker,
générateur d'arbre de défaillance" [CS01].
6
2.4.2
Syntaxe et sémantique
[APGR03]
Avec AltaRica, un système est modélisé sous la forme d'automate à contraintes. Le système est décrit de
façon hiérarchique (arborescente) par trois types de nœuds : un sommet (main), des nœuds intermédiaires et des
nœuds feuilles. Sauf s'il n'existe qu'un niveau de hiérarchie, le nœud main est assimilable à un nœud
intermédiaire, il correspond au système. Les nœuds sont décrits comme des automates, des assertions permettent
de contraindre leurs comportements aux seuls cas possibles. Voici l'essentiel du langage :
AltaRica
Node Main
Node Intermédiaire [0..*]
Node Feuille [0..*]
Node (Feuille et intermédiare)
Name -- unique -Flow [0..*] -- variables de flux -Domain -- domaine de valeurs, type -Way -- in, out -State [0..*] -- variables d'états -Domain -- domaine de valeurs, type -Event [0..*] -- événements (constantes symboliques) -Trans [0..*] -- dynamique des états du nœud ---- triplet <garde, évenement, affectation sur les variables d'état> -Assert [0..*] -- contraintes sur les configurations (valeurs des variables) -(Node Intermédiaire uniquement)
Sub [0..*] -- sous-nœuds (=instances de nœuds) de la forme Id.nodeName-Sync [0..*] -- contraintes de simultanéité entre les événements du nœud père et ceux des nœuds fils --
Figure 6 : Le méta-modèle AltaRica
Actuellement AltaRica est en cours de stabilisation, une variante temporisée, TimedAltaRica [CP03],
devrait lui permettre d'étendre son champ d'application à l'évaluation des performances et l'analyse des systèmes
temps réels.
2.4.3
Outils AltaRica
Divers outils traitent les modèles AltaRica et permettent l'édition, la génération et l'analyse d'arbres de
défaillance, de diagrammes de décision, la génération de séquences d'événements, la simulation graphique, le
model checking, l'analyse stochastique, la compilation en modèles de plus bas niveau (Réseau de Petri), la
conversion depuis et vers Lustre, etc. On peut citer :
•
•
•
•
3
3.1
Altatools (LaBRI) : Model-Checker, traducteur depuis et vers Lustre, Simulateur, …
AltaRica DataFlow Toolbox (ARBoost Technologie) : Génération d'arbre de défaillance, simulateur
graphique, analyseur de chaînes de Markov, simulateur stochastique, générateur de séquences, …
CECILIA AltaRica OCAS (DASSAULT, GFI) : Interface de conception graphique, simulateur graphique,
générateurs de modèles (arbres de défaillance, modèles stochastiques), générateur de séquences, …
Les outils Externes : ARALIA (analyse des arbres de défaillance), SMV (model checking), Moca-RP
(réseau de Petri), UPPAAL (vérification de système temps réel), …
Extension d'xADL2.0 au comportement
xAltarica [xAltaricaweb]
Afin de faciliter le mapping avec xADL2.0, et par la suite l'interropérabilité entre les deux langages, une
première étape a consisté à établir la spécification du langage AltaRica par des schémas XML que nous avons
nommés xAltarica. xAltarica profite de la modularité permise par XML Schema. Trois schémas ont été
développés et un importé :
utils.xsd
<<uses>>
alarica.xsd
<<uses>>
.xArch
timedaltarica.xsd
Figure 7 : xAltarica
•
altarica.xsd qui sert à représenter le méta-modèle AltaRica. altarica.xsd inclut Architecture, Component,
Flows, Flow, Events, Event, States, State, Transition, Assert, Composition, Sub, Sync, Configuration, etc.
7
•
•
•
utils.xsd qui rassemble les outils mathématiques comme les expressions logiques et arithmétiques utilisées
par les assertions tels ArithmeticExpression, ArithmeticValue, ComparisonExpression, BooleanExpression,
BooleanValue, Constant, Variable, Value, etc.
timedAltarica.xsd qui étend les termes d’altarica.xsd pour intégrer des attributs temporels.
timedAltarica.xsd est en attente de la version stable de Timed AltaRica.
instance.xsd (schémaq d'xArch) : Nous utilisons également quelques éléments génériques contenus dans le
schéma instance.xsd tels XMLink, Description, Direction et Identifier7.
xAltarica ne change en rien la sémantique d'AltaRica. Seules, quelques modifications d'ordre syntaxique y
ont été apportées. L'une sur le terme "Assert" décomposé en deux termes "Assert" et "Configuration", dans le but
de distinguer configuration topologique et configuration comportementale, une autre par l'ajout d'une clause
"Composition" dont l'intention est d'encapsuler les caractéristiques de composition Sub, Sync et Configuration
des composants composites (nodes main et intermédiaires). Enfin, "Node" prend le nom de "Component".
AltaRica
Node
Name
Flow
State
Event
Trans
Extern
Init
Assert
Sub
Name
: NodeName
Sync
Assert
xAlatrica
Component
Identifier
Flow
State
Event
Trans
Extern
Init
Assert
Composition
Sub
Identifier
#Component
Sync
Configuration
Tableau 2 : d'AltaRica à xAltarica
A noter que xAltarica est un outil qui peut interresser par lui même la communauté des utilisateurs et des
développeurs d'AltaRica, en particulier les outilleurs.
3.2
Comparaison xAltarica, xADL2.0
Le mapping entre xAltarica et xADL2.0 permet de mettre en évidence les ressemblances et les différences
pour finalement déterminer la partie qui manque à xADL2.0 pour exprimer le comportement.
Quelques observations préliminaires :
• Les deux langages possèdent un mécanisme de composition.
• Le typage, explicite dans xADL2.0 (Schéma Structure & Types) est implicite dans AltaRica lors de
l'instanciation des nodes dans les termes "sub" ( Name:NodeName ).
• AltaRica ne définit pas de façon explicite la configuration (les liaisons), cela à été ajouté à xAltarica.
• AltaRica ne définit pas la notion de "connecteur". Cette notion est, soit supportée par des composants, soit
implicitement incluse dans les liaisons qui connectent les flots. Enfin, la synchronisation des évenements
("sync") pourrait aussi être considérée comme un connecteur.
• xADL2.0 ne possède aucun mécanisme de description de comportement des composants.
• xADL2.0 définit les "interfaces" de façon générale, AltaRica distingue les "events" et les "flows"
• xADL2.0 à l'heure actuelle ne considère pas les "interfaces" comme des variables.
Du fait des deux styles de description possibles avec xADL2.0, descriptif (xArch Instance) ou prescriptif
(Structure & Types), il est préférable de procéder aux deux projections d'xAltarica, l'un sur le schéma xArch
(tableau 3), l'autre sur le schéma Structure & Type (tableau 4).
7
Deux raisons ont poussé à ce choix , faciliter le mapping avec xADL2.0 en partageant les mêmes items, et rester compatible
avec Apigen et ArchStudio.
8
xAltarica
AltaricaModel ---------------------------
xArch
xArch
ArchInstance
ComponentInstance
--- Identifier
--- InterfaceInstance
?
------ Direction
--- InterfaceInstance
?
?
?
--- Subarchitecture
ArchInstance
----------- ComponentInstance
?
---------------- Identifier
Component ------------------------------Identifier --------------------------Flow ------------------------------Domain --------------------Direction -----------------Event -----------------------------State ------------------------------Trans -----------------------------Assert ---------------------------Composition ------------------------Sub -----------------------#Component ------Id (instance) ---------------------Configuration
SubLink ------------HiérachicLink -----Sync -----------------------? -------------------------------------------
----------- Link
--- InstanceInterfaceMapping
?
ConnectorInstance
Tableau 3 : xAltarica - xArch
xAltarica
AltaricaModel ------------------------Component ---------------------------Component ---------------------------Identifier ------------------------Flows ---------------------------Domain ------------------Way ---------------------Event ----------------------------State -----------------------------Trans ----------------------------Assert ---------------------------
Structure & Types
xArch
ArchStructure
ComponentType
--- Identifier
--- Signature
------ InterfaceType
------ Direction
--- ? ou Signature
--- ?
--- ?
--- ?
Subarchitecture
#Archstructure
------------ Component
------------------- Identifier
Interface
------------------- #ComponentType
Composition
Sub ---------------------------------Identifier ----------------# Component -------------------Configuration
SubLink -----------------HiérachicLink ----------Sync ---------------------? ----------------------------------------? ----------------------------------------Domain ---------------------------------
---------- Link
--- SignatureInterfaceMapping
?
ConnectorType
Connector
InterfaceType
Tableau 4 : xAltarica - Structure & Types
légende des tableaux 3 et 4
item------- | -----item : correspondance entre item xAltarica et item xADL2.0.
item------- | ----? : absence d’item correspondant.
#item : référence vers item à travers un lien XML.
Le premier tableau fait apparaître une difficulté pour identifier les sous composants (sub), problème qui ne
se pose pas dans le deuxième. Ceci nous a fait préférer le style plus prescriptif du deuxième tableau, d'autant
qu'ainsi, nous conservons le mécanisme de typage d'xADL2.0 qui facilite l'écriture. Sans ce mécanisme, chaque
composant est une instance et doit être décrit entièrement. Remarquons que dans ce cas le comportement d'un
composant est associé à son type.
Le tableau fait apparaître les items à rajouter pour completer xADML2.0, pour l'essentiel il s'agit de :
• La description du comportement interne des composants : Event, State, Trans, Assert
• La syncronisation des événements au niveau des sous architectures. (Sync)
9
3.3
xADL2.0*
Nous avons appelé "xADL2.0*" xADL2.0 étendu à l'expression du comportement. xADL2.0* ajoute les
trois schémas: util.xsd, alatarica.xsd et behavior.xsd à la version d'origine (figure 8) :
xArch
Structure & Types
util.xsd
altarica.xsd
behavior.xsd
Figure 8 : xADL2.0*
utils.xsd, et altarica.xsd sont les schémas d'xAltarica. Utils.xsd permet aux expressions logiques ou
mathématiques d'être écrites non comme des simples strings, mais conformément à leur structure syntaxique
particulière. Ce procédé permet de faire un véritable contrôle syntaxique sur la formulation des expressions. Pour
des raisons de lisibilité et de facilité d'utilisation, l'écriture des expressions par de simples strings reste permise.
L'essentiel de la valeur ajoutée est dans le schéma behavior.xsd. Afin étendre xADL2.0 à l'expression du
comportement certains items du schéma Structure & Types ont été spécialisés par ajout des items propres à
AltaRica spécifiés dans altarica.xsd :
•
•
•
•
•
•
ArchType est spécialisé en ArchTypeBeh par ajout de Déclaration ( Domain, Constant, Extern)
SubArchitecture est spécialisé en SubArchitectureBeh par ajout de Sync.
ComponentType est spécialisé en ComponentTypeBeh par ajout de Behavior, Extern et Domain.
Behavior est composé des éléments States, Events, Trans, Assert et Init
Extern, Flows, Events, States, Trans, Init et Assert proviennent du schéma altarica.xsd.
Domain et Constant sont empruntés à utils.xsd
Figure 9 : la structure de componentTypeBeh
Quelques points restent à éclaircir, notamment sur les connecteurs qui, au niveau syntaxique, se présentent
comme des composants (extension de connectorType par connectorTypeBeh). Le problème se pose lors de la
conversion d'AltaRica vers xADL2.0*, on ne sait pas si un composant AltaRica correspond à un composant ou
un connecteur xADL2.0*, à priori, tout serait composant.
3.4
Applications
3.4.1
Adaptation de la partie édition d'ArchStudio 3
Une première application de l'extension d'xADL2.0 est l'adaptation de facto de la partie édition
d'ArchStudio 3. Cette adaptation s'est effectuée à travers la régénération de la librairie xarchlibs avec Apigen.
Une fois la librairie recompilée, l'IHM de l'application a reflété automatiquement dans les menus contextuels et
les champs de saisie la nouvelle syntaxe. Ceci est illustré par la figure 10 qui donne deux exemples de
modification réflétée par l'IHM : un menu "Behavior" qui permet de composer le comportement du composant et
un champ de saisie pour l'instanciation d'un élément "State".
Notons toutefois quelques limitations concernant Apigen. Ce dernier impose certaines contraintes sur
l'écriture des schémas et il a fallu les formater en conséquence. La conséquence est une perte d'indépendance du
langage à ses outils support. Mais, comme UCI a développé plusieurs API's basées sur les implémentations Java
générées par Apigen, remplacer ce dernier par JAXB, plus standard, obligerait à procéder à leur réécriture (dont
plusieurs des composants d'ArchStudio 3).
10
Figure 10 : adaptation de l'éditeur
3.4.2
Traitements sémantiques
L'extension d'xADL2.0 à l'expression du comportement en fait un langage d'analyse. Pour l'heure, aucune
API orientée traitement sémantique du modèle n'a été développée pour être intégrée à ArchStudio 3. Ceci est
possible et reste à l'étude, la question étant de savoir s'il est préférable :
• de traiter le modèle en interne, dans ce cas développer la ou les API 's nécessaires.(a)
• de générer à travers un convertisseur un modèle bien formaté pour être exploité par les outils AltaRica.(b)
• ou de développer la ou les "feuilles de style" (c) qui permettraient de spécifier et réaliser automatiquement la
transformation de la description xADL2.0* en format AltaRica.
Cela nous permet de concevoir une infrastructure qui offre l'accès à l'ensemble des outils liés à xADL2.0*
et à AltaRica avec un unique document de description. L'infrastructure est adaptable, extensible et peut suivre les
évolutions des langages. La figure suivante indique les composants à développer et à intégrer dans ou hors
ArchStudio 3 pour le traitement sémantique des modèles xADL2.0* (a)(b)(c).
xml Spy
xAltarica
(XML schema )
xADL2.0*
(XML schema )
Apigen
MapForce
xarchlibs*
(c) feuilles de style xADL2.0*
vers xAltarica puis vers
parsing
unparsing
XSLT
ADT*
(a) API's
sémantique
document de
description
d'architecture
xADL2.0*
représentation
Altarica
Outils
Altarica
(b) Convertisseur
légende :
editeur
outils
données mémoire
ArchStudio 3
fichiers
à développer
ADT : Abstract Data Type
* : Etendu au comportement
Figure 11: infrastructure d’outils autour d'xADL* et AltaRica
Enfin, il reste toujours la possibilité de développer entièrement des applications spécialisées compatibles
xADL2.0* tirant partie d'XML, d'XSLT, voire d'xarchlibs. Nous obtenons ainsi une infrastructure souple aux
possibilités multiples mélant les outils xADL2.0 et ceux d'AltaRica.
11
3.4.3
Retour vers AltaRica
En complément de l’extension d’xADL2.0, nous développons les feuilles de style d'xADL2.0* vers
xAltarica puis d'xAltarica vers AltaRica8 afin d’offrir le moyen d’utiliser les outils associés à AltaRica à partir
d’une description xADL2.0*.(Option c du modèle précédent)
3.4.4
Généralisation
Par généralisation de l'infrastructure d'outils xADL2.0*, nous obtenons un modèle d'infrastructure d’outils
souple, adaptable et évolutive de traitement d'architecture. L'architecture de cette infrastructure se fonde sur :
• d'une part, un modèle de description unique conforme à un ADL complet traité de différentes manières en
adéquation avec les besoins utilisateur.
• d'autre part le recours aux technologies XML pour la spécification des langages, le formatage des modèles,
le parsing, la validation syntaxique, la correspondance syntaxique et la transformation des modèles. Ceci
pour faciliter l'évolution de l'infrastructure.
En conséquence l’infrastructure est composée de quatre type de constituants :
• Des fichiers : Schémas XML pour la définition des langages, feuilles de style pour la spécification des
transformations et éventuellement des fichiers de personnalisation des règles de data binding (traduction en
code Java)..
• Des outils XML : Environnements de développement XML pour l’édition de schémas et des feuilles de
style, API’s XML pour le data binding, le parsing et la transformation.
• Des outils de traitement et de manipulation de niveau syntaxique : éditeurs, convertisseurs, navigateurs. Ces
outils sont susceptibles de s’adapter directement aux modifications de syntaxe.
• Des outils de traitements sémantique des modèles, pour le calcul, l’analyse ou la simulation (intégrés ou
externes)
éditeur XML
personalisation
du Data Binding
ADL
(XML schema )
XML Data
Binding (JAXB)
environnement
de développement
d'architecture
Classes &
Interfaces
Dérivées
feuilles de style
ADL to X
parsing
unparsing
légende
outils
XML
fichiers
XML
transformation
(XSLT)
document
de
description
d'architecture
ADT
(ou DOM)
traitements
sémantiques
Correspondances
syntaxiques
(MapForce)
formalismes X
(XML schema )
conversions
représentations
format X
traitements
externes
traitements
syntaxiques
Figure 12 : Modèle d'infrastructure d’outils
4
Conclusion
Nous nous sommes interessé aux ADL's dans le but de disposer de moyens d'analyse de propriétés globales
de comportement pour des systèmes en cours de conception, ceci en se fondant sur la modélisation de leur
architecture. Souvent la rigidité des langages ne leur permet pas de bien s'adapter aux besoins, et
l'incompatibilité entre leur outils support freine l'accès aux traitements variés et multiplie les représentations.
C'est parce qu'il est extensible et indépendant que nous avons choisi xADL2.0. Sa vocation n'étant pas
l'analyse de comportement, il a fallu l'étendre en conséquence. Nous avons pour cela importé dans xADL2.0 la
8
Il s’agit dans ce cas de transformer le document XML en texte.
12
syntaxe et la sémantique d’AltaRica. Certaines caractéristiques d’xADL2.0 ont largement facilité la procédure :
la hiérarchisation du langage et le recours à XML Schema qui permet la modularisation et l’héritage. Nous avons
alors produit le schéma behavior.xsd et importé les schémas d'xAltaRica (altarica.xsd et utils.xsd), ce qui offre à
xADL2.0 la capacité d’ajouter à la description de la configuration architecturale, celle du comportement.
Ensuite, nous nous sommes interessé aux mécanismes d’adaptation des outils xADL2.0. La partie édition
d'ArchStudio 3 s’est adaptée de facto, et nous savons que le développement et l'intégration d'API's dans cet
environnement sont facilités par l'automatisation du data binding et une architecture de style C2 [C2web]. Nous
avons aussi cherché à réaliser l'interopérabilité entre xADL2.0* et AltaRica au moyen d'XSLT, la technique
standardisée de transformation d'XML capable de s'appuyer sur les schémas déjà définis. Nous en avons déduit
la possibilité de construire une infrastructure de logiciels souple réunissant les outils d'xADL2.0 étendu et ceux
d'AltaRica.
Nous proposons ainsi un modèle générique d'infrastructure logicielle souple et adaptable de traitement de
l'architecture fondée sur un ADL spécialisable et le large recours aux outils XML.
5
Bibliographie
[IEEE1471] IEEE Architecture Working Group: "Recommended Practice for Architectural description of
Softwrare-Intensive Systems", IEEE Std 1471-2000, IEEE, 2000.
[DG95]
David Garlan: "An Introduction to the Aesop System", Vesrsion of 11 July 1995.
http://www-2.cs.cmu.edu/Groups/able/aesop/html/aesop-overview.ps
[MDEK95] Jeff Magee, Naranker Dulay, Susan Eisenbach, Jeff Kramer: "Secifying Distributed Software
Architecture" Proc of the 5th European Software Engeneering Conference (ESE'C95) LNC 989,
(Springer-Verlag) page 137-153, 1995.
[DarwinRef] Naranker Dulay: "Darwin Tutorial & Reference"
http://www-dse.doc.ic.ac.uk/dse-papers/darwin/ref-manual.ps.gz
[TMAWR95] Richard N. Taylor, Nenad Medvidovic, Kenneth M. Anderson, E. James Whitehead Jr., Jason E.
Robins: "A Component-and Message-Based Architectural Style for GUI Software" In Proceedings of
the Sevenbteenth International Conference on Software Engineering (ICSE17) page 295-304, Seattle
WA, April 24-28, 1995. http://www.cs.ucsc.edu/~ejw/papers/c2-icse17.pdf
[DL96]
David C. Lukham: "Rapide, A langage Toolset for Simulation of Distributed System By Partial
Ordering of Events" In Proceedings of DIMACS Workshop on Partiel Order Methods in Verification
(POMIV) page 329-358, July 25-26, 1996. http://pavg.stanford.edu/rapide/rapide-pubs.html
[GZ96]
Gregory Zelesnik: "The UniCon langage Reference Manual", Carnegie Mellon University,
Pittsburgh, Pensylvania, 1996
http://www-2.cs.cmu.edu/afs/cs/project/vit/www/unicon/reference-manual/Reference_Manual_1.html
[SDKRTZ95] Mary Shaw, Robert Deline, Daniel Klein, Theodore Ross, David Young, Gregory Zelesnik :
"Abstraction for Software Architecture and Tools to Support Them", IEEE Transaction on Software
Engeneering, 21(4):314-335, April 1995
http://www-2.cs.cmu.edu/afs/cs/project/vit/www/paper_abstracts/UniCon.html
[MetaHRef]Steve Vestal: "MetaH User's Manual" version 1.27, Honeywell Technologie Center.
http://www.htc.honeywell.com/metah/uguide.pdf
[RA97]
Robert J. Allen: "A Formal Approach to Software Architecture", PhD. Thesis, Carnegie Mellon
University, Technical Report Number: CMU-CS-97-144, May, 1997.
http://www-2.cs.cmu.edu/~able/publications/rallen-thesis/
[MQRG97] Mark Moriconi, Xiaolei Qian, R.A Riemenschneider, Li Gong: "Secure Software Architecture",
Procceeding of the IEEE Symposium on Security and Privacy, page 84-93, Oakland, CA, May 1997.
http://www.sdl.sri.com/papers/s/p/sp97/sp97.ps.gz
[GMW97] David Garlan, Robert Monroe, and Dave Wile: "Acme: An Architecture Description Interchange
Language" In Proceedings of CASCON 97, Toronto, Ontario, November 1997, pp. 169-183.
http://www-2.cs.cmu.edu/~able/publications/acme-cascon97/
[MT00]
Nenad Medvidovic and Richard N. Taylor: "A Classification and Comparison Framework for
Software Architecture Description Languages". IEEE Transactions on Software Engineering, vol.
26, no. 1 (January 2000) http://sunset.usc.edu/~neno/teaching/s99/survey-long.pdf
[FLV03] Peter H Feiler, Bruce Lewis, Steve Vestal: "The SAE Avionics Architecture description Language
(AADL) Standard:A Basis for Model-Based Architecture Driven Embedded Systems Engineering"
(2003). http://www.cse.wustl.edu/~cdgill/RTAS03/published/SAEAADLRTASv1.pdf
[PSSC98] Steeve Pruitt, Doug Stuart, Wonee Sull, T.W. Cook: "The merit of XML as an Architecture
Description Language Meta-Language". Microelectronics and Computer Technology Corporation,
october 1998. http://www.ece.utexas.edu/~perry/prof/wicsa1/final/pruitt.pdf
13
[KGOMT01] Rohit Khare, Michael Guntersdorfer, Peyman Oreizy, Nenad Medvidovic, Richard N. Taylor:
"xADL: Enabling Architecture-Centric Tool Integration With XML". In Proceedings of the 34th
Hawaii International Conference on System Sciences (HICSS-34), Maui, Hawaii, January 3-6, 2001.
http://www.ics.uci.edu/pub/c2/papers/KGOMT-SE.pdf
[BS01]
Bradley Schmerl : “xAcme : CMU Acme Extensions to xArch." (23 March, 2001)
http://www-2.cs.cmu.edu/~acme/pub/xAcme/guide.pdf
[LB97]
Luc Bellissard: "Construction et configuration d'application répartie", thèse Informatique, Systèmes
et Communication, IMAG/INRIA, Grenoble, 1997.
http://publications.imag.fr/publications/theses/annees/1997/Bellissard.Luc/these.dir
[DHN01] Eric M. Dashofy, André van der Hoek, and Richard N. Taylor : "A Highly-Extensible, XML-Based
Architecture Description Language ". In Proceedings of the Working IEEE/IFIP Conference on
Software Architectures (WICSA 2001), Amsterdam, Netherlands.
http://www.ics.uci.edu/~edashofy/papers/wicsa2001.pdf
[DH01]
Eric M. Dashofy and André van der Hoek "Representing Product Family Architectures in an
Extensible Architecture Description Languag". In Proceedings of the International Workshop on
Product Family Engineering (PFE-4), Bilbao, Spain, October 2001.
http://www.ics.uci.edu/~edashofy/papers/pfe2001.pdf
[ED01]
Eric M. Dashofy : "Issues in Generating Data Bindings for an XML Schema-Based Language". In
Proceedings of the Workshop on XML Technologies and Software Engineering (XSE2001),
Toronto, Ontario , Canada. http://www.ics.uci.edu/~edashofy/papers/xse2001.pdf
[DHN02] Eric M. Dashofy, André van der Hoek, and Richard N. Taylor: "An Infrastructure for the Rapid
Development of XML-based Architecture Description Languages". In Proceedings of the 24th
International Conference on Software Engineering (ICSE2002), Orlando,Florida.
http://www.ics.uci.edu/~edashofy/papers/icse2002.pdf
[CS01]
Charles Castel, Christel Seguin: "Modèles formels pour l'évaluation de la sûreté de fonctionnement
des architectures logicielles d'avionique modulaire intégrée". In AFADL: Approches Formelles dans
l'assistance au développement de logiciels, 2001.
http://www.cert.fr/en/dtim/publis/CVSI/2001/AFADL01.pdf
[APGR03] André Arnold, Gérard Point, Alain Griffault, Antoine Rauzy: "AltaRica, Manuel méthodologique",
LaBRI, Université de Bordeaux 1 et CNRS (UMR (5800), 2003.
http://altarica.labri.fr/Doc/
[CP03]
Claire Pagetti: "Une extension temporisée d'AltaRica", In Actes du Congrès Modélisation des
Systèmes réactifs, MSR'03, 2003. http://altarica.labri.fr/Doc/Biblio/Author/PAGETTI-C.html
Sites Web
[SEIADLweb] SEI: "Architecture Description Languages" : http://www.sei.cmu.edu/architecture/adl.html
[Aesopweb]"Aesop, Software Architecture Design Environment Generator", Home Page :
http://www-2.cs.cmu.edu/Groups/able/aesop/aesop_home.html
[Darwinweb] "The Darwin Architecture description Langage", Home Page :
http://www.doc.ic.ac.uk/~igeozg/Project/Darwin/
[C2web] "Chiron-2, A Component and essage Based Architectural Style for GUI Software" (1995)
http://www.ics.uci.edu/~arcadia/C2/c2.html
"The C2 architectural style" : http://www.isr.uci.edu/architecture/c2StyleRules.html
[ISRpub] "Architectural Style Publications": http://www.isr.uci.edu/architecture/publications.html#C2
[Rapideweb] "The Stanford Rapide Project", Home Page: .http://pavg.stanford.edu/rapide/
[UniConweb] "UNICON", Home Page: http://www-2.cs.cmu.edu/People/UniCon/
[MetaHweb] "MetaH Evaluation and support Site":http://www.htc.honeywell.com/metah/
[Wrightweb] "The Wright Architecture Description Language", Home Page.
http://www-2.cs.cmu.edu/afs/cs/project/able/www/wright/index.html
[SADLweb]"Dependable Systems Architectures", SADL Home Page
http://www.sdl.sri.com/programs/dsa/sadl-main.html
[Acmeweb] "The Acme Architectural Description Langage": http://www-2.cs.cmu.edu/~acme/
[Olanweb] "Olan: Un environnement de développement d'applications coopératives" (1995)
http://rangiroa.essi.fr/riveill/recherche/95-olan-francais.html
[ADMLweb] "Architecture Description Markup Language (ADML)"
http://www.opengroup.org/architecture/adml/adml_home.htm
[AADLweb] "The SAE AADL Standard": http://bscw.sei.cmu.edu/pub/bscw.cgi/d74911/index.html
[xADLweb] "xADL2.0", Home Page: http://www.isr.uci.edu/projects/xarchuci/index.html
[xArchweb] "xArch", Home Page : http://www.isr.uci.edu/architecture/xarch/
[xAcmeweb] "xAcme, Acme extensions to xArch": http://www-2.cs.cmu.edu/~acme/pub/xAcme
14
[ArchStudioweb] "ArchStudio 3, An Architecture-based Development Environment", Home Page.
http://www.isr.uci.edu/projects/archstudio
[AltaRicaweb] "AltaRica", Home Page.: http://altarica.labri.fr
[xAltaricaweb] "xAltarica, première ébauche":http://www.cert.fr/francais/deri/mareschal/altarica/xaltarica.html
[JWSDPweb] "Tools, Java Web Services Developer Pack"
http://www.java.sun.com/webservices/webservicespack.html
[Saxonweb] "Saxon, The XSLT and Xquery Processor" http://saxon.sourceforge.net/
[TIBCOweb] "XML Tools" http://www.tibco.com/solutions/products/extensibility/default.jsp?m=d7
[Altovaweb] "Products, XMLSPY 2004" http://www.altova.com/products_ide.html
15