Generic Model-Based Approaches for Software Reverse Engineering and Comprehension
Total Page:16
File Type:pdf, Size:1020Kb
THESE DE DOCTORAT DE L'UNIVERSITE DE NANTES COMUE UNIVERSITE BRETAGNE LOIRE ECOLE DOCTORALE N° 601 Mathématiques et Sciences et Technologies de l'Information et de la Communication Spécialité : Informatique Par Hugo BRUNELIERE Generic Model-based Approaches for Software Reverse Engineering and Comprehension Thèse présentée et soutenue à Nantes le jeudi 20 décembre 2018 Unité de recherche : IMT Atlantique Bretagne-Pays de la Loire, Ecole Mines-Télécom Laboratoire des Sciences du Numérique de Nantes – LS2N (CNRS, UMR 6004) Rapporteurs avant soutenance : Richard Paige Professeur – University of York, York (United Kingdom) Benoit Baudry Professeur – KTH Royal Institute of Technology, Stockholm (Sweden) Composition du Jury : Président : Jordi Cabot Professeur – ICREA & Open University of Catalonia, Barcelona (Spain) Examinateurs : Richard Paige Professeur – University of York, York (United Kingdom) Benoit Baudry Professeur – KTH Royal Institute of Technology, Stockholm (Sweden) Corinne Miral Maître de conférences HDR – Université de Nantes, Nantes (France) Référent : Gerson Sunye Maître de conférences HDR – Université de Nantes, Nantes (France) Note : Les travaux scientifiques présentés dans ce manuscrit de thèse ont été réalisés sous la supervision du Professeur Jordi Cabot, également membre du jury. Acknowledgement Foremost, I would like to express my sincere gratitude to Dr. Gerson Sunye and Prof. Jordi Cabot for their precious advices and feedback when writing down this Ph.D. thesis manuscript that summarizes a significant part of my professional life. This has been quite a constructive experience for me. I also would like to thank Prof. Jordi Cabot for mentoring me during his years in Nantes, and I hope we can continue having more good collaborations in the future. Besides them, I would like to thank Prof. Richard Paige and Prof. Benoit Baudry for reviewing the present manuscript and providing their insightful comments on this work. In addition, I would like to thank Dr. Corinne Miral for also taking part in my thesis committee. I thank all the so-called AtlanMod & Friends (and now NaoMod folks) for the stimu- lating, international and fun working environment in which I have the chance to evolve since more than 12 years. Notably, I would like to give extra thanks to the project engi- neers that did a great job on the implementation of MoDisco & EMF Views: people from Mia-Software (Frédéric Madiot, Grégoire Dupé, Fabien Giquel and others), Guillaume Doux, Juan David Villa Calle, Jokin García Pérez and Florent Marchand de Kerchove. More generally, I thank everyone I had the chance to meet, discuss and work with all along these years in the context of various projects or conferences/events, here in Nantes or elsewhere in Europe and the rest of the world. It has been a long enriching journey! Last but not least, I would like to give very special thanks to Prof. Jean Bézivin for convincing me to work in a research environment in the first place. I am grateful for this great opportunity he offered me back then. 3 4 To my wife and little boy To my parents and younger sister To my entire family, and to the new Brazilian one To my other family: friends from my hometown, from here and elsewhere Résumé Français Introduction Avec l’avènement des technologies de l’information dans notre société, les organi- sations entreprennent de plus en plus de projets de migration et/ou de modernisation lo- giciel. De nombreuses entreprises, indépendamment de leur taille et secteur d’activité, font désormais face au problème bien connu de devoir gérer, maintenir, faire évoluer ou remplacer leurs systèmes logiciel existants [135]. Une telle situation est principalement due aux fréquentes et rapides modifications dans le paysage technologique. Cependant, les raisons sont généralement multiples: nouveaux besoins utilisateurs, stratégies métiers en évolution, aspects organisationnels en mouvement, législations changeantes, etc. Dans tous les cas, la motivation principale derrière les projets de migration/modernisation est habituellement économique [130]. En raison de cela, les entreprises sont régulièrement poussées à faire évoluer (au moins en partie) leurs systèmes logiciel déjà existants avant que ceux-ci ne deviennent véritablement obsolètes ou ne commencent à dysfonctionner. Ces systèmes patrimo- niaux sont souvent de grandes applications jouant un rôle critique au sein du système d’information de l’entreprise [15]. De plus, ils ont habituellement un impact non-négli- geable sur son fonctionnement au quotidien. Les projets de migration/modernisation associés ne peuvent donc pas être pris à la légère, puisqu’ils ne viennent jamais sans d’importants challenges associés [122]. Dans le cas idéal, ils ne devraient pas débuter en raison de modes passagères mais plutôt car fortement motivés par de réels limitations technologiques ou en anticipation de problè- mes à venir. Cependant, en pratique, les décideurs et ingénieurs ont seulement une vision limitée et partielle de la complexité et des potentielles conséquences de leurs projets lo- giciel [80]. Ainsi, améliorer la compréhension globale des systèmes logiciel concernés (e.g. en termes d’architecture, de fonctionnalités fournies, de règles métierimposées ou de données manipulées) est un point crucial [208]. L’Ingénierie Dirigée par les Modèles (IDM) [182], souvent plus généralement ap- pelée Modélisation, est un paradigme du Génie Logiciel reposant sur la création, la ma- nipulation et l’utilisation intensive de modèles de natures diverses et variées. Elle repose largement sur l’hypothèse de base que tout est un modèle [19]. Ces modèles peuvent décrire différents (et possiblement tous les) aspects complémentaires à la fois des systè- mes modélisés et des activités d’ingénierie associées. Par conséquent, dans les approches basées sur les modèles, ceux-ci sont considérés comme des entités de première classe au sein des processus de conception, développement, déploiement, maintenance et évo- lution. La communauté scientifique de l’IDM est soutenue par un écosystème solide et 5 6 riche en pratiques, outils et cas d’utilisation provenant à la fois des mondes académique et industriel [24]. Des études relativement récentes sur l’application concrète de l’IDM dans l’industrie [110, 210] ont montré que l’IDM a déjà engendré des bénéfices intéréssants dans le cadre de différents types de projets ou d’activités à forte composante logiciel. Description de la Problématique Un projet de migration et/ou modernisation est habituellement constitué de trois pha- ses consécutives distinctes : 1. Le processus complexe d’obtention de représentations utiles et de plus haut niveau d’un système (patrimonial) donné est appelé rétro-ingénierie [43]. Son objectif ultime est de fournir une meilleure compréhension du but et de l’état actuel du système concerné. 2. L’ingénierie avancée analyse ensuite ces modèles et les transforment (lorsque né- cessaire) en des spécifications de la nouvelle version du système [14]. 3. Les développeurs ou des techniques de génération automatique de code (ou une combinaison des deux) utilisent finalement ces modèles pour produire le code correspondant à la plateforme ciblée [107]. Des assemblages de différentes solutions et technologies peuvent aider à la réalisation de quelques unes des tâches nécessaires. Par exemple, c’est le cas d’outils qui produisent automatiquement différents types de modèles à partir de code source logiciel déjà exis- tant. C’est aussi le cas de générateurs de code ciblant divers langages de programmation et plateformes techniques. Cependant, à notre connaissance, il n’existe pas actuellement de méthodologie globale qui permette de guider les décideurs, les architectes logiciel et les ingénieurs tout au long d’un processus de migration/modernisation. Ceci est particulièrement vrai dans le contexte de la phase de rétro-ingénierie, qui constitue le focus du travail présenté dans cette thèse. Les challenges importants asso- ciés [38] incluent notamment : — Le support générique à des technologies logiciel hétérogènes (e.g. différents langa- ges de programmation). — L’aptitude à extraire des données utiles à partir du système (e.g. allant plus loin que l’arbre de syntaxe abstraite). — La couverture à la fois des dimensions statiques et dynamiques du système (e.g. in- cluant les données d’exécution). — La capacité à obtenir des vues pertinentes du système et à gérer des liens de tra- cabilité entre elles. Ce dernier point est même considéré comme une activité et un objectif fondamental de la rétro-ingénierie et compréhension du logiciel. Assez récemment (comparé à l’histoire de la rétro-ingénierie), la Rétro-Ingénierie Di- rigée par les Modèles (RIDM) [181] a été proposée afin d’améliorer les processus de rétro-ingénierie plus traditionnels. La RIDM peut être définie comme l’application des principes et techniques de l’IDM dans le contexte d’activités de rétro-ingénierie. Les approches RIDM dépendent notamment des techniques basées sur les modèles existan- tes pour obtenir des modèles représentant les systèmes étudiés en fonction de différents aspects et à différents niveaux d’abstraction. Les diagrammes de classe UML (Unified 7 Modeling Languages) [167], les machines à états ou les workflows sont des exemples bien-connus de tels modèles (pour en citer seulement quelques uns). En s’appuyant sur ces différents modèles obtenus, il est ensuite possible d’analyser plus en profondeur et de comprendre le système faisant l’objet d’un processus de rétro- ingénierie. Dans ce but, les résultats