In industry, embedded systems for stream-based
1: IntroductionEmbedded systems for stream-based processing (video, audio) are often found in consumer electronics applications. They need to operate flawlessly and hence much effort is spent in the design and verification of these applications. A popular model of computation for these applications is the Kahn process network model (KPN). The Kahn model is compositional and allows asynchronous coupling of the processing nodes in a network. An important advantage of Kahn networks is that verification of the concurrency properties of a network can be done without knowing the internal processing details of the nodes, provided that the port scans of a node are done in prescribed way.Apart from handling streams, embedded systems need to be able to handle events. A simple example of an event is a user pushing a button. Incorporating events in Kahn networks is awkward, often events are turned into a stream, e.g., a coherent stream of "on" and "off" events.However, modern embedded systems require more complex forms of handling events. Events, typically, represent changes in the context of the embedded system. The button example represents a discrete change in the mode of the operation of the embedded system, but changes of context can also be more gradual. An example of a gradual change is an increase or decrease in transmission rate of a system due to external causes (e.g. a wireless link).Proper system integration in embedded systems relies on the availability of determinate -and thus compositional -components in order to optimise functionality, performance, and resource utilisation. Unless one effectively can capture (isolate) their context dependent parts, any composition of indeterminate components yields a non-deterministic system. Although examples of working non-deterministic systems are ubiquitous, the current practice is not satisfactory.Having a proper Model of Computation (MoC) greatly improves the effectiveness of the system integration phase in developing context-aware embedded systems. Basically there exist two approaches. One either develops a MoC based on discrete-event processing or a MoC based on