Abstract As event-based middleware is currently being applied for application component integration in a range of application domains, a variety of event services have been proposed to address different application requirements. This paper presents a survey of existing event systems structured as a taxonomy of distributed event-based programming systems. A taxonomy is a classification that allows different examples of some generic type to be systematically arranged in groups or categorised according to established criteria. The taxonomy presented in this paper is structured as a hierarchy of the properties of a distributed eventbased programming system and may be used as a framework to describe a distributed event-based programming system according to its properties. Our taxonomy identifies a set of fundamental properties of event-based programming systems and categorises them according to the event model and event service criteria. The event service is further classified according to its organisation and interaction model, as well as other functional and non-functional features. The event-based communication model is particularly useful in centralised and distributed applications that require one or more application components to react to a change in the state of another application component as it provides a one-to-many or many-to-many communication pattern [6] [7] [8] [9] . Event-based communication is essentially asynchronous [10], [11] which results in a less tightly coupled communication relationship between application components compared to the traditional request/response communication model. Since it features anonymity, it is well suited for applications consisting of a possibly large number of anonymously interacting components, without having to rely on centralised control. Such communities of cooperating components are exploited in distributed systems where independent application components establish communication relationships dynamically over time in an unpredictable fashion. Event-based middleware is currently being applied for application component integration in many application domains including finance, telecommunications, smart environments, multimedia, avionics, health care, and entertainment [1, 2, [12] [13] [14] [15] [16] [17] [18] [19] . Moreover, with the widespread deployment and use of wireless technology, where communication relationships amongst heterogeneous application components [10] are established very dynamically during the lifetime of the components, event-based middleware will become even more prevalent as it addresses important application requirements of the wireless and hence mobile computing domain, including avoidance of long-lasting and hence potentially expensive connections, hiding of communication latency due to decoupled interaction phases, omission of centralised control, and heterogeneity. Both mobility and wireless networking represent key enabling technologies underlying the vision of ubiquitous computing, where interconnected computers will be embedded in a wide range of appliances ranging in size from door locks to vehicle controllers performing tasks, such as automatically opening doors and routing vehicles to their intended destinations, on behalf of their human users. The notion of dynamically inaugurating communication relationships among application components without relying on centralised control is central to addressing the needs of a scalable system, representing the ability to accommodate growth in a potentially large-scale distributed environment. Currently, event services are omnipresent in applications ranging from small-scale, centralised to large-scale, highly distributed systems. On one hand, they are exploited to interconnect individual components of applications such as graphical user interfaces [20] , [21] , disseminating user driven and hence sporadic changes to the state of graphical components to other components of the application that are required to react to these changes. At the other extreme, publishers of stock trading information may utilise a system
Other seminal work in the area of models and taxonomies for event-based systems, particular targeting event-based programming systems, has been published by Meier and Cahill REF .
Taxonomy of Distributed Event-Based Programming Systems
Comput. J.
Computer Science