ReDOOP: Reaktives Design für objekt-orientierte Programmierung
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)
-
“On the Semantics of Distributed Reactive Programming: The Cost of Consistency”. In: IEEE Transactions on Software Engineering 44.7 (May 2018), pp. 689–711
Alessandro Margara and Guido Salvaneschi
-
“Thread- Safe Reactive Programming”. In: Proceedings of the ACM on Programming Languages 2.OOPSLA (Oct. 2018), 107:1–107:30. issn: 2475-1421
Joscha Drechsler, Ragnar Mogk, Guido Salvaneschi, and Mira Mezini
-
“Versatile Event Correlation with Algebraic Effects”. In: Proceedings of the ACM on Programming Languages 2.ICFP (July 2018), 67:1–67:31. issn: 2475-1421
Oliver Bračevac, Nada Amin, Guido Salvaneschi, Sebastian Erdweg, Patrick Eugster, and Mira Mezini
-
“Automated Refactoring to Reactive Programming”. In: Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering. ASE ’19. San Diego, CA, USA: IEEE Press, Nov. 2019, pp. 835–846. isbn: 978-1-7281-2508-4
Mirko Köhler and Guido Salvaneschi
-
“Language-Integrated Privacy-Aware Distributed Queries”. In: Proceedings of the ACM on Programming Languages 3.OOPSLA (Oct. 2019), 167:1–167:30. issn: 2475-1421
Guido Salvaneschi, Mirko Köhler, Daniel Sokolowski, Philipp Haller, Sebastian Erdweg, and Mira Mezini
-
“Rethinking Safe Consistency in Distributed Object- Oriented Programming”. In: Proceedings of the ACM on Programming Languages 4.OOPSLA (Nov. 2020), 188:1–188:30. issn: 2475-1421
Mirko Köhler, Nafise Eskandani, Pascal Weisenburger, Alessandro Margara, and Guido Salvaneschi