The discrete time TOOLBUS - A software coordination architecture. Building large, heterogeneous, distributed software systems poses serious problems for the software engineer; achieving interoperability of software systems is still a major challenge. We describe an experiment in designing a generic software architecture for solving these problems. To get control over the possible interactions between software components (“tools”) we forbid direct inter-tool communication. Instead, all interactions are controlled by a “script” that formalizes all the desired interactions among tools. This leads to a component interconnection architecture resembling a hardware communication bus, and therefore we will call it a “ToolBus”. We describe the coordination of tools in process-oriented “T scripts” featuring, amongst others, (1) sequential composition, choice and iteration of processes; (2) handshaking (synchronous) communication of messages; (3) asynchronous communication of notes to an arbitrary number of processes; (4) note subscription; (5) dynamic process creation. Most notably lacking are built-in datatypes: operations on data can only be performed by tools, giving opportunities for efficient implementation. In three large case studies, the ToolBus architecture has been used to build editor-interfaces with user-defined extensions, to study feature interaction in intelligent networks, and to build a simulator for traffic light control. We give an overview of these case studies and briefly sketch the evolution of the ToolBus design that incorporates the lessons we have learned from them.