Multidimensional Models and Code Co-Evolution in Evolving Software
Expected start date 2021
Estimated duration 3 ans
- Djamel E. Khelladi, CNRS researcher
- Mathieu Acher, Assoc. Prof., Univ. Rennes 1
- Olivier Barais, Prof., Univ. Rennes 1
Keywords: Software evolution, Co-evolution, Models, Code.
Context & Problem
Today, software development has become more and more complex, embedding millions of lines of code (LOC), e.g., 14 million LOC for Android, 15 million LOC for Linux, or 50 million LOC for Windows . Developing such complex software and maintaining it are complex tasks due to the multidimensional effort that software development typically involves. In the sense that development involves multiple artifacts, such as models, implementation code, dependency APIs, tests, running scripts, data and databases, documentation, etc. Each corresponding to a dimension possibly developed and maintained by a dedicated engineer.
Nowadays, a plethora of techniques exists to ease the development task of software, in particular, by generating part of the software to speed up its development. Indeed, in many scenarios source code can be generated under the form of application skeleton (e.g., interface), minimal running application (e.g., website), etc. Some examples of such techniques are: EMF, jHipster, and Swagger (OpenAPI), etc.
However, this code generation does not stem from nothing, but must consume as an input a model to drive the code generation. Depending on the used technique, this model can come in various formats.
Ultimately, this generated code is meant to be enriched with new functionalities, hence, with additional code.
As software inevitably evolves, the model can evolve as well, for various reasons, such as fixing bugs/security vulnerabilities, adding/removing/modifying features. As a result, the source code can be impacted, which then has to be co-evolved accordingly. Otherwise, it may cause build failures in the CI pipeline and slow down the development. Therefore, it is essential to support co-evolution.
The main objective of this thesis is to address the lack of support for co-evolution in generative approaches. This PhD candidate will address the following tasks:
- To first investigate the challenge of model and code co-evolution on the scenarios of jHipster and Swagger (OpenAPI). You will leverage on the already investigated case of EMF .
- Then to lay the foundations of a co-evolution mechanism that can cope with different scenarios (EMF, jHipster, and Swagger), thus, specifying and prototyping a technical solution.
- First, you will investigate how to generalize the impact analysis to be used for the different generative approaches. This could be done by specifying as input relation types used in each generative approach (could be different ones) based on which, the impact analysis algorithm will find the evolution impacts.
- Then, to work on a generic co-evolution approach. Here, we aim to address the different variants of used models, but also possibly different languages of the generated code.
- Providing dedicated tooling chain to support co-evolution.
The candidate will work in the DiverSE team, common to CNRS (IRISA) and Inria. The DiverSE team is located in Rennes. DiverSE’s research is in the field of software engineering. The team is actively involved in European, French and industrial projects and is composed of 9 professors/researchers, 20 PhD students, 4 post-docs and 3 engineers. The candidate will enroll in the doctoral school in computer science of the University of Rennes 1.
How to apply
Send your CV, motivation letter, and grades of your bachelor and master with the diplomas.
 Spoon. http://spoon.gforge.inria.fr
 Nikolaos Tsantalis, Matin Mansouri, Laleh Eshkevari, Davood Mazinanian, and Danny Dig: Accurate and Efficient Refactoring Detection in Commit History. ICSE 2018. https://github.com/tsantalis/RefactoringMiner
 Djamel E. Khelladi, Roland Kretschmer, Alexander Egyed: Change Propagation-based and Composition-based Co-evolution of Transformations with Evolving Metamodels. MODELS 2018.
 Djamel E. Khelladi, Reda Bendraou, Regina Hebig, Marie-Pierre Gervais: A semi-automatic maintenance and co-evolution of OCL constraints with (meta)model evolution. JSS 2017.
 Khelladi, D. E., Combemale B., Mathieu A., Barais O., Jézéquel J-M. Co-Evolving Code with Evolving Metamodels. IEEE/ACM 42th International Conference on Software Engineering, ICSE 2020, http://people.irisa.fr/Djamel-Eddine.Khelladi/papers/ICSE-2020.pdf.