SoftwareX (Dec 2023)
REFRAME–A software framework for managing reactive dependencies in object-oriented applications
Abstract
In object-oriented (OO) applications, objects collaborate by invoking each other's behavior and data, thus forming dependencies. Sometimes, we need these dependencies to be reactive, so that, for example, an object automatically reacts to events and changes in other objects. The need for such dependencies often arises in event-driven systems, graphical user interfaces (GUI), animation, spreadsheet systems, etc. While in some cases reactive dependencies form fairly simple structures, in cases of implementing complex calculation models reactive dependencies can be especially numerous and can form complex dependency graphs. Understanding such graphs and manually handling reactive dependencies is extremely challenging and error-prone. Paradigms such as Reactive Programming (RP) make this task easier by providing programming languages with built-in abstractions and mechanisms for handling reactive dependencies. However, in the OO context, developers have no available solutions capable of handling complex dependency graphs. Instead, they often resort to implementing their own solutions rooted in a well-known, but limited Observer design pattern. While improved design patterns have emerged over time, they present smaller-scale solutions, oriented only on design reuse. Developers still need to invest significant effort to implement and test the proposed design. This indicates that there is a need for a larger-scale and implementation-level solution that developers could (re)use out-of-the-box. Therefore, this paper presents a software framework named REFRAME which provides built-in abstractions, mechanisms and tools for handling reactive dependencies in OO context.