Event-Based Execution Architectures for Dynamic Software Systems James Vera, Louis Perrochon, David C. Luckham Computer Systems Laboratory Stanford University Stanford, CA 94305, USA {vera,perrochon,dclj@pavg.stanford.edu Key words: Evolutionary software architectures, software artifacts, component engineering. Abstract: Distributed systems' runtime behavior can be difficult to understand. Concurrent, distributed activity make notions of global state difficult to grasp. We focus on the runtime structure of a system, its execution architecture, and propose representing its evolution as a partially ordered set of predefined architectural event types. This representation allows a system's topology to be visualized, analyzed and constrained. The use of a predefined event types allows the execution architectures of different systems to be readily compared. 1. INTRODUCTION Distributed software systems consist of computational components interacting over a communications infrastructure. The executions of these systems can be highly dynamic with components being created and destroyed and the communications infrastructure undergoing continual reconfiguration. We propose to represent the evolution of the structure of such a running system, termed the execution architecture of the system, as a set of events, partially ordered by time and causality. This partial order of architectural events enables the precise analysis of the topological evolution of a system, just as a partial order of behavioral events enables a precise analysis of the functional activity of a system (Peled, Pratt et al. 1996). The original version of this chapter was revised: The copyright line was incorrect. This has been corrected. The Erratum to this chapter is available at DOI: 10.1007/978-0-387-35563-4 35 P. Donohoe (ed.), Software Architecture © IFIP International Federation for Information Processing 1999