Software Variability
Creating & maintaining variants of the same system
Software reuse is essential to build software faster. Different customers or platforms may need different features of the same software system. Instead of copy-and-paste mechanisms where different copies of the system is maintained, using Software Product Lines (SPLs) or Highly Configurable Software is a way to systematically create and maintain different variants of the same system.
We have a long line of work in this area, exploring different aspects of creating and maintaining SPLs. A lot of this work is done on the Linux kernel, as an exemplar of an extremely large and popular highly configurable system. We also explored other systems such as Eclipse OMR and Android App software families.
Related Resources
- Farce Appendix (for Reverse Engineering Configuration Constraints)
- Farce Source Code
- OMR Statistics
- VarClang
- BruteClang
- Makex (CSMR 2012 paper)
- Linux Variability Anomalies Evolution (MSR 2012 paper)
Related Publications
2022
- EMSEReuse and Maintenance Practices among Divergent Forks in Three Software EcosystemsEmpirical Software Engineering, 2022
2018
- SPLCUsing Static Analysis to Support Variability Implementation Decisions in C++In Proceedings of the 22nd International Systems and Software Product Line Conference (SPLC ’18) – Industrial Track, 2018
- ICSMEClone-Based Variability Management in the Android EcosystemIn Proc. of the 34th International Conference on Software Maintenance and Evolution (ICSME ’18) – Industry Track, 2018
2017
- CASCONSoftware Variability Through C++ Static Polymorphsim: A Case Study of Challenges and Open Problems in Eclipse OMRIn Proceedings of the 27th Annual International Conference on Computer Science and Software Engineering (CASCON ’17) – Position Paper, 2017
2015
- ECOOPThe Love/Hate Relationship with the C Preprocessor: An Interview StudyIn Proceedings of the 29th European Conference on Object-Oriented Programming (ECOOP ’15), 2015(Acceptance Rate: 31/136 = 23%)
- TSEWhere do configuration constraints stem from? An extraction approach and an empirical studyIEEE Transactions on Software Engineering (TSE), 2015
2014
- ICSEMining configuration constraints: Static analyses and empirical resultsIn Proceedings of the 36th International Conference on Software Engineering (ICSE ’14), 2014(Acceptance Rate: 99/495 = 20%)
2013
- MSRLinux variability anomalies: What causes them and how do they get fixed?In Proceedings of the 10th Working Conference on Mining Software Repositories (MSR ’13), 2013(Acceptance Rate: 31/81 = 38%)
- ICSE
- The Linux kernel: A case study of build system variabilityJournal of Software: Evolution and Process (JSEP), 2013
2012
- JSEPMining Kbuild to detect variability anomalies in LinuxIn Proceedings of the 16th European Conference on Software Maintenance and Reengineering (CSMR ’12), 2012(Acceptance Rate: 30/108 = 27%). Invited for a special issue of JSEP
2011
- WCREMake it or break it: Mining anomalies from Linux KbuildIn Proceedings of the 18th Working Conference on Reverse Engineering (WCRE ’11), 2011(Acceptance Rate: 27/104 = 26%)