Legacy software systems correspond to the wealth of the companies. They often exist for dozens of years and concentrate a big part of the company knowledge, its business rules or its savoir-faire. Requirements to which these systems answer have evolved with time, as well as the used technolo- gies leading to modifications. These modifications occurring after the software delivery, they are considered maintenance. They correspond to more than 80% of the software lifecycle and its cost. Maintaining a software system is a complex and useful activity that deserves to o be anticipated from the design activity. Remodularisation phases may be useful to reduce complexity massed from successive evolutions and to provide new strong basis for future evolutions. Work presented in this manuscript answers to a unique target: Designing systems of good quality, easily maintainable and managing their evolutions. Quality can be ensured and measured from different ways. In this document, I only focus on tests. Tests enable developers to identify and locate errors or check after an evolution that unchanged parts are not impacted. Finally, software artefacts do not independently evolve. The evolution of one of them may have consequences on one or several others. In this document, two types of software are considered chains of model transformations or tradi- tional programs. Thus, transformation chains are not seen as a way to generate code from models via transformations. They are considered software system by them selves that would need to be later maintained and to make evolve. Results presented in this document may be summarised as such: • Proposal of a new transformation type localized transformations introducing better reusability, modularity and flexibility in transformation chains. Adaptations in designing and building chains are thus needed. • Identification, definition and automation of operators sequences that are specific to a software system and used during architectural modifications. • Adaptation for model transformation of error location and test set qualification mechanisms existing for traditional software systems. • Study and proposal of co-evolution artefacts (model-metamodel, metamodel- transformation, database schema-programs). To propose generic solutions, independent from the language used in these software systems or the application domain, the proposed results rely on models or most often on metamodels. Models are an abstract representation of for example a software system. Metamodels gather concepts used to represent these models and the relationships that can exist between these concepts. My results are often original solution opening new research tracks, as the introduction of gener- icity in transformation chains, program migration from one language to another, or debugging code from an input model used for its generation.
defended on 28/06/2016