Thorsten Berger

Thorsten Berger
Ruhr University Bochum | RUB

Professor

About

168
Publications
29,122
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
5,248
Citations

Publications

Publications (168)
Preprint
Security must be considered in almost every software system. Unfortunately, selecting and implementing security features remains challenging due to the variety of security threats and possible countermeasures. While security standards are intended to help developers, they are usually too abstract and vague to help implement security features, or th...
Article
Customization is a general trend in software engineering, demanding systems that support variable stakeholder requirements. Two opposing strategies are commonly used to create variants: software clone & own and software configuration with an integrated platform. Organizations often start with the former, which is cheap and agile, but does not scale...
Chapter
Full-text available
Machine learning (ML) has improved dramatically over the last decade. ML models have become a fundamental part of intelligent software systems, many of which are safety-critical. Since ML models have complex lifecycles, they require dedicated methods and tools, such as pipeline automation or experiment management. Unfortunately, the current state o...
Preprint
Full-text available
Features are commonly used by developers and users to describe the functional and non-functional characteristics of software. Especially agile development methods, such as SCRUM, FDD or XP, use features to plan and manage software development. Features are often the main units of software reuse, communication, and configuration, abstracting over im...
Article
Full-text available
Robotic systems are becoming pervasive and adopted in increasingly many domains, such as manufacturing, healthcare, and space exploration. To this end, engineering software has emerged as a crucial discipline for building maintainable and reusable robotic systems. The field of robotics software engineering research has received increasing attention...
Preprint
The rise of machine learning (ML) and its embedding in systems has drastically changed the engineering of software-intensive systems. Traditionally, software engineering focuses on manually created artifacts such as source code and the process of creating them, as well as best practices for integrating them, i.e., software architectures. In contras...
Preprint
Security engineering, from security requirements engineering to the implementation of cryptographic protocols, is often supported by domain-specific languages (DSLs). Unfortunately, a lack of knowledge about these DSLs, such as which security aspects are addressed and when, hinders their effective use and further research. This systematic literatur...
Article
Full-text available
Scenario-based testing for automated driving systems (ADS) must be able to simulate traffic scenarios that rely on interactions with other vehicles. Although many languages for high-level scenario modelling have been proposed, they lack the features to precisely and reliably control the required micro-simulation, while also supporting behavior reus...
Preprint
Full-text available
Robotic systems are becoming pervasive and adopted in increasingly many domains, such as manufacturing, healthcare, and space exploration. To this end, engineering software has emerged as a crucial discipline for building maintainable and reusable robotic systems. The field of robotics software engineering research has received increasing attention...
Article
Full-text available
Machine Learning (ML) experiment management tools support ML practitioners and software engineers when building intelligent software systems. By managing large numbers of ML experiments comprising many different ML assets, they not only facilitate engineering ML models and ML-enabled systems, but also managing their evolution—for instance, tracing...
Article
Every software system undergoes changes, for example, to add new features, fix bugs, or refactor code. The importance of understanding software changes has been widely recognized, resulting in various techniques and studies, for instance, on change-impact analysis or classifying developers’ activities. Since changes are triggered by developers’ int...
Conference Paper
Full-text available
We summarize our article published in IEEE Transactions on Software Engineering [Gh23]. Robotics systems are complex and software-intensive cyber-physical systems performing increasingly complex tasks in our everyday life. The software controlling robots is typically realized with specific software architectures, allowing to structure the software...
Technical Report
Full-text available
This tutorial discusses meta-modeling in the tooling infrastructure (technological space) Eclipse Modeling Framework (EMF). We create the abstract syntax (meta-model) of a language, and generate Java code from it, illustrated with an example from the book Domain Specific Languages -- Effective Modeling, Automation, and Reuse.
Conference Paper
Generative Artificial Intelligence (GAI) promises groundbreaking automation technology - a potential which may raise the management of variability-intensive software systems to a new level of automation. Several activities in maintaining variability-intensive software systems, such as extracting feature traces to updating features consistently, are...
Article
Almost any software system needs to exist in multiple variants. While branching or forking-a.k.a. clone & own—are simple and inexpensive strategies, they do not scale well with the number of variants created. Software platforms—a.k.a. software product lines—scale and allow to derive variants by selecting the desired features in an automated, tool-s...
Article
Locating features is one of the most common software development activities. It is typically done during maintenance and evolution, when developers need to identify the exact places in a codebase where specific features are implemented. Unfortunately, locating features is laborious and error-prone, since feature knowledge fades, projects are develo...
Article
Autonomous robots combine skills to form increasingly complex behaviors, called missions. While skills are often programmed at a relatively low abstraction level, their coordination is architecturally separated and often expressed in higher-level languages or frameworks. State machines have been the go-to language to model behavior for decades, but...
Conference Paper
Full-text available
The Robot Framework is a popular and widely used test automation framework that abstracts test case specifications toward natural language specifications. This makes it well suited for implementing high-level test cases, at least as long as the functions provided by Robot can support the intended functionality. For more complicated test cases, cust...
Technical Report
Full-text available
This tutorial briefly introduces class-modeling as necessary for meta-modeling. We introduce the basic concepts, including classes and relationships, upon the simple class-modeling language Ecore, which is a dialect of UML class models, and which implements the MOF standard. The tutorial complements the book Domain Specific Languages -- Effective M...
Chapter
An important notation for expressing domain models is feature models. Feature models are a simple, tree-based modeling notation that allows features and their constraints to be expressed. The latter restrict the valid combinations of features or express relations among features.
Chapter
Models and meta-models, algebraic data types and values, XML schemas and files, class and instance diagrams, YAML files—all these abstractsyntax specification methods are clearly important for you as a language designer. At the same time, the end-users, especially domain experts who are not programmers, tend to find them unnatural and cumbersome to...
Chapter
You want to design a DSL to boost software development, evolution, or customization in some domain. In the first step, you need to clarify what are the key relevant aspects of this domain, in a process known as domain analysis and meta-modeling. During the analysis, we identify the relevant concepts and relationships between them. During meta-model...
Chapter
In Chapter 3, we have discussed how to use generalization, containment, cardinality constraints, and associations to control the set of legal instances of a model. Nevertheless, when working on your own models, you must have arrived at situations when capturing the exact set of desirable instances using a class diagram was either impossible or cumb...
Chapter
Type systems are a common complement to structural constraints in enforcing static semantics on a program text, and are particularly useful if you need to track recursive properties on inductive syntax types (meta-models with cycles over containment relations). In this chapter, our goal is to explain what types and type systems are, to show how to...
Chapter
In the last two chapters, we discussed the use of MDSE techniques for realizing software product lines. More specifically, we described the realization of variability in traditionally developed systems and focused on variability of source code to customize it to particular needs. Let us now discuss the other direction: using product line techniques...
Chapter
We will now look at the application of MDSE for so-called software product lines—portfolios of software variants in a particular application domain. We will discuss the systematic engineering of product lines using methods and tools from the field of software product line engineering (SPLE). This field advocates the creation of configurable softwar...
Chapter
Even though building interpreters is often the cheapest and the easiest way to implement dynamic semantics, we need alternatives when architectural or performance requirements rule that out. Demands on execution speed, throughput, parallelization, low memory consumption, access locality, security or available programming languages and libraries may...
Chapter
So far, we focused on defining the syntax of DSLs in efficient ways. We worked with abstract and concrete syntax. We have seen tools that can transform syntax definitions (meta-models and grammars in our case) not only into model editors, but into a whole infrastructure for processing models that adhere to the syntax definition.
Chapter
In the previous chapters, we have focused on the construction of external domain-specific languages. Their development follows a compiler-like pipeline architecture, with clearly separated design artifacts: concrete and abstract syntax, types and constraints, an interpreter or a generator. Building external DSLs might feel like reimplementing large...
Chapter
Code generators (Chapter 9) and interpreters are the primary ways to give DSLs a dynamic semantics, to breath meaning into syntax. DSL interpreters are tools that translate the input language piece-by-piece on the fly, like a human simultaneous translator from Danish to German during an interview or a press conference.
Chapter
Using models to design complex systems is common in many engineering disciplines, including architecture (buildings), civil engineering (roads and bridges), automotive engineering (cars), and avionics (airplanes). Models have an ever-growing list of applications. Engineers build them to assess system properties before prototyping or to steer constr...
Chapter
Our goal is to automate the development of software in a given domain by using models to describe its essential characteristics and producing applications using code generation and interpretation.
Article
Full-text available
Robots artificially replicate human capabilities thanks to their software, the main embodiment of intelligence. However, engineering robotics software has become increasingly challenging. Developers need expertise from different disciplines as well as they are faced with heterogeneous hardware and uncertain operating environments. To this end, the...
Conference Paper
Full-text available
Effectively using software languages, be it programming or domain-specific languages, requires effective editing support. Modern IDEs, modeling tools, and code editors typically provide sophisticated support to create, comprehend, or modify instances—programs or models—of particular languages. Unfortunately, building such editing support is challen...
Preprint
We reverse-engineer a formal semantics of the Component Definition Language (CDL), which is part of the highly configurable, embedded operating system eCos. This work provides the basis for an analysis and comparison of the two variability-modeling languages Kconfig and CDL. The semantics given in this document are based on analyzing the CDL docume...
Preprint
The Kconfig language defines a set of symbols that are assigned a value in a configuration. We describe the semantics of the Kconfig language according to the behavior exhibited in the xconfig configurator. We assume an abstract syntax representation for concepts in the Kconfig language and delegate the details of the translation from concrete to a...
Preprint
Full-text available
Autonomous robots combine a variety of skills to form increasingly complex behaviors called missions. While the skills are often programmed at a relatively low level of abstraction, their coordination is architecturally separated and often expressed in higher-level languages or frameworks. State Machines have been the go-to modeling language for de...
Article
Full-text available
Machine learning components are essential for today’s software systems, causing a need to adapt traditional software engineering practices when developing machine-learning-based systems. This need is pronounced due to many development-related challenges of machine learning components such as asset, experiment, and dependency management. Recently, m...
Preprint
Full-text available
Scenario-based testing for automated driving systems (ADS) must be able to simulate traffic scenarios that rely on interactions with other vehicles. Although many languages for high-level scenario modelling have been proposed, they lack the features to precisely and reliably control the required micro-simulation, while also supporting behavior reus...
Article
Full-text available
The ever-growing need for customization creates a need to maintain software systems in many different variants. To avoid having to maintain different copies of the same model, developers of modeling languages and tools have recently started to provide implementation techniques for such variant-rich systems, notably variability mechanisms , which su...
Article
Full-text available
With the rise of social coding platforms that rely on distributed version control systems, software reuse is also on the rise. Many software developers leverage this reuse by creating variants through forking, to account for different customer needs, markets, or environments. Forked variants then form a so-called software family; they share a commo...
Preprint
Evolving software is challenging, even more when it exists in many different variants. Such software evolves not only in time, but also in space--another dimension of complexity. While evolution in space is supported by a variety of product-line and variability management tools, many of which originating from research, their level of evaluation var...
Preprint
A traditional approach to realize self-adaptation in software engineering (SE) is by means of feedback loops. The goals of the system can be specified as formal properties that are verified against models of the system. On the other hand, control theory (CT) provides a well-established foundation for designing feedback loop systems and providing gu...
Article
Full-text available
Mobile robots are becoming increasingly important in society. Fulfilling complex missions in different contexts and environments, robots are promising instruments to support our everyday live. As such, the task of defining the robot’s mission is moving from professional developers and roboticists to the end-users. However, with the current state-of...
Preprint
Several software defect prediction techniques have been developed over the past decades. These techniques predict defects at the granularity of typical software assets, such as components and files. In this paper, we investigate feature-oriented defect prediction: predicting defects at the granularity of features -- domain-entities that represent s...
Article
Full-text available
Software product-line engineering is arguably one of the most successful methods for establishing large portfolios of software variants in an application domain. However, despite the benefits, establishing a product line requires substantial upfront investments into a software platform with a proper product-line architecture, into new software-engi...
Preprint
Full-text available
Customization is a general trend in software engineering, demanding systems that support variable stakeholder requirements. Two opposing strategies are commonly used to create variants: software clone & own and software configuration with an integrated platform. Organizations often start with the former, which is cheap, agile, and supports quick in...
Preprint
Full-text available
Machine Learning (ML) techniques are becoming essential components of many software systems today, causing an increasing need to adapt traditional software engineering practices and tools to the development of ML-based software systems. This need is especially pronounced due to the challenges associated with the large-scale development and deployme...
Preprint
Highly configurable systems are highly complex systems, with the Linux kernel arguably being one of the most well-known ones. Since 2007, it has been a frequent target of the research community, conducting empirical studies and building dedicated methods and tools for analyzing, configuring, testing, optimizing, and maintaining the kernel in the li...
Preprint
Full-text available
Conversational Artificial Intelligence (AI) systems have recently sky-rocketed in popularity and are now used in many applications, from car assistants to customer support. The development of conversational AI systems is supported by a large variety of software platforms, all with similar goals, but different focus points and functionalities. A sys...
Chapter
Robot application development is gaining increasing attention both from the research and industry communities. Robots are complex cyber-physical and safety-critical systems with various dimensions of heterogeneity and variability. They often integrate modules conceived by developers with different backgrounds. Programming robotic applications typic...
Conference Paper
Software reuse lowers development costs and improves the quality of software systems. Two strategies are common: clone & own (copying and adapting a system) and platform-oriented reuse (building a configurable platform). The former is readily available, flexible, and initially cheap, but does not scale with the frequency of reuse, imposing high mai...
Conference Paper
Full-text available
Owing to the ever-growing need for customization, software systems often exist in many different variants. To avoid the need to maintain many different copies of the same model, developers of modeling languages and tools have recently started to provide representations for such variant-rich systems, notably variability mechanisms that support the i...
Conference Paper
Full-text available
Software errors are a major nuisance in software development and can lead not only to reputation damages, but also to considerable financial losses for companies. Therefore, numerous techniques for predicting software defects, largely based on machine learning methods, have been developed over the past decades. These techniques usually rely on code...
Preprint
Full-text available
Autonomous robots combine a variety of skills to form increasingly complex behaviors called missions. While the skills are often programmed at a relatively low level of abstraction, their coordination is architecturally separated and often expressed in higher-level languages or frameworks. Recently, the language of Behavior Trees gained attention a...
Article
Version control systems are an integral part of today’s software engineering. They facilitate the collaborative management of revisions (sequential versions) and variants (concurrent versions) of software systems under development. Typical version control systems maintain revisions of files and variants of whole software systems. Variants are suppo...
Preprint
Full-text available
Robots that support humans by performing useful tasks (a.k.a., service robots) are booming worldwide. In contrast to industrial robots, the development of service robots comes with severe software engineering challenges, since they require high levels of robustness and autonomy to operate in highly heterogeneous environments. As a domain with criti...
Article
Full-text available
Handling large-scale software variability is still a challenge for many organizations. After decades of research on variability management concepts, many industrial organizations have introduced techniques known from research, but still lament that pure textbook approaches are not applicable or efficient. For instance, software product line enginee...
Conference Paper
Mobile robots are increasingly used in our everyday life to autonomously realize missions. A variety of languages has been proposed to support roboticists in the systematic development of robotic applications, ranging from logical languages with well-defined semantics to domain-specific languages with user-friendly syntax. The characteristics of bo...
Article
Mobile and general-purpose robots increasingly support our everyday life, requiring dependable robotics control software. Creating such software mainly amounts to implementing their complex behaviors known as missions. Recognizing this need, a large number of domain-specific specification languages has been proposed. These, in addition to tradition...
Chapter
The REVaMP2 Project is a major European effort towards Round-Trip Engineering of Software Product Lines for software intensive systems. Indeed, software is predominant in almost every modern industry. The importance of time-to-market has grown tremendously in many business domains. Organizations are in a constant search for approaches for mass prod...
Conference Paper
Most organizations start to reuse software by cloning complete systems and adapting them to new customer requirements. However, with an increasing number of cloned systems, the problems of this approach become severe, due to synchronization efforts. In such cases, organizations often decide to extract a software product line, which promises to redu...