We consider concurrent models of computation where "actors" (components that are in charge of their own actions) communicate by exchanging messages. The interfaces of actors principally consist of "ports," which mediate the exchange of messages. Actor-oriented architectures contrast with and complement object-oriented models by emphasizing the exchange of data between concurrent components rather than transformation of state. Examples of such models of computation include the classical actor model, synchronous languages, dataflow models, process networks, and discrete-event models. Many experimental and production languages used to design embedded systems are actor oriented and based on one of these models of computation. Many of these models of computation benefit considerably from having access to causality information about the components. This paper augments the interfaces of such components to include such causality information. It shows how this causality information can be algebraically composed so that compositions of components acquire causality interfaces that are inferred from their components and the interconnections. We illustrate the use of these causality interfaces to statically analyze timed models and synchronous language compositions for causality loops and dataflow models for deadlock. We also show that that causality analysis only needs to be performed for one port in each directed communication cycle, and we give a conservative approximation technique for handling dynamically changing causality properties.

Categories and Subject Descriptors: D.2.2 [Software Engineering]: Design Tools and Techniques; F.3.1 [Logics and Meanings of Programs]: Specifying and Verifying and Reasoning about Programs; D.1.3 [Programming Techniques]: Concurrent Programming

General Terms: Design, Reliability, Theory, Verification

Additional Key Words and Phrases: Actors, Behavioral types, Causality, Dataflow, Deadlock, Discrete-event models, Interfaces, Synchronous languages, Timed systems




Download Full History