I. Introduction
Today, with the rapid development of networking techniques and emerging new web technologies, the popularity of distributed applications is fast growing, both in terms of their quantity in use and in terms of the diversity of their types and the variety of their sizes. Distributed applications consist of multiple processes running concurrently and very often residing on multiple computers. Usually, multiple dependencies exist among these processes, and they coordinate and cooperate with each other via interprocess communication (IPC) to carry out the global task. It is desirable to provide an environment in which the IPC among the coordinating and cooperating processes can be explicitly controlled in the sense that the IPC messages can be intercepted, identified, delayed, reordered, redirected, simulated or recorded. IPC control is an important mechanism that enables many software engineering techniques, such as unit testing, reverse engineering, software simulation, and, especially, in conformance testing.