An Holistic Approach to Migrate Industrial Legacy Systems
Une approche holistique pour la migration des syst`emes l´egataires industriels
Résumé
ContextThis project takes place in a collaboration with a Berger-Levrault, a large software company providing several services and applications developed with different technologies.In a business-critical quest for technological unification, cost reduction, and access to new markets, Berger-Levrault started an extensive program of software modernisation.ProblemBerger-Levrault has more than 90 applications written in Microsoft Access.We work on migrating an extensive Microsoft Access application, with nearly 20 years of development, to a web-technology-based solution.As Microsoft Access is a rich language, the project entails the migration of language, library, infrastructure, paradigm, user interface and architecture.Such a migration cannot be adequately split into multiple independent, successful migrations, as language migration directly affects all the other migrations.Furthermore, the solutions for each kind of migration vary in knowledge and technological requirements; no single homogenous approach could tackle this kind of migration, which pushes us to think of a higher-order solution.Solution (contribution)This thesis presents(i) A reverse engineering approach able to extract models from Microsoft Access.(ii) A migrating meta-model able to represent multiple languages and still ensuring that a model is correct for a concrete technology.(iii) A set of migration metrics mesuring the technological gap between the source system and the expected target.(iv) Visualisations to gain insight on the required work to make possible an architectural migration.(v) An interactive iterative approach to software migration allowing multiple destinations to migrate.(vi) We provide rule-based migration engine allowing: partial migrations, based on the immediate and delayed application of contextualized rules, over multiple targets.Validation and resultsTo validate our solutions we conduct multiple experiments yielding encouraging results.(i) We validate our reverse engineering over 10 projects by measuring information loss, prooving that we can conduct a migration with the available information.(ii) We validate our modelling approach over 34 projects by representing five technologies, and still detect errors in a model of a specific language.(iii-iv) We use metrics and visualisations to help build source code and architectural blueprints and write migration feasibility reports for two large industrial projects.We also use the models and metrics to profile the used libraries to guide the construction of a testing application representing the usage of the libraries based on the Pareto rule.(v-vi) We validated over a full form migration to back-end Java SpringBoot back end and Typescript Angular front-end. Migrating 47 tables and queries to Java and Typescript and 53 library artefacts to Java and Pharo.
ContexteCe projet se déroule dans le cadre d'une collaboration avec Berger-Levrault, une grande entreprise de logiciels fournissant plusieurs services et applications développés avec différentes technologies.Dans un souci d'unification technologique, de réduction des coûts et d'accès à de nouveaux marchés, Berger-Levrault a lancé un vaste programme de modernisation de ses logiciels.ProblèmeBerger-Levrault possède plus de 90 applications écrites en Microsoft Access.Nous travaillons sur la migration d'une application Microsoft Access étendue, avec près de 20 ans de développement, vers une solution basée sur la technologie web.Comme Microsoft Access est un langage riche, le projet implique la migration du langage, de la bibliothèque, de l'infrastructure, du paradigme, de l'interface utilisateur et de l'architecture.Une telle migration ne peut être divisée en plusieurs migrations indépendantes et réussies, car la migration du langage affecte directement toutes les autres migrations.En outre, les solutions pour chaque type de migration varient en termes de connaissances et d'exigences technologiques ; aucune approche homogène ne pourrait aborder ce type de migration, ce qui nous pousse à réfléchir à une solution d'ordre supérieur.Solution (contribution)Cette thèse présente(i) Une approche de rétro-ingénierie capable d'extraire des modèles de Microsoft Access.(ii) Un méta-modèle de migration capable de représenter plusieurs langages tout en garantissant qu'un modèle est correct pour une technologie concrète.(iii) Un ensemble de mesures de migration mesurant l'écart technologique entre le système source et la cible prévue.(iv) Des visualisations permettant de se faire une idée du travail nécessaire pour rendre possible une migration architecturale.(v) Une approche itérative interactive de la migration logicielle permettant de migrer vers plusieurs destinations.(vi) Nous fournissons un moteur de migration basé sur des règles permettant : des migrations partielles, basées sur l'application immédiate et différée de règles contextualisées, sur des cibles multiples.Validation et résultatsPour valider nos solutions, nous menons plusieurs expériences qui donnent des résultats encourageants.(i) Nous validons notre rétro-ingénierie sur 10 projets en mesurant la perte d'information, prouvant que nous pouvons effectuer une migration avec les informations disponibles.(ii) Nous validons notre approche de modélisation sur 34 projets en représentant cinq technologies, et détectons encore des erreurs dans un modèle d'un langage spécifique.(iii-iv) Nous utilisons les métriques et les visualisations pour aider à construire le code source et les plans d'architecture et rédiger les rapports de faisabilité de la migration pour deux grands projets industriels.Nous utilisons également les modèles et les métriques pour profiler les bibliothèques utilisées afin de guider la construction d'une application de test représentant l'utilisation des bibliothèques sur la base de la règle de Pareto.(v-vi) Nous avons validé la migration d'un formulaire complet vers un back-end Java SpringBoot et un front-end Angular Typescript. Migration de 47 tables et requêtes vers Java et Typescript et de 53 artefacts de bibliothèque vers Java et Pharo.
Origine | Version validée par le jury (STAR) |
---|