author: | Roel ter Maat |
title: | A Framework for Modular Implementation of Domain-Specific Event-Based Applications |
keywords: | |
topics: | Languages , Software Technology |
committee: |
Mehmet Akşit
, Christoph Bockisch , Steven te Brinke , Somayeh Malakuti |
end: | March 2014 |
Abstract
There are various types of application that can be used to implement different types of event processing. Examples of event processing are runtime verification [1], self-adaptive software [2], and traffic monitoring. To implement these types of application, event producers are used to indicate a state change. Event consumers can perform actions on the event streams and event processing agents are used to mediate between the event producers and event consumers.
When implementing event processing applications, a large amount of event producers, event processing agents and event consumers can be used, increasing the complexity. To manage this complexity, this thesis claims that a separation of concerns, a loose coupling between concerns, and understandability of the code is required.
In current advanced programming languages and frameworks, module abstractions, composition operators, and some language extensibility is provided. To evaluate the suitability of these abstractions, a set of requirements for event processing applications is set in chapter 3. A representative set of languages is evaluated with respect to these requirements. Using the results of these evaluations, the shortcomings are identified.In [3, 4], event modules are introduced as linguistic abstractions. These modules support modular representation of events and their reactions. In EventReactor [3, 5, 6] these event modules are implemented. In this thesis, it is explained that event modules can modularize the concerns, and facilitate loose coupling in the compositions.
In chapter 4 a new EventReactor implementation is introduced. This framework improves the composability of event modules by composing them on instance level and supports both implicit and explicit composition of event modules. The modularity is also improved by modularizing both the event consumer and event processing agents. Finally, an extensible set of languages is used to defined the functionality in the event modules, which is used to increase the understandability of the code.