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.