My research focuses on developing methods and techniques that support understanding, engineering, and assuring intelligent/autonomous software systems, especially systems that act upon themselves or the environment based on automated decisions (cf. self-aware and self-adaptive software systems). In my work, I combine software engineering research with model-driven engineering, control theory, artificial and computational intelligence, and (mathematical) optimization.
My Ph.D. research was about model-driven engineering of self-adaptive software where models and model-driven engineering techniques are exceedingly leveraged at run-time to achieve a higher degree of flexibility in the design, evolution, and operation of such software systems than the state of the art (cf. EUREMA and MORISIA projects).
Especially in my postdoctoral studies I broadened my research along three lines:
We observe an increasing level of autonomy of self-adaptive systems that operate in uncertain environments, which requires novel means to engineer such systems. In this context, I research optimization, learning, assurance, control-inspired, and architectural methods and techniques for self-adaptive systems such as:
Methods from computational and artificial intelligence are typically black-box and therefore arcane for software engineers, which impedes an understanding why certain methods work well and others do not for a specific problem. For this purpose, my goal is to develop explanations that enable such an understanding.
Particularly, I develop explanations of the difficulty of optimization problems in search-based software engineering by analyzing the fitness landscape and thus, the interaction of methods from computational intelligence (esp. evolutionary algorithms) with the related search spaces. The explanations enable a better understanding of the search problems and methods (cf. FLASH project). One example is:
The gained understanding could then help in configuring a method to yield better results for a specific problem. In this context, I envision self-adaptive intelligent methods that automatically and dynamically configure themselves at run-time. For instance:
Since the techniques to develop explanations are generic, they can be also applied to optimization problems in self-adaptive software systems such as finding optimal adaptation plans and system configurations.
Besides aiming for a better understanding of intelligent methods, I am interesting in applying such methods to search-based software engineering problems such as testing and fuzzing (see SSBSE’20a and SSBSE’20b).
Given the increasing level of autonomy, large configuration spaces, or uncertainty of software systems, assuring such systems has become a major challenge (SEfSAS’17a, SE4Science’19). The use of formal methods (e.g., model checking), and the interpretation of the results of such methods (e.g., a counterexample) are often difficult, error-prone, and costly. My goal is to make such methods practically usable, for instance by:
As part of the DFG Collaborative Research Center 1404 “FONDA – Foundations of Workflows for Large-Scale Scientific Data Analysis”, I contribute to two subprojects:
Transferring self-adaptation principles to the search process of Sapienz, a search-based test suite generation tool for mobile applications (funded by the 2018 Facebook Testing and Verification Research Award). For further details, please have a look at the following presentation: Search-Based App Testing, Fitness Landscape Analysis, and Diversity.
Analyzing and understanding the search space and search methods for software engineering problems to improve state-of-the-art search heuristics to solve these problems (funded by DFG, project website).
Developing a domain-specific language for specifying and verifying requirements and safety contracts in the automotive industry, and techniques for explaining counter examples of the verification process (in cooperation with BOSCH Research).
Developing a user-friendly, model-driven approach to specify, compose, and verify scenario-based requirements. This includes the pattern-based specification of scenarios using sequence diagrams, composing scenarios to automaton-based specifications, and integrating natural language-based property specification patterns with UPPAAL. (in cooperation with TWT GmbH, funded by BMBF, project website).
A model-driven engineering approach to specify, execute, adapt, and evolve feedback loops in self-adaptive software systems (project website).
Researching runtime models for feedback loops in self-adaptive software systems to realize self-awareness and self-adaptation (project website).
An exemplar for model-based architectural self-healing and self-optimization of an information system. See paper and artifact at GitHub.