📝 Original Info
- Title: Faire levier sur les architectures logicielles pour guider et verifier le developpement dapplications SCC
- ArXiv ID: 1106.4200
- Date: 2011-06-22
- Authors: Damien Cassou (INRIA Bordeaux - Sud-Ouest, LaBRI), Charles Consel (INRIA Bordeaux - Sud-Ouest, ENSEIRB), Emilie Balland (INRIA Bordeaux - Sud-Ouest), Julia Lawall (DIKU)
📝 Abstract
A software architecture describes the structure of a computing system by specifying software components and their interactions. Mapping a software architecture to an implementation is a well known challenge. A key element of this mapping is the architecture's description of the data and control-flow interactions between components. The characterization of these interactions can be rather abstract or very concrete, providing more or less implementation guidance, programming support, and static verification. In this paper, we explore one point in the design space between abstract and concrete component interaction specifications. We introduce a notion of interaction contract that expresses allowed interactions between components, describing both data and control-flow constraints. This declaration is part of the architecture description, allows generation of extensive programming support, and enables various verifications. We instantiate our approach in an architecture description language for Sense/Compute/Control applications, and describe associated compilation and verification strategies.
💡 Deep Analysis
📄 Full Content
arXiv:1106.4200v1 [cs.PL] 21 Jun 2011
Faire levier sur les architectures logicielles pour guider et
vérifier le développement d’applications SCC⋆
Damien Cassou1, Emilie Balland2, Charles Consel2, and Julia Lawall3
1 Software Architecture Group, Hasso-Plattner-Institut, Potsdam, Germany,
2 INRIA/University of Bordeaux, France,
3 DIKU, University of Copenhagen, Denmark
Résumé Une architecture logicielle décrit la structure d’un système informatique en spé-
cifiant ses composants et leurs interactions. Projeter une architecture logicielle sur une im-
plémentation est une tâche reconnue difficile. Un élément crucial de cette projection est la
description architecturale des interactions entre les composants. La caractérisation de ces
interactions peut être plutôt abstraite ou très concrète, fournissant plus ou moins de support
de programmation et de possibilités de vérifications statiques.
Nous explorons un point dans l’espace de conception entre les spécifications abstraites et
concrètes des interactions de composants. Nous introduisons la notion de contrat d’inter-
actions qui exprime les interactions autorisées. Cette déclaration architecturale permet la
génération de support de programmation qui assure la conformité entre l’architecture et
l’implémentation, et favorise diverses vérifications. Nous instancions notre approche sur un
langage de description d’architectures pour les applications Sense/Compute/Control et dé-
crivons les stratégies de compilation et de vérification associées.
1
Introduction
Une application Sense/Compute/Control (SCC) est une application qui interagit avec un en-
vironnement extérieur. Ces applications se retrouvent dans des domaines comme la domotique, la
robotique et l’informatique autonome. Développer une application SCC est complexe car l’implé-
mentation doit prendre en compte l’interaction avec l’environnement. De plus, la correction est
essentielle puisque un changement dans l’environnement peut avoir des conséquences irréversibles.
Une application SCC peut être définie suivant un style architectural comprenant quatre types
d’éléments organisés en couches : (1) les sources, en bas, obtiennent les informations de l’environ-
nement ; (2) les opérateurs de contexte traitent ces informations ; (3) les opérateurs de contrôle
utilisent ces informations raffinées pour contrôler (4) les actions, en haut, qui impactent finale-
ment l’environnement. Projeter une architecture logicielle ayant un tel niveau d’abstraction vers
une implémentation et maintenir cette projection sont des tâches reconnues difficiles.
Dans cet exposé nous proposons une approche pour lier architecture et implémentation qui
vise les applications SCC. Cette approche introduit la notion de contrat d’interactions permettant
à un architecte de déclarer quelles sont les interactions qu’un élément de l’architecture a le droit
de réaliser (Section 2). Cette notion de contrat d’interactions est dédiée au style architectural
SCC dans le sens où un contrat d’interactions ne peut, syntaxiquement, décrire que les interac-
tions autorisées par le style. Les contrats d’interactions sont utilisés pour générer un support de
programmation qui va guider le travail d’implémentation par les développeurs tout en maintenant
la conformité avec l’architecture (Section 3). L’architecte peut aussi utiliser les contraintes expri-
mées par les contrats d’interactions pour vérifier un ensemble de propriétés allant au delà de la
conformité (Section 4).
2
Contrats d’interactions
Le but d’un contrat d’interactions est de décrire les interactions autorisées d’un opérateur au
sein d’une application SCC. Ce contrat d’interactions est un triplet constitué des informations sui-
⋆. Ces deux pages résument l’article “Leveraging Software Architectures to Guide and Verify the Deve-
lopment of Sense/Compute/Control Applications” publié à ICSE ’11
vantes : la condition d’activation permet d’indiquer quelles sont les interactions capables d’activer
l’opérateur ; les données requises permettent d’indiquer les interactions supplémentaires autorisées
pour chaque condition d’activation ; les actions à entreprendre permettent d’indiquer la réponse
appropriée à chaque activation (émission d’une information pour un opérateur de contexte ou
commande d’une action pour un opérateur de contrôle). En résumé, les contrats d’interactions
guident le travail de l’architecte en lui proposant un cadre de spécification dédié au style SCC.
3
Support de programmation
Nous avons intégré les contrats d’interactions dans DiaSpec, un langage de description d’ar-
chitectures dédié aux applications SCC. À partir d’une architecture en DiaSpec, un générateur
de code produit un framework de programmation Java dédié. Ce framework de programmation
généré contient une classe abstraite pour chaque élément de l’architecture. Cette classe abstraite
générée contient des méthodes pour faciliter l’implémentation des éléments ainsi que des décla-
rations de méthodes abstraites permettant d’implémenter la logi
Reference
This content is AI-processed based on open access ArXiv data.