Recherche

La remodularisation est l’ensemble des techniques permettant de rendre un système modulaire. L’objectif est de rendre un logiciel flexible, configurable et évolutif. La question de la modularité se pose en particulier pour les systèmes patrimoniaux placés au centre des entreprises: des systèmes critiques ayant évolués au fil des années.

Dans ce contexte, mes principaux thèmes de recherche sont "l'analyse d'architecture logicielle" et "l'évolution logicielle".  

Analyse de l'architecture

Les systèmes patrimoniaux sont souvent des systèmes ayant évolués durant de nombreuses années avec plusieurs changements d'équipes de développement. Les deux facteurs, âge de l’application et turn-over des équipes de développement, impliquent une perte de connaissances non négligeable et un développement de plus en plus anarchique: duplication de code, dépendances indésirables entre entités, architecture de moins en moins modulaire. C’est pourquoi comprendre comment sont formés les paquetages, leur organisation interne et leurs communications externes dans une application est un défi ayant pour objectif la compréhension de la structure applicative.

Plus une application est grande, moins les problèmes de structure sont visibles. Il devient difficile d’identifier les sources de problèmes. Il est donc important de comprendre l’organisation des paquetages et de leurs relations. Les paquetages sont des structures complexes car elles contiennent des classes et des méthodes en relation entre elles et avec l’extérieur.

L'analyse de l'architecture se fait selon deux grand types d'analyse: les métriques et les visualisations. Nous travaillons sur les deux thèmes.

Les métriques

Défi: Comment mesurer la qualité d'un logiciel en évaluant sa structure ? Quelles métriques utiliser ?

J'ai été impliqué dans le project Squale (Software QUALity Enhancement), un project open-source soutenu par des entreprises et des universités. Ce project a été supporté par le "System@tic Paris-Region competitive cluster". J'ai particulièrement travailler pour raffiner le modèle déjà existant et ajouter de nouvelles métriques et de nouvelles stratégies.

Publications principales: [CSMR 2011, ICSM 2009]

Les visualisations

Compréhension des circuits

Défi: Comment visualiser les circuits entre les paquetages d'un logiciel ? Comment les comprendre et les supprimer ?

Nous présentons une visualisation permettant au développeur de cibler les éléments à modifier pour remodulariser son système. Cette visualisation, basée sur la représentation d’un lien entre deux paquetages, a l’avantage de montrer la structure globale de l’application au niveau paquetage, et d’offrir dans le même contexte un aperçu plus fin grain, en montrant les classes et les méthodes en cause dans les problèmes de modularité.

La visualisation est basée sur le principe qu’un lien entre deux paquetages est défini par un ensemble de classes et de méthodes liées entre elles par quatre types de dépendance: l’héritage, l’invocation de méthodes, la référence de classe et l’extension de classe.

Publications principales: [Tools 2011, WCRE 2009, LMO 2009]

 

Compréhension des couches

Défi: Comment visualiser les couches d'un logiciel (du noyau aux modules externes) ? Comment les modifier ?

Dans l'idéal, un logiciel est constitué de plusieurs couches de paquetages: en première couche, les paquetages dit "Kernel", les couches du dessus dépendent des couches en dessous. Nous cherchons à organiser les paquetages selon ce principe et supprimer les dépendances indésirable dans un tel système.

Publications principales: [CSMR 2011]

 

Analyse de l'impact des changements

Défi: Comment s'assurer qu'une modification de la structure d'un logiciel est adaptée aux objectifs du réingénieur ? 

Lors de modifications des logiciels patrimoniaux, il est difficile de prévoir l’impact sur les fonctionnalités et sur la structure du logiciel. Ainsi, la remodularisation se fait en itérant de petites modifications suivi de vérifications. Nous proposons le méta-modèle Orion qui permet de créer des versions d'un même modèle combiné de changement dans la structure afin de les comparer et d'analyser les impacts. Ce travail est utilisé par d'autres équipes de recherche (pdf).

Publications principales: [Journal SCP, 2011]

 

Aide à la décision

Défi: Comment aider les développeurs à prendre les bonnes décisions face à un problème de réingénierie ?

Grâce à l'analyse de l'architecture et aux outils d'analyse d'impact, il n'y a qu'un pas pour atteindre l'aide à la décision. Ainsi, l'objectif ici est de proposer aux développeur des pistes de solution, qu'il pourra valider ou invalider en fonction de sa connaissance du logiciel.

Publications principales: [Thèse de Doctorat]

Haut de page