Variability-Aware Patching of Software Product-Line Variants : Master’s Thesis
To develop different variants of a software it is common to clone and adapt a software product and develop the original and its clones further independently. Then, propagat- ing changes from one cloned variant to another cloned variant becomes increasingly chal- lenging as the variants diverge over time. Even if patches between clones are shared such that all clones are up to date, merely applying a patch is often impossible with conven- tional patching tools. The reason is that there are intended differences between variants so that not all changes must be propagated, but conventional patchers always try to apply all changes. Software product-line engineering seeks to solve the problems of clone-and-own by advocating software mass customization by generating variants from a single unified code base in which a feature-to-code mapping documents to which feature and hence variant each code element belongs to. Yet, software-product line engineering provides no method to keep existing clones up to date. In this thesis, we introduce a formal specification and implementation of variability- aware patching to propagate changes made to a source variant to a target variant, whereby the source and target variant are up to date and both contain variability information in form of feature-to-code mappings. Our results from the formal specification show how we can decide if all relevant changes are applied to the target variant, and that target vari- ant specific code did not change. As a correct patching result might not be unique, we contribute a definition when two versions of one variant are alignment-equivalent. Our variability-aware patching algorithm transforms an input patch so that we receive a patch that propagates all desired changes to the target variant. To evaluate if our patching algo- rithm is correct, we generate 35, 632 patching scenarios from the real-world open-source software product line BusyBox, to simulate change propagation scenarios. We compare our patching algorithm to the conventional patch tool Unix patch, and to the matching-based patch tool mpatch in terms of accuracy. Since our patching algorithm has an accuracy of 87.8%, whereas Unix patch and mpatch achieve an accuracy of at most 72.9% and 68.1%, re- spectively, we confirm the hypothesis that variability-aware patching can propagate more changes made to a source variant successfully to a target variant
Preview
Access Statistic


