An Approach to Specifying and Synthesizing Communicating Processes