Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
PuLSE: a methodology to develop software product lines
SSR '99 Proceedings of the 1999 symposium on Software reusability
Experimentation in software engineering: an introduction
Experimentation in software engineering: an introduction
Evolution in software product lines: Two cases
Journal of Software Maintenance: Research and Practice
Violatility analysis framework for product lines
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Component-based product line engineering with UML
Component-based product line engineering with UML
MicroC/OS-II: the real-time kernel
MicroC/OS-II: the real-time kernel
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
Rules and Tools for Software Evolution Planning and Management
Annals of Software Engineering
Model-Driven Product Line Architectures
SPLC 2 Proceedings of the Second International Conference on Software Product Lines
Variability Issues in Software Product Lines
PFE '01 Revised Papers from the 4th International Workshop on Software Product-Family Engineering
Software Product Line Engineering: Foundations, Principles and Techniques
Software Product Line Engineering: Foundations, Principles and Techniques
Refactoring a legacy component for reuse in a software product line: a case study: Practice Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Tracing software product line variability: from problem to solution space
SAICSIT '05 Proceedings of the 2005 annual research conference of the South African institute of computer scientists and information technologists on IT research in developing countries
Software Evolution and Feedback: Theory and Practice
Software Evolution and Feedback: Theory and Practice
Journal of Systems and Software
Software Product Lines in Action: The Best Industrial Practice in Product Line Engineering
Software Product Lines in Action: The Best Industrial Practice in Product Line Engineering
Minimally Invasive Migration to Software Product Lines
SPLC '07 Proceedings of the 11th International Software Product Line Conference
IEEE Transactions on Software Engineering
SAVE: Software Architecture Visualization and Evaluation
CSMR '09 Proceedings of the 2009 European Conference on Software Maintenance and Reengineering
Default values for improved product line management
Proceedings of the 13th International Software Product Line Conference
Running a software product line: standing still is going backwards
Proceedings of the 13th International Software Product Line Conference
Proceedings of the 13th International Software Product Line Conference
An analysis of the variability in forty preprocessor-based software product lines
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Sustainable Evolution of Product Line Infrastructure Code (PhD Theses in Experimental Software Engineering)
Code-based variability model extraction for software product line improvement
Proceedings of the 16th International Software Product Line Conference - Volume 2
Mining complex feature correlations from software product line configurations
Proceedings of the Seventh International Workshop on Variability Modelling of Software-intensive Systems
Variability evolution and erosion in industrial product lines: a case study
Proceedings of the 17th International Software Product Line Conference
Hi-index | 0.00 |
Successful software products evolve continuously to meet the changing stakeholder requirements. For software product lines, an additional challenge is that variabilities, characteristics that vary among products, change as well over time. That challenge must be carefully tackled during the evolution of the product line infrastructure. This is a significant problem for many software development organizations, as practical guidelines on how to evolve core assets, and especially source code, are missing. This paper investigates how to achieve "good enough" variability management during the evolution of variation in software design and implementation assets. As a first contribution, we present a customizable goal-based approach which helps to identify improvement potential in existing core assets to ease evolution. To find concrete ways to improve the product line infrastructure, we list the typical symptoms of variability "code smells" and show how to refine them to root causes, questions, and finally to metrics that can be extracted from large code bases. As a second main contribution, we show how this method was applied to evaluate the reuse quality of three industrial embedded systems. These systems are implemented in C or C++ and use Conditional Compilation as the main variability mechanism. We also introduce the analysis and refactoring tool set that was used in the case studies and discuss the lessons learnt.