Communicating Process Architectures 2007 Alistair A. McEwan, Steve Schneider, Wilson Ifill, and Peter Welch IOS Press, 2007 1 Components with Symbolic Transition Systems: a Java Implementation of Rendezvous Fabricio FERNANDES, Robin PASSAMA and Jean-Claude ROYER OBASCO Group, ´ Ecole des Mines de Nantes – INRIA, LINA 4 rue Alfred Kastler, 44307 Nantes cedex 3, France. {Fabricio.Fernandes , Robin.Passama , Jean-Claude.Royer} @emn.fr Abstract. Component-based software engineering is becoming an important approach for system development. A crucial issue is to fill the gap between high-level models, needed for design and verification, and implementation. This paper introduces first a component model with explicit protocols based on symbolic transition systems. It then presents a Java implementation for it that relies on a rendezvous mechanism to synchronize events between component protocols. This paper shows how to get a cor- rect implementation of a complex rendezvous in presence of full data types, guarded transitions and, possibly, guarded receipts. Keywords. Component-Based Software Engineering, Behavioural Interfaces, Explicit Protocols, Symbolic Transition Systems, Rendezvous, Synchronization Barriers Introduction Component-Based Software Engineering (CBSE) is becoming an important approach for sys- tem development. As large distributed systems become always more critical, the use of for- mal analysis methods to analyze component interactions arises as a crucial need. To this end, explicit protocols have been integrated to component interfaces to describe their behaviour in a formal way. Behavioural interface description languages are needed in component mod- els to address architectural analysis and verification issues (such as checking component be- havioural compatibility, finding architectural deadlocks or building adapters to compensate incompatible component interfaces) and also to relate efficiently design and implementation models. Nevertheless, explicit protocols are often dissociated from component codes: they are ”pure” abstractions of the way components behave. This is really problematic, since noth- ing ensures component execution will respect protocols rules. So, a critical issue is to fill the gap between high-level formal models and implementation of protocols to ensure consistency between analysis and execution phases. In this field, our long term-goal is to define a component programming language with ex- plicit executable protocols, coupled with a formal ADL (Architectural Description Language) and associated analysis tools. To make a strong link between specification or design models and programming languages for implementation, there are two possible ways: (i) automated translation of models into programming code, and (ii) extraction of abstract model and pro- tocol information from programming code. We focus on the first approach. The features of the target language are object-orientation, multi-threading and facilities for synchronization. 1 Acknowledgment. This work was partly supported by the AMPLE project www.ample-project.net, and the CAPES grant from Brazil.