Software is the driving force behind the ongoing digital innovation in many different areas in society. Consequently, the process of software development must ensure the creation of software that satisfies user needs while meeting cost and time constraints.

We, at the Institute of Software Engineering and Programming Languages, conduct research at the highest international level in many areas of software engineering and programming languages. Particularly, our main expertise is in the areas of domain-specific languages, software configuration, declarative programming languages.

Our research spans from basic research, funded by the German Science Foundation (DFG), over applied research, funded by various funding agencies on a national and European level, to industry research, directly funded by our network of industrial partners.

Particularly, we are internationally leading experts in the following areas:

Domain-Specific Languages

Domain Specific Languages (DSLs) are languages that are specifically designed for usage by domain experts. Compared to general purpose languages, they increase productivity for the specific purpose and the quality of the resulting programs. They do this by embedding key domain abstractions into the language and the corresponding tools. Furthermore, they can be designed specifically for non-computer scientists. Application areas of domain specific languages range from controlled natural language requirement boilerplates over languages for big data analytics and AI to languages simplifying the use of formal methods.

The Institute of Software Engineering and Programming Languages is one of the few research groups in Europe which covers the whole development pipeline of domain specific languages starting with the empirical identification of needs by domain experts, the design of the language itself (syntax and semantics) and corresponding state-of-the-art tools (e.g., textual and graphical editors, analysis tools, debuggers), as well as an empirical evaluation with domain experts.

We have developed domain specific languages in various areas and domains. In basic science projects, we co-develop the graph transformation language Henshin which enables the declarative specification of complex graph patterns and changes. Our specific research focus lies on the performance of the execution of those specifications including an execution on high-performance clusters. In applied research, we developed a domain-specific language and innovative tooling for the interactive roadmapping of innovative systems. Our special interest here is to provide a high user experience and innovative collaboration features. In direct industry research, we developed and introduced a natural language-based domain-specific language for defining automotive system tests. Our focus here has been on ensuring an easy introduction into daily usage in industrial practice.

Related Research Projects


Tools to accelerate innovation along the automotive value chain


Self-organizing resilient execution platform for IoT services


Model TransformatIon PerformanCe Engineering

Software Configuration

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.

Related Research Projects


Eclipse Plugin for Feature Oriented Software Development

Declarative und Functional Programming Languages

Our research is concerned with the development, analysis and application of declarative programming languages in the field of Computational Logic and Artificial Intelligence.

Constraint Programming can model and specify problems with uncertain, incomplete information and to solve combinatorial problems, as they are abundant in industry and commerce, such as scheduling, planning, transportation, resource allocation, layout, design, and analysis. Constraint-based programming languages enjoy elegant theoretical properties, conceptual simplicity, and practical success. The idea of constraint-based programming is to solve problems by simply stating constraints (conditions, properties) which must be satisfied by a solution of the problem. Constraints can be considered as pieces of partial information. Constraints describe properties of unknown objects and relationships between them.

Constraint Handling Rules (CHR) is a concurrent committed-choice constraint logic programming language consisting of guarded rules that transform multi-sets of constraints until exhaustion. CHR can embed many rule-based formalisms and systems. It can describe algorithms in a compact declarative way without compromising efficiency. The clean logical semantics of CHR facilitates non-trivial program analysis and transformation. About a dozen implementations of CHR exist in Prolog, Haskell, Java, Javascript and C. CHR is used in academia and industry worldwide. Applications range from stock broking to injection mold design.

Functional Programming
The functional programming paradigm has experienced an upswing in recent years. The higher abstraction allows for a significant improvement of the clarity of code which is one reason for the integration of functional aspects of almost all modern languages. Another reason is the eliminiation of side-effects that makes languages like Haskell very suitable for concurrent programming and AI. Our research focuses on the learnability of this paradigm by developing tools that visualize the data and control flow of functional languages.

Related Research Projects


Automatic Support for Proving Confluence Modulo Equivalence for CHR