Today, new innovations typically happen in software. Instead of writing software from scratch, software is typically built by reusing existing software. Reuse is the major driving factor in software product lines, in which new software variants can be generated for selection of features, also known as configuration. While product lines are a powerful tool for the efficient development, the analysis of the configuration space has become a major challenge for many software engineering tasks, such as quality assurance of safety and security properties. With FeatureIDE, we develop and maintain the most-used open-source tool for feature modeling. While it was originally designed as an integrated development environment for the implementation of software product lines to be used in teaching, it is nowadays used by researchers and practitioners world-wide. In particular, it is not only used for software configuration but also to model configuration spaces of hardware, goods, or even financial products.
The power of FeatureIDE lies in its reasoning capabilities which are built using classical artificial intelligence. Many algorithms reduce analysis problems to satisfiability problems, which can efficiently be solved by means of satisfiability (SAT) solvers. While this is state-of-the-art for more than two decades, we help to transfer research results into industrial practice. We are one of the leading research groups applying knowledge compilation techniques (e.g., #SAT solvers) to huge configuration spaces. In the future, our research may facilitate counting the number of Linux configurations or to scale analyses that are infeasible right now. We also employ product-line technology to clone-and-own, a very common practice to copy and adapt software instead of actual reuse. In the project VariantSync funded by the German Research Foundation (DFG), we aim to automate development tasks, such as fixing merge conflicts, a task that is manually performed by developers and a major obstacle in their daily business.