Aligning Coevolving Artifacts Between Software Product Lines and Products
Sandro Schulze, Michael Schulze, Uwe Ryssel, Christoph Seidl · 2016
Software product lines (SPLs) play a pivotal role for developing a vast amount of related programs efficiently and with high quality. To this end, the SPL engineering process is separated into two levels: domain engineering (DE), which captures variability and development artifacts of the entire SPL, and application engineering (AE), which encompasses a variant-specific subset of the aforementioned artifacts. In the industrial practice of evolving an SPL, it is common that evolution is performed on both levels, which may affect the same artifacts (e.g., code, models) in different ways due to changes on the product line (DE) and the variant level (AE). As a result, conflicts may arise that have to be solved properly to guarantee correctness and validity of the affected artifacts. In this paper, we propose a methodology for resolving such conflicts to ensure correctness and consistency among artifacts while minimizing manual effort. Our method is comprehensive in two ways: First, we consider all kinds of artifacts (code and non-code) that may be subject to evolutionary changes in both DE and AE. Second, we also take into account that changing one particular artifact (e.g., a requirement) may require further changes to other artifacts of the same level. This way, our method reflects common industrial practices in SPL development and, thus, provides benefits for efficiently evolving real-world SPLs.