Abstract
Software systems are constantly increasing in size and complexity, forcing the software industry to migrate their hand-craft development processes, slowly realizing each product, to more systematized and automated ones, mass-producing software at lower costs. This migration process, that we call industrialization, can be achieved through the integration of systematic software reuse and automation in their development processes. Their combination results in the realization of sounder products at lower costs. Existing approaches combining Model-Driven Architecture (MDA) and Software Product Line Engineering (SPLE) partially automate development processes with systematic software reuse by capitalizing on their compatible benefits. While MDA permits developers to define highly reusable assets and automatic operations to perform on them, SPLE systematizes software reuse by relying on the commonalities and variabilities of a set of related products named a software product family. However, these approaches suffer from two major restrictions that can be a brake for companies aiming to industrialize their development processes using these solutions. Firstly, they have difficulties to fully manage variability at different levels of abstraction because of the rapidly increasing complexity of operations performed on assets alongside the addition of new variation points. Then, existing combinations of MDA and SPLE are limited to the management of variability in a software product family. But, in some contexts such as IT services companies, variability can be related to more heterogeneous sets of products than families named software product populations. Although some existing works propose to manage the variability in a software product population, these approaches, by composing independent software product lines, are limited to the composition, and by extension to reuse, of coarse-grained assets.In this PhD thesis, we propose a new approach named COMpOSER (CrOss-platform MOdel-driven Software product line EngineeRing) which defines an efficient way to compose MDA and SPLE in order to fully manages variability in a software product family but also in a software product population without reducing its reuse capabilities. To do so, COMpOSER introduces a new characterization of variability to organize reusable assets in three dimensions: the business dimension; the architecture dimension; and the technological ecosystem dimension. Additionally, this characterization distinguishes inter-domain variability, organizing the different software product families of a population, and intra-domain variability, organizing assets in a single software product family. To properly organize reusable assets, COMpOSER defines a model of fine-grained core assets which is compatible with its characterization of variability. In parallel, our approach defines partially automated operations to produce new software through systematic reuse which permit to fully manage variability without inducing scaling up issues with the addition of new variation points. Thanks to our collaboration with an industrial partner, we could experiment COMpOSER by applying our propositions to help the company industrializing its development processes. As such, we implemented a framework that supports our approach while considering the specificities of our industrial context. This framework embeds the principles of COMpOSER in a format that is easier to understand to developers with little knowledge about SPLE and MDA. In this way, we have observed that the framework facilitated the adoption of our solutions by the company's development teams. Using the COMpOSER framework, we obtained results demonstrating how our approach improves systematic software reuse when compared to concurrent approaches. These results stemmed from empirical experiments performed on concrete industrial case studies.