COOK: Réarchitecturisation des applications industrielles objets est un projet finance GIP-ARN (JC05 42872).
News
Nous avons un nouvel article accepte a CSMR 2008: Hani Abdeen, Ilham Alloui, Stéphane Ducasse, Damien Pollet and Mathieu Suen, “Package Reference Fingerprint: a Rich and Compact Visualization to Understand Package Relationships,” European Conference on Software Maintenance and Re-Engineering, (CSMR 2008), IEEE Computer Society Presse, 2008, pp. 00-99.
Ce projet de recherche s'inscrit dans le contexte de la ré-ingnierie et l'évolution d'applications industrielles objets. La ré-ingnierie hérite des problèmes complexes liés la maintenance (compréhension, analyses, transformations de programmes). A cela s'ajoute une complexité due la liaison tardive, la définition incrmentale de programmes telle que les frameworks et lignes de produits (product lines). Partant de notre expérience, ce projet s'attaque aux problèmes de l'évolution de ces applications par la prise en compte explicite de la notion d'architecture, notion souvent enfouie dans les millions de lignes de code de telles applications. Les résultats attendus sont : la modélisation des architectures au sein d'un environnement de ré-ingnierie, l'identification par l'extraction et explicitation des architectures logiciels du code des applications sous analyse, l'analyse de la violation d'architecture, l'analyse de l'évolution d'architectures et la refactorisation de code dirige par l'architecture. Les résultats de Cook seront valids sur des applications industrielles.
Mots Clefs : Génie logiciel, Maintenance, Architecture, R-ingnierie, Rtro-conception, Evolution, Modèles, Frameworks, Patterns, Analyse
Introduction
Une grande partie de l'effort de développement des logiciels industriels de grande taille et longue dure de vie est passée dans leur maintenance et évolution. Le but de Cook est la prise en compte des architectures logicielles (c-à-d, extraction depuis le code source, analyse, etc.) comme élément capital pour l'aide l'évolution des applications industrielles objets. Cook se décompose autour de cinq points logiquement articulés et dont les résultats vont s'échelonner sur une période de trois ou quatre annes. Les résultats de ce projet seront évalus sur des applications industrielles.
- Modélisation de la notion d'architecture. La première étape consiste introduire cette notion dans Moose, l'environnement de réingnierie, développé au sein de l'équipe. Ceci implique de pouvoir modéliser une architecture et les éléments qui la constituent en les reliant aux entités représentant le code de l'application.
- Approches d'identification d'architectures des applications objets. Identifier l'architecture partir du code d'une application ou de son excution est une information vitale pour comprendre et maintenir une application. Nous abordons donc l'extraction d'architecture du code des applications sous analyse afin de pouvoir raisonner sur des modéles d'architectures de plus haut niveau d'abstraction. Il s'agit d'exprimer et de proposer des outils pour la visualisation, la compréhension des architectures et leur extraction partir du code.
- Identification de violation d'architecture. Les applications industrielles ne respectent pas souvent les architectures qui les décrivent. De même, l'usure du temps crée une érosion des architectures (architectural drift). Identifier de telles violations est primordial pour éviter des problèmes importants accompagnant l'évolution de telles applications. Notre objectif est de fournir des outils pour aider identifier de telles violations.
- Analyse de l'évolution d'architectures. La prise en compte des changements de l'architecture d'un grand logiciel est une information qualitative importante. Savoir qu'un élément architectural est stable ou change de manire fréquente est aussi une information qualitative importante. Nous proposons des analyses de l'évolution des architectures et des aides pour sa compréhension.
- Remodularisation et définition de refactorings architecturaux. Etre capable de transformer une architecture étape par étape ou de remodulariser une application existante est une tâche complexe mais importante. Nous comptons développer des aides à la remodularisation en utilisant des algorithmes de groupement (clustering algorithms). De plus, les refactorings, transformations de code avec conservation du comportement existent mais avec une granularit fine au sein de classes. Nous voulons définir des refactorings prenant en compte l'architecture de l'application (donc un niveau plus abstrait).
Comptences de l'équipe
Le projet Cook est la convergence de deux activités d'une part la ré-ingnierie et d'autre part la définition de langages architecturaux. Cook se fonde sur la complmentarité des participants du projet.
Contributions en ré-ingnierie.
Cook s'inscrit dans la ligne de travaux qui ont débuté dans le cadre du projet Esprit FAMOOS (A Framework based Approach for Mastering Objet-Oriented Systems-IST-1996-1999). FAMOOS était précurseur et un des premiers projets de recherches traiter de la ré-ingnierie dans le contexte spécifique des applications objets et du projet RECAST (Swiss National Fund 2002-2005). sur l'évolution des applications objets. Les contributions sont d'un côté la publication d'articles et de thèses, et d'un autre, l'implantation de prototypes de qualité qui ont été validés sur des applications industrielles et utilisés par plusieurs universités (Berne, Lugano, Bruxelles). Nous montrons les éléments relatifs à Cook.
- FAMIX : un méta-modèle indpendant des langages. Comme nous devions analyser différents langages Smalltalk, C++, Java, nous avons défini un méta-modèle permettant de représenter les aspects centraux des langages objets et d'étendre ce méta-modèle.
- Moose : Implantation d'une plate-forme de ré-ingnierie. Nous avons construit une plate-forme permettant d'extraire, charger, stocker et d'analyser plusieurs modèles simultannément, de calculer des métriques, de définir des analyseurs spécialisés [Moose]. Moose est utilisé par plusieurs chercheurs des Universitsés de Bruxelles, Berne et Lugano.
- CodeCrawler : compréhension de grands systèmes [CodeCrawler]. Nous avons développé une approche pour permettre de comprendre de grands systèmes. L'outil développé, CodeCrawler, se fonde sur FAMIX et MOOSE. CodeCrawler a été utilisé lors de l'analyse d'applications industrielles.
- VAN : Comprhension de l'volution de logiciels [VAN]. Nous avons tendu Moose pour la prise en compte de l'volution des logiciels.
Contributions en Architectures Logicielles.
Cook se situe dans la continuité des travaux menés au sein des projets Archware (ARCHitecting Evolvable softWARE, IST 5 32360, 2002-2005). Archware propose une approche centrée architecture du développement logiciel ainsi qu'un ADL bas sur le pi-calcul permettant d'exprimer l'volution dès la phase de conception et PIE (Process Instance Evolution, ESPRIT IV LTR, 1998-2001) pour lesquels il est possible d'emprunter certaines approches (centre architecture, langages de description d'architectures évolutives, stratégies et outils d'évolution) liées à la prise en compte de l'évolution. Les contributions sont d'un côté par la publication d'articles et de thèses, et d'un autre, par la définition de langages et de prototypes logiciels. Nous ne nous citons que les éléments relatifs Cook.
- Archadl : un langage de description d'architectures évolutives. Ce langage bas sur le pi-calcul est un langage structuré en plusieurs couches. Cette structuration est articule autour d'un noyau PiADL (qui propose un calcul pour les composants logiciels) et un mecanisme d'extension. Il dispose de plusieurs syntaxes (textuelle concrte, XML, etc.). Il permet d'exprimer des propriétés structurelles et comportementales et est doté de mécanismes permettant la définition de propriétés (structurelles et comportementales) et de styles architecturaux.
- Plusieurs prototypes dans le domaine des architectures logicielles dont (1) un animateur qui permet de reprsenter graphiquement la structure et le comportement d'une architecture exprime avec le langage PiADL et (2) un outil d'analyse de propriétés.