Component Specification Using Event Classes Mark Bickford Cornell University Computer Science and ATC-NY 33 Thornwood Dr. Suite 500, Ithaca, NY, USA markb@cs.cornell.edu Abstract. Working in a higher-order, abstract logic of events, we define event classes, a generalization of interfaces, and propagation rules that specify infor- mation flow between event classes. We propose a general definition of a compo- nent 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 re- lation 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. 1 Introduction We may view all computing as information processing: a computation receives infor- mation, initially or through an on-going interaction with its environment, and produces some information, on exit or interactively. From this viewpoint, specification of a com- putational process will naturally focus on information associated with events. A specifi- cation must define how the process recognizes its input events and reads the associated input information and must also define how the environment will recognize the output events produced by the process and read the information associated with them. In addi- tion, the specification defines the relation between the input and output events and their associated information. The specification of the input (output) events and associated information is usually called the interface specification, while the relation between the interfaces might be called the functional specification. The interface specification and functional specifi- cation are often written separately but, when this is done, important properties of the process may become difficult or impossible to specify. For example, a separate functional specification may express the relation between the input information and the output information but be unable to express relations that depend on the temporal ordering of the input and output events. Conversely, an interface specification may be unable to express that the information coded by an input event G.A. Lewis, I. Poernomo, and C. Hofmeister (Eds.): CBSE 2009, LNCS 5582, pp. 140–155, 2009. c Springer-Verlag Berlin Heidelberg 2009