Abstract

Software product line engineering (SPLE) is a software engineering discipline aiming to promote systematic software reuse. It is recurrently praised for its contribution to greatly increase developer's productivity, reduce time to market and improve software quality. It is regarded as one of the most promising solutions to the desire to develop software with mass production efficiency while having the flexibility of mass customization. Accompanying its great benefits, SPLE requires a high up-front investment. It has been reported that more than half of the practitioners implement a software product line (SPL) only after some similar products, developed in an ad-hoc manner, successfully gain the market. Due to its popularity, some research work has been done on the topic of reengineering related products into an SPL. However, this work mainly focuses on feature identification and location, feature constraint discovery as well as reengineering the individual product artifacts into SPL artifacts. There is a gap in addressing the support of the implementation of new features which are introduced into product lines to capture the specific needs of additional market segments. In this thesis, I develop methods which leverage 1) the dependency relationships between features; 2) code interaction between features at the method granularity, and to partition features into simple and complex sets. With this information, new features can be implemented by developers with appropriate experience and simple features are implemented first to keep the code complexities of intermediate SPL instances as low as possible to reduce the overall implementation time. The effectiveness of these methods is evaluated on 5 product lines with more than 28,000 configurations and 1.27x10 9 possible implementation order sequences. The results of the evaluation show that code interaction method can partition features into simple and complex sets correctly for all product lines while the feature dependency method can partition features correctly for 3 out of 4 product lines but cannot partition features for the remaining product line. Findings of this thesis help practitioners to adopt SPLE by providing a design time indicators of relative code complexities introduced by optional features to a SPL such that they can assign implementation tasks to developers with appropriate experience and allocate sufficient resources accordingly.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call