print · source · login   

Software Product Lines

Customization allows software companies to tailor their products to diverse application contexts and market segments. Software product lines are a key technology for the development of customized software at scale. When developing software product lines, the aim is to keep the code base maintainable, while at the same time reducing development costs. Maintaining a software product line can also give rise to unique challenges during software analysis and testing, especially when the number of customizable variation points is large, leading to an astronomically large space of possible products -- calling for improved software analysis and testing techniques.

Course on software product lines

The course Software Product Lines (M.Sc., 6 ECTS) is held in winter semesters.

Thesis and internship topics

The following topics are to be completed by a student with a background in software product lines, obtained, by example, by attending the relevant course. Depending on whether a stand-alone M.Sc. thesis, a stand-alone internship, or a combination of both is preferred, the focus and scope of the project can be scaled differently. Each topic has a hint whether it's more formal, applied, empirical, or focused on tool building.

Model-based testing of software product lines The recently started TiCToC project provides many opportunities for theses at the intersection of testing and software product lines, including topics such as:
1. (Reserved) Extracting a feature-based representation of a practical software project for testing purposes (in collaboration with Philips; applied)
2. (Reserved) Testing a practical feature-based software project (in collaboration with Philips; applied, with tool building aspects)
3. From state machines to model-based testing: implementing a transformation from a tabular state machine notation to the input of a model-based software tool - and, potentially, adding variability (in collaboration with AKKA; tool building).
4. Modeling of testing techniques in specialized theoretical frameworks. (formal)
5. Configuration prioritization for testing of software product lines: developing and assessing different prioritization strategies and/or search operators (empirical, tool building).
Prerequisites: a background in software testing is helpful, obtained, for example, by attending the course on Testing Techniques.

(Reserved) Model checking of graph transformations with variability. Variability mechanisms such as those introduced in the lecture have recently been introduced to model transformation languages, where they can be used to specify and execute "families of transformations". The goal of this thesis topic is to extend previous (graph-based) model checking tools to make them variability-aware, allowing to improve the performance and scalability of model checking. (formal, tool development)
Prerequisites: a background in model checking is helpful.

Supporting experiment families with computational notebooks. Computational notebooks such as Jupyter are currently booming, due to their widespread use for data exploration during data mining and machine learning tasks. The goal of this project is to augment existing notebooks to provide support for families of experiments, differing in certain features. This would allow to make the data exploration process more systematic and managenable for data scientists and other notebook users. (practical, tool development)
Prerequisites: a background in machine learning is helpful.

Improved #SAT solving for software product line analysis. When analysing a product line, a relevant question is: how many products exists for a particular product line, based on a given feature model? Such questions can be answered with #SAT solvers, in particular, using BDDs (binary decision diagrams). However, these tools do not scale up to large product lines. One example is the Linux kernel: the exact number of products for the Linux kernel is currently unknown. The goal of this thesis is to explore strategies for making existing tools scale up to an ideally large portion of such feature models and product lines. One option is to explore different strategies for ordering variables in BDD construction (tool development, potentially formal).
Prerequisites: a background in formal reasoning (specifically, SAT solving and BDDs) is helpful.

Automated optimal configuration of software product lines. Finding a good configuration is especially challenging when the goal is to optimize certain quality objectives, such as minimizing cost while maximizing performance -- due to combinatorical effects, an NP-hard problem. To efficiently navigate the state space, existing techniques employ meta-heuristics, such as genetic algorithms. The goal of this thesis would be to improve on existing solutions by finding more efficient encodings. (between theoretical and practical, tool development).

Higher-order feature interactions in the wild. The goal of this topic is to get a deeper insight into how real software projects are affected by higher-order feature interactions. To this end, a mining study is to be conducted based on large-scale datasets (e.g., GitHub). To detect higher-order interactions, previous techniques as well as possible new techniques developed as part of this thesis can be applied (empirical, tool development).

We are also open to your ideas on topics in this direction. Feel free to contact Daniel Strüber if you are interested and/or have any questions.