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

Related Publications


  1. EMSE
    Reuse and Maintenance Practices among Divergent Forks in Three Software Ecosystems
    John Businge, Moses Openja, Sarah Nadi, and Thorsten Berger
    Empirical Software Engineering, 2022


  1. SPLC
    Using Static Analysis to Support Variability Implementation Decisions in C++
    Samer Al Masri, Sarah Nadi, Matthew Gaudet, Xiaoli Liang, and Robert W. Young
    In Proceedings of the 22nd International Systems and Software Product Line Conference (SPLC ’18) – Industrial Track, 2018
  2. ICSME
    Clone-Based Variability Management in the Android Ecosystem
    John Businge, Openja Moses, Sarah Nadi, Engineer Bainomugisha, and Thorsten Berger
    In Proc. of the 34th International Conference on Software Maintenance and Evolution (ICSME ’18) – Industry Track, 2018


    Software Variability Through C++ Static Polymorphsim: A Case Study of Challenges and Open Problems in Eclipse OMR
    Samer Al Masri, Nazim Uddin Bhuiyan, Sarah Nadi, and Matthew Gaudet
    In Proceedings of the 27th Annual International Conference on Computer Science and Software Engineering (CASCON ’17) – Position Paper, 2017


  1. ECOOP
    The Love/Hate Relationship with the C Preprocessor: An Interview Study
    Flávio Medeiros, Christian Kästner, Márcio Ribeiro, Sarah Nadi, and Rohit Gheyi
    In Proceedings of the 29th European Conference on Object-Oriented Programming (ECOOP ’15), 2015
    (Acceptance Rate: 31/136 = 23%)
  2. TSE
    Where do configuration constraints stem from? An extraction approach and an empirical study
    Sarah Nadi, Thorsten Berger, Christian Kästner, and Krzysztof Czarnecki
    IEEE Transactions on Software Engineering (TSE), 2015


  1. ICSE
    Mining configuration constraints: Static analyses and empirical results
    Sarah Nadi, Thorsten Berger, Christian Kästner, and Krzysztof Czarnecki
    In Proceedings of the 36th International Conference on Software Engineering (ICSE ’14), 2014
    (Acceptance Rate: 99/495 = 20%)


  1. MSR
    Linux variability anomalies: What causes them and how do they get fixed?
    Sarah Nadi, Christian Dietrich, Reinhard Tartler, Richard C. Holt, and Daniel Lohmann
    In Proceedings of the 10th Working Conference on Mining Software Repositories (MSR ’13), 2013
    (Acceptance Rate: 31/81 = 38%)
  2. ICSE
    A study of variability spaces in Open Source Software
    Sarah Nadi
    (Acceptance Rate: 19/35 = 54%)
  3. The Linux kernel: A case study of build system variability
    Sarah Nadi, and Richard C. Holt
    Journal of Software: Evolution and Process (JSEP), 2013


  1. JSEP
    Mining Kbuild to detect variability anomalies in Linux
    Sarah Nadi, and Richard C. Holt
    In 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


  1. WCRE
    Make it or break it: Mining anomalies from Linux Kbuild
    Sarah Nadi, and Richard C. Holt
    In Proceedings of the 18th Working Conference on Reverse Engineering (WCRE ’11), 2011
    (Acceptance Rate: 27/104 = 26%)