Detailseite
Projekt Druckansicht

ReDOOP: Reaktives Design für objekt-orientierte Programmierung

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2016 bis 2020
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 322196540
 
Erstellungsjahr 2022

Zusammenfassung der Projektergebnisse

The goal of this project was to design a new programming model that incorporates language abstractions for reactive programming and OO features available in mainstream languages, such as inheritance, late binding and encapsulation. Traditional solutions based on event systems and the Observer design pattern are notoriously cumbersome, but developers accept the lack of suitable language abstraction to take advantage of object-oriented (OO) design. We believe this project was successful in achieving this goal of designing a programming model that supports reactive applications in the OO setting, as evident in the number of top publications. Notably, we developed a propagation algorithm that retains the full expressivity of functional languages, which support higher-order functions, for reactive abstractions – including higher-order behaviors, higher-order events and their combination – while providing OO-style modularity and composability. The integration of reactive values into OO programming as object members enables the composition of different modules. We designed a static type system that tracks the placement of object members (fields and methods), which hold reactive values (events and behaviors). We further developed various extensions to our language. For instance, we support advanced event-based correlation for detecting relevant event patters. We introduced availability types, which allow developers to trade off between consistency and availability, accepting lower levels of consistency to guarantee higher availability. We developed privacy preservation techniques for reactive OO applications, preventing the leakage of sensitive information, and improving performance. Thanks to the specification of data flows in the reactive OO model, the language runtime has sufficient information about the application structure to automate fault tolerance by restoring crashed applications to the state before the crash. Lastly, we developed a technique to automatically refactor traditional OO programs to benefit from the integration of reactive features. We proved our base language and its extensions sound based on a formal core calculus (syntax and reduction-based semantics). The language design is evaluated based on implementing case studies and retrieving code metrics from them – showing improvement in application design regarding the comprehensibility of programs and safety against programming bugs – and implementation of the language is performance-benchmarked – showing that our implementation is competitive with traditional approaches. In the course of the project, we also identified new research directions – in particular on language features for distributed systems – on which we are following up in ongoing research projects.

Projektbezogene Publikationen (Auswahl)

 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung