Characterizing safe and partially safe evolution scenarios in product lines: an empirical study - GOMES, Karine Galdino Maia (2019)
Software Product Line (SPL) is a family of software products that share common and distinct assets providing, through reuse, a systematic way to generate similar products. In SPL, each one of their characteristics is represented as feature, and the set of those features and its dependencies are expressed as Feature Model. Feature Model (FM) with both Configuration Knowledge (CK) and Asset Mapping (AM) spaces represent a SPL. Each one of those spaces play a key role to provide reuse in SPL. In the same way as regular software systems, product lines often need to evolve, such as adding new features, improving the quality of existing products, or even fixing bugs. Previous works have classified product line evolution scenarios into safe or partially safe, depending on the number of products that have their behavior preserved after evolution. Both notions rely on refinement theories that enable us to derive transformation templates that abstract common evolution scenarios. However, most of the works related to such templates are focused on either safe or partially safe templates. Therefore, in this work we aim to characterize product line evolution as a whole, measuring to what extent the evolution history in safe compared to partially safe, to better understand how product lines evolve from their conception. We measure how often these templates happen using 2,300 commits from the Soletta Project, an open-source framework for Internet of Things. Through our analysis, we observe that most of the commits were categorized as templates (78.3%). Further we make an evaluation for remaining one commits which were not categorized as templates (21.7%). Thus, we extract certain information for each evolution scenario, such as spaces affect, kind of modification (change/add/removed), amount of files and so on. In Soletta, we observe that several commits classified as templates are represented by change assei. Further, for the remaining commits, we observe that most of the commits modifies both CK and AM spaces. In other hand, fewest evolution scenarios modifies FM and AM spaces at the same time. Further, we distribute changes through the contribution time (timeline) from all 2,300 commits. Finally, after classify some commits manually and others automatically as safe and partially safe evolution, we obtain that in Soletta 91.8% of changes is categorized as partially safe, and the 8.2% remaining ones are safe evolution scenarios.