This repository contains any material that is related to the Software Product Line seminar course taking place in Winter 2015/2016 at TU Darmstadt.
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.
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 (around 1/2 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%)