Rétro-ingénierie de composants `a partir de programmes Java

publicité
COLOSS
P1–S3
Sujet de master recherche
Architectures logicielles distribuées
2007–2008
Rétro-ingénierie de composants à partir de programmes Java
Encadrant principal : Pascal Andre
courriel : [email protected]
tél. : 02 51 12 59 65
Co-encadrant(s) : Gilles Ardourel
Cadre du travail
Dans le cadre d’un projet avec des partenaire Européens, nous nous intéressons à la Rétroingénierie de composants à partir de programmes Java [1, 2, 3].
Un premier problème est que la notion de composant n’existe pas en Java même s’il existe
des infrastructures ad-hoc pour manipuler des composants (EJB, .NET, CCM). Le processus
d’extraction (d’abstraction) ne peut donc être simple et direct, il nécessite des heuristiques et une
aide de l’utilisateur.
Dans le cadre du projet, on s’intéresse uniquement à l’abstraction de structures (composants,
services et connexions) et pour cette partie, nous avons distingué différents outils d’aide, comme
le montre la figure 1.
consistent
[annotated]
Java code
i
Structural
Abstract Model
i
annotation
definition
CCMM
definition
User
informations
(interactive)
Scheduler
Model
from
annotat
ions
Annota
tion
writer
from
model
Cluster
ing tool
Distribution
analyser
Model
transfo
rmation
...
External Tools
(parsers, graphs,
XMI…)
Input filter
Output filter
consistent
[annotated]
Java code
i+1
Structural
Abstract Model
i+1
Fig. 1 – Une vue architecturale du processus d’abstraction de structure
Voici quelques-unes des transformations primitives :
1. Annoter un programme Java à partir d’informations utilisateur.
2. Construire un modèle à composants à partir d’un programme Java annoté.
3. Construire un modèle à composants à partir d’un programme Java non annoté.
4. Analyser un programme réparti pour détecter des composants (déploiement).
5. Extraire des cluster par des outils de graphes (grouper des classes dans des composants, ou
grouper des composants dans des composites).
6. Réaliser des transformations de modèles telles que la fusion, la sélection... sur le couple (code,
modèle).
7. ...
Objectif du stage
Contribuer à la conception et l’implantation de cette boı̂te à outils collective. Compléter la
boı̂te à outil en réalisant une ou plusieurs transformations. Les objectifs précis seront affinés en
fonction de l’avancement du projet et des souhaits des étudiants.
Travail à réaliser
Le travail se déroule en plusieurs étapes. Dans un premier temps, l’étudiant devra se familiariser avec les architectures à composants, comprendre l’architecture globale de l’application de
rétro-ingénierie, maı̂triser le métamodèle des composants. Pour cela l’étudiant pourra se baser
sur les connaissances de l’équipe COLOSS dans le domaine, et en particulier sur l’environnement
COSTO et le langage Kmelia [4, 5, 6, 7].
Dans un deuxième temps, l’étudiant se familiarisera avec le métamodèle, le langage d’annotation
et les outils de manipulation de code Java.
Enfin il isolera deux ou trois transformations à réaliser et développera complètement ces transformations (conception et implantation) en respectant les interfaces avec les autres processus et les
modèles supports. L’implantation effective sera réalisée en Java.
Mots-clés : Composants, Java, Retro-Ingenierie, Transformation de modèles, Vérification.
————
Références
[1] Hausi A. Müller, Jens H. Jahnke, Dennis B. Smith, Margaret-Anne Storey, Scott R. Tilley, and
Kenny Wong. Reverse engineering : a roadmap. In ICSE ’00 : Proceedings of the Conference
on The Future of Software Engineering, pages 47–60, New York, NY, USA, 2000. ACM Press.
[2] Pavel Parı́zek, František Plášil, and Jan Kofroň. Model checking of software components :
Combining java pathfinder and behavior protocol model checker. In 30th IEEE/NASA Software
Engineering Workshop (SEW-30), pages 133–141. IEEE Computer Society, 2007.
[3] Jean-Marie Favre, Jacky Estublier, Frédéric Duclos, Remy Sanlaville, and Jean-Jacques Auffret. Reverse engineering a large component-based software product. In CSMR ’01 : Proceedings of the Fifth European Conference on Software Maintenance and Reengineering, page 95,
Washington, DC, USA, 2001. IEEE Computer Society.
[4] Christian Attiogbé, Pascal André, and Gilles Ardourel. Checking Component Composability. In
5th International Symposium on Software Composition, SC’06, volume 4089 of LNCS. Springer,
2006.
[5] Pascal André, Gilles Ardourel, and Christian Attiogbé. Defining Component Protocols with
Service Composition : Illustration withe Kmelia Model. In 6th International Symposium on
Software Composition, SC’07, volume to appear of LNCS, pages –. Springer, 2007.
[6] Pascal André, Gilles Ardourel, and Christian Attiogbé. Vérification d’assemblage de composants logiciels Expérimentations avec MEC. In Michel Gourgand and Fouad Riane, editors, 6e
conférence francophone de MOdélisation et SIMulation, MOSIM 2006, pages 497–506, Rabat,
Maroc, April 2006. Lavoisier.
[7] Pascal André, Gilles Ardourel, and Christian Attiogbé. Spécification d’architectures logicielles
en Kmelia : hiérarchie de connexion et composition. In 1ère Conférence Francophone sur les
Architectures Logicielles, pages 101–118. Hermès, Lavoisier, 2006.
Téléchargement