An approach to the problem of systematic development of applications requiring access to multiple and heterogeneous hardware and software systems is presented. The approach is based on a common communication and data exchange protocol that uses local access managers to protect the autonomy of member software systems. The solution is modular and can be implemented in a heterogeneous hardware and software environment using different operating systems and different network protocols. The design of the system, its major components, and its prototype implementation are described. Particular emphasis is placed on the Distributed Operation Language (DOL), used to specify invocation, synchronization, and data exchange between various software and hardware components of a distributed system.