Software Product Lines

Please note that registration for this seminar has closed. If you have not attended the kickoff meeting or emailed Sarah Nadi by now, you can no longer join the seminar


In modern times, a “one size fits all” strategy no longer works for software systems. Many systems have become highly-configurable in order to tailor for various customer requirements. Instead of building a specific product from scratch every time, we need to build variable software. Using such systems, various products can be generated by selecting the needed features (units of functionality). This is exactly what Software Product Lines (SPLs) aim to provide. SPLs provide a systematic way of configuring different, yet similar, products from reusable components according to the functionalities selected by the user. SPLs have many benefits such as improved quality and reduced time to market which lead to their adoption by many open-source (e.g., Linux kernel, Wordpress) as well as industrial (e.g., Boeing, General Motors) software systems.The fact that SPLs deal with families of products instead of a single product creates many interesting challenges:

  • How to model all the SPL features and any dependencies between them?
  • How to implement such variable or highly-configurable software?
  • How to simultaneously analyze all possible products while avoiding a combinatorial explosion?
  • How to detect bugs/anomalies/inconsistencies in an SPL?
  • • How to migrate existing products to an SPL?

In this course, you will read both SPL background and state-of-the-art papers to understand how such challenges can be addressed.

Course Format

This is a discussion seminar with weekly meetings. In each meeting, we discuss a scientific article. The following weekly activities are required:

  • Reading a scientific article
  • Writing a short summary (max. 1 page)
  • Active participation in the discussion of the content

In addition to the weekly activities, a final project consisting of a 4-page research paper and a presentation that discuss one related topic of your choice is required. Your project presents an open-problem you have identified through the papers read in the course and includes a potential solution. You will be required to present your paper at the end of the course.


  • In-class discussion and participation (40%)
  • Paper summaries (20%)
  • Final Paper (25%)
  • Final Presentation (15%)

Course Information



Course Type

Seminar (3CP)


Sarah Nadi


Please register in TUCAN and also send an email to . To ensure an interactive and productive seminar, we have to limit the number of participants to aprox. 15. Therefore, the kick-off meeting is obligatory.


Mon. Oct. 12, 2015

Course material


Mondays 15:20 - 17:00, S2|02 A213




Date Topic Paper
Oct. 12, 2015 Kickoff meeting (course description & introductory lecture) -
Oct. 19, 2015 Generative Software Development Overview of Generative Software Development (Czarnecki, 2004)
Oct. 26, 2015 Variability modeling

NOTE: There will be no class this week. However, paper summaries are still due in Github by 15:20 on Oct. 26. The discussion of this paper will be combined with the following week's paper.
Variability Modeling in the Real: A perspective from the Operating Systems Domain(Berger et al., ASE '10)
Nov. 2, 2015 Variability Modeling What is a Feature? A Qualitative Study of Features in Industrial Software Product Lines (Berger et al., SPLC '15)
Nov. 9, 2015 Variability-aware analysis The Linux Kernel: A Case Study of Build System Variability (Nadi & Holt, JSEP '13)
Nov. 16, 2015 Variability-aware analysis Variability-Aware Parsing in the Presence of Lexical Macros and Conditional Compilation (Kaestner et al., OOPSLA '11)
Nov. 23, 2015 Variability-aware analysis Exploring Variability Aware Execution for Testing Plugin-based Web Applications (Nguyen et al., ICSE '14)
Nov. 30, 2015 Variability-aware analysis Variability Testing in the Wild: The Drupal Case Study (Sánchez et al., VaMoS '14)
Dec. 7, 2015 Reverse-engineering variability (models) Mining Configuration Constraints: Static Analyses and Empirical Results (Nadi et al., ICSE '14)
Dec. 14, 2015 Reverse-engineering variability (models) Reverse-engineering Web Configurators (Abbasi et al., CSMR '14)
Dec. 21, 2015 Christmas Break -
Dec. 28, 2015 Christmas Break -
Jan. 4, 2016 Christmas Break -
Jan. 11, 2016 SPL Migration Minimally Invasive Migration to Software Product lines (Jespen et al., SPLC '07)
Jan. 18, 2016 Variability management/implementation techniques
(Discussion classes end)
Managing Cloned Variants: A Framework and Experience (Rubin et al., SPLC '13)
Feb. 8, 2016 Project Presentations from 2-5 pm in A126 Check emailed schedule for exact presentation slots