Present concurrent languages do not support any form of analysis of the communication structure of programs. To support high level specification and analysis of distributed systems, we propose two new constructs- {\em handshake} and {\em unit}. The handshake construct is a remote procedure call generalized for multiple parties. The unit construct restricts the possible calls to various handshake procedures, and thereby provides a synchronization mechanism. These constructs are part of a formal model called the Decomposed Petri Net (DPN), which lends itself to automatic analysis. The current system called ConC(Concurrent C) extends "C" for concurrent programming and runs on a Sun cluster under Unix 4.2 BSD.