Fabian Benduhn

Learn More
FeatureIDE is an open-source framework for feature-oriented software development (FOSD) based on Eclipse. FOSD is a paradigm for construction, customization, and synthesis of software systems. Code artifacts are mapped to features and a customized software system can be generated given a selection of features. The set of software systems that can be(More)
Preprocessors are a common way to implement variability in software. They are used in numerous software systems, such as operating systems and databases. Due to the ability of preprocessors to enable and disable code fragments, not all parts of the program are active at the same time. Thus, programmers and tools need to handle the interactions resulting(More)
Feature-oriented programming is a paradigm to develop software product lines, in which products can be generated by composing feature modules. Design by contract is a development methodology, in which methods are specified by annotating them with contracts. Researchers propose to use such contracts to specify feature modules in order to perform different(More)
A software product line is a set of different software products that share commonalities. For a selection of features, specialized products of one domain can be generated automatically from domain artifacts. However, analyses of software product lines need to handle a large number of products that can be exponential in the number of features. In the last(More)
The verification of software product lines is an active research area. A challenge is to efficiently verify similar products without the need to generate and verify them individually. As solution, researchers suggest family-based verification approaches, which either transform compile-time into runtime variability or make verification tools(More)
Today's software systems are often customizable by means of load-time or compile-time configuration options. These options are typically not independent and their dependencies can be specified by means of feature models. As many industrial systems contain thousands of options, the maintenance and utilization of feature models is a challenge for all(More)
As software product lines are increasingly used for safety-critical systems, researchers have adapted formal verification techniques such as model checking and theorem proving to cope with compiletime variability. While the focus of the ongoing debate lies on the verification mechanisms itself, it becomes increasingly difficult for researchers to maintain(More)
Software product lines are increasingly used to develop safety-critical and missioncritical systems. To reason about the correctness of product lines, researchers have developed special testing techniques and adapted formal verification techniques such as model checking and theorem proving to the requirements of software product lines. Existing research has(More)
Mutation testing has emerged as one of the most promising techniques to increase the quality of software-intensive systems. In mutation testing, random faults based on a predefined set of mutation operators are automatically injected into a program to evaluate test suites. The effectiveness of mutation testing strongly depends on the representativeness of(More)