An evaluation of code similarity identification for the grow-and-prune model
Journal of Software Maintenance and Evolution: Research and Practice - Special Issue on the 12th Conference on Software Maintenance and Reengineering (CSMR 2008)
Extending the reflexion method for consolidating software variants into product lines
Software Quality Control
Simulating evolution in model-based product line engineering
Information and Software Technology
Structuring the modeling space and supporting evolution in software product line engineering
Journal of Systems and Software
Flexible and scalable consistency checking on product line variability models
Proceedings of the IEEE/ACM international conference on Automated software engineering
Code clones in feature-oriented software product lines
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Visualizing and analyzing software variability with bar diagrams and occurrence matrices
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
An extended assessment of type-3 clones as detected by state-of-the-art tools
Software Quality Control
Automated type-3 clone oracle using Levenshtein metric
Proceedings of the 5th International Workshop on Software Clones
An overview of techniques for detecting software variability concepts in source code
ER'11 Proceedings of the 30th international conference on Advances in conceptual modeling: recent developments and new directions
Model-based product line evolution: an incremental growing by extension
Proceedings of the 16th International Software Product Line Conference - Volume 2
Collaboration and source code driven bottom-up product line engineering
Proceedings of the 16th International Software Product Line Conference - Volume 2
Hi-index | 0.00 |
Software Product Lines (SPL) can be used ot create and maintain different variants of software-intensive system by explicitly managing variability. Often, SPLs are organized as an SPL core, common to all products, upon which product-specific components are built. Following the so called grow-and-prune model, SPLs may be evolved by copy&paste at large scale. New products are created from existing ones and existing products are enhanced with functionalities specific to other products by copying and pasting code between product-specific code. To regain control of this unmanaged growth, such code may be pruned, that is, identified and refactored into core components upon success. This paper describes tool support for the grow-and-prune model in the evolution of software product lines by identifying similar functions which can be moved to the core. These functions are identified in two steps. First, token-based clone detection is used to detect pairs of functions sharing code. Second, Levenshtein distance measures the textual similarity among these functions. Sufficient similarity at function level is then lifted to the architectural level. The approach is evaluated by three case studies, one using an open source email client to simulate the initial creation of an SPL, and two monitoring existing industrial product lines from the embedded domain.