Described are embodiments for developing a message-passing application
program. The program is constructed using stages having a plurality of
asynchronous functions, or operations. The operations communicate with
other operations of other message-passing programs in a distributed
computing environment. The operations also communicate with other
operations on other stages of the message-passing application. In order
to reduce deadlock errors, a behavioral type signature is appended to the
declaration of each operation of the message-passing application program.
The behavioral type signature specifies behavioral properties for each
operation, such as when an operation should send a message to another
operation. A type checker utilizes typing rules and the behavioral type
signature to extract an implementation model of each function. The type
checker then compares the implementation model to the behavioral type
signature to determine whether the asynchronous function conforms to the
behavioral type signature.