This dissertation focuses on 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 dissertation studies formal analysis of such components to include such causality information. A causality interface framework, which focuses on functional actors, is presented. I show how this causality interface can be algebraically composed so that compositions of components acquire causality interfaces that are inferred from their components and the interconnections. I illustrate the use of these causality interfaces to statically analyze timed models and synchronous language compositions for causality loops and dataflow models for deadlock. I also show that that causality analysis for each communication cycle can be performed independently and in parallel, and it is only necessary to analyze one port for each cycle. Later, I present another framework called ordering dependency. Ordering dependency captures causality properties that are not captured by the functional abstraction of actors. I illustrate the use of ordering dependencies to analyze rendezvous of sequential programs, and its use in scheduling of distributed timed systems.




Download Full History