
Remodularization is the set of techniques to make a modular system. The goal is to make the software flexible, configurable and scalable. The issue of modularity is particularly true for legacy systems: critical systems which have evolved over the years.
In this context, my main research interests are "software architecture analysis" and "software evolution".
Legacy systems are often systems that have evolved for many years with several changes of development team. The two factors, age of the software and turnover of the development teams involve a significant loss of knowledge and lawless engineering: code duplication, undesirable dependencies between entities, architecture less modular. Therefore, understanding how the packages are formed, their internal and external communications is a challenge with the aim of understanding the overall application structure.
The more an application is big, the less problems of structure are visible. It becomes difficult to identify sources of problems. It is therefore important to understand the organization of packages and their relationships. The packages are complex structures because they contain classes and methods in relation to themselves and with the outside.
The analysis of the architecture is based on two major types of analysis: metrics and visualizations. We are working on these two themes.
Challenge: How to measure the quality of a software by assessing its structure ? Which metrics should we use ?
I was involved in the project Squale (Software Quality Enhancement), an open source project supported by companies and universities. This project was supported by the "System@tic Paris Region competitive cluster". I worked particularly in the refinement of the existing model and adding new metrics and new strategies.
Main Publications: [CSMR 2011, ICSM 2009]
Challenge: How to visualize cycles between software packages ? How to understand and remove them ?
We present a visualization allowing the developer to target the elements to change for remodularization of its system. This visualization, based on the representation of a link between packages, has the advantage to show the overall structure of the application package-level, and offer in the same context a more fine-grained display, showing classes and methods involved in aimed problems.
Visualization is based on the principle that a link between two packages is defined by a set of classes and methods linked by four types of dependency: inheritance, method invocation, class reference and class extension.
Main Publications: [Tools 2011, WCRE 2009, LMO 2009]
Challenge: How to visualize software layers (from kernel to external modules) ? How to identify them ?
Ideally, software is composed of several layers of packages: the first layer, named "Kernel", then the layers above depend on the layers below. We are looking to organize packages with this principle and remove unwanted dependencies in such a system.
Main Publications: [CSMR 2011]
Challenge: How to ensure that a change in the software structure is adapted to the reengineer goal ?
When changes of a legacy system, it is difficult to predict the impact on the functionality and structure of the software. Thus, remodularization is made by iterating small changes followed audits. We propose the Orion meta-model which allows to create versions of a same model combined with change in the structure to compare and analyze the impacts. This work is already used by other research projects (pdf).
Main Publications: [Journal SCP, 2011]
Challenge: How to help engineers to take the better decision for a specific problem ?
With the architecture analysis and impact assessment tools, there is only one step to reach the help for decision. Thus, the goal is to offer possible solutions to developer, then he can validate or invalidate based on his knowledge of the software.
Main Publications: [PhD Thesis]