Component Specification Using Event Classes


by Mark Bickford


Working in a higher-order, abstract logic of events, we define event
classes, a generalization of interfaces, and propagation rules that specify information
flow between event classes. We propose a general definition of a component
as a scheme, parameterized by a set of input classes, that defines a set of
output classes and propagation rules. The specification of a component is a relation
between its input classes and defined output classes that follows from its
propagation rules and definitions.

We define a subset of programmable event classes that can be compiled and
executed and a language, called E#, for specifying components. Components
specified in E# preserve programmability–if the component’s input classes are
programmable then its output classes and propagation rules are programmable.

Thus a component specified in E# is a higher-order object: given programs
for its input classes, it produces a distributed program for propagating information
and programs for its output classes. These programs can be passed as inputs to
other components so that components can be composed.