Thèse en cours

Réingénierie d'Architecture Mobile Monolithique pour une Gestion Efficace de la Variabilité Fonctionnelle

FR  |  
EN
Auteur / Autrice : Quentin Capdepon
Direction : Abdelhak Seriai
Type : Projet de thèse
Discipline(s) : Informatique
Date : Inscription en doctorat le 31/03/2023
Etablissement(s) : Université de Montpellier (2022-....)
Ecole(s) doctorale(s) : École doctorale Information, Structures, Systèmes (Montpellier ; 2015-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire d'informatique, de robotique et de micro-électronique (Montpellier ; 1992-....)
Equipe de recherche : Département Informatique

Résumé

FR  |  
EN

L'objectif de cette thèse est de proposer un processus pour concevoir des applications mobiles selon une architecture modulaire. D'une part, la modularité doit permettre de faciliter la maintenance, mais surtout l'évolution, car l'ajout de nouvelles fonctionnalités passera par l'ajout de nouveaux modules faiblement couplés du reste. Ensuite, la modularité permet de personnaliser les applications destinées aux différents utilisateurs et donc d'éviter de livrer l'ensemble de l'application à tous les clients (évite le risque de vol par rétro-ingénierie du code source). Enfin, nous espérons produire des modules suffisamment autonomes pour les réutiliser au sein d'autres applications, développées pour d'autres secteurs d'activités (à l'instar de microservice). Nous envisageons trois grands objectifs pour cette thèse. Objectif 1 : Définir un modèle de référence d'architecture modulaire pour des applications mobiles Notre premier objectif consiste à définir une architecture logicielle pour applications mobiles, basée sur la composition de modules autonomes. Nous définissons l'autonomie comme la capacité d'importer et d'utiliser un module dans le contexte d'une autre application, sans l'adapter ni lui fournir d'autres modules que lui-même. Dans le contexte d'une application mobile, la séparation frontend/backend étant ambiguë, l'objectif sera ici de définir des modules qui combinent ces deux couches. Il s'agit d'une part d'adapter les concepts existants de « Service», « Microservice » et « Micro Frontend » ([17]) pour architecturer la logique métier et les interfaces d'une application mobile. D'autre part, il s'agit de disposer de modules multiplateformes (principalement Android et iOS) natifs (sans passer par des web views). Pour arriver à définir les modèles de l'architecture et du module, nous devons répondre aux questions suivantes : - Quel est le modèle d'une application mobile structurée en module autonome ? Pour construire ces modules, notre objectif est de s'inspirer fortement de la notion de Microservice et Microfrontend. - Quel est le modèle d'un module autonome ? Il s'agit ici de définir des modules capables de fonctionner seuls tout en étant capables - si besoin - d'interagir avec d'autres modules via des mécanismes de communications légers (connexion éphémère). - Quelles sont les règles d'assemblage et de communication entre modules qui permettront de faire émerger l'application mobile souhaitée ? - Quelle matérialisation proposer pour obtenir des modules natifs et multiplateformes ? Objectif 2 : Identification semi-automatisée de modules pour la réarchitecture d'un monolithe Notre second objectif vise à tirer profit du monolithe existant pour créer des modules. La réalisation de cet objectif permettra de migrer l'architecture monolithe vers une architecture modulaire. À terme, ce processus devra être générique et s'appliquer à tout type de monolithe mobile. Pour assurer la généricité de notre approche, nous nous baserons sur une démarche dirigée par les modèles (IDM) [22]. L'utilisation de l'IDM a été plus d'une fois prouvée comme efficace, flexible et fiable pour un processus de migration (rétro-ingénierie, transformation et génération de code). Dans notre cas, l'IDM est envisagée pour généraliser la transformation de l'architecture monolithique en architecture modulaire. Objectif 3 : Une migration hybride vers un nouveau processus de développement des applications mobiles Notre troisième objectif consiste à proposer un processus de migration hybride aux développeurs, afin d'accompagner une transition itérative d'un developpement d'application monolithique vers des applications modulaires. Compte tenu du changement dans les pratiques de développement, il sera nécessaire de concevoir de nouveaux outils et de nouvelles méthodes pour assister le développement des modules. Nous envisageons ici la création d'une usine logicielle, depuis laquelle les développeurs concevraient de nouvelles applications en sélectionnant des modules prêts à être assemblé. Les modules qui peupleront l'usine logicielle seraient soit originaires d'une identification sur un monolithe, soit créé manuellement par les développeurs. La création de cette usine logicielle nécessitera la conception de nouveaux outils pour notamment guider les développeurs dans la composition de ces modules réutilisables. L'usine logicielle tentera d'apporter des solutions aux problème de la variabilité fonctionnelle mentionnée et de réutilisation mentionnée précédemment.