In modern technical systems, software often realizes a major part of an increasingly complex functionality. Due to this growing complexity, it becomes harder to ensure correctness of the software. Especially in safety-critical areas, like transportation or medicine, failures in the software can lead to harmful accidents. Therefore, software engineers need support for developing software that does exactly what it is supposed to do.
For developing a correct system, engineers first need a way to specify the system's intended behavior. However, engineers usually cannot understand the complete system at once. For this reason, scenario-based specification techniques have been developed. Scenarios define how a part of the system is supposed to behave in one specific situation. By concentrating on one scenario at a time, the engineer is faced with less complexity at once. However, these scenarios still need to be turned into a correct software. If this is done manually by programming, the programmer needs to consider the interrelations of the various scenarios, which also is way too complex. Instead, to ensure that the system actually fulfills the specification, a correct implementation should be derived automatically.
The goal of my research project is to develop an approach for automatically deriving a distributed implementation model from a scenario-based specification of a real-time system. While the problem has already been solved for the centralized case, distributed systems pose additional challenges. In this kind of systems, no individual component has full information about the state of the complete system. For fulfilling the specification, the subsystems have to share information by communication. Therefore, I need to develop an algorithm to determine, which additional communication is needed. A further challenge is that this algorithm has to take into account real-time constraints of the system to make sure it reacts in time.