A system and method for modeling a message-passing program module using
type annotations is disclosed. The message-passing program module is
constructed with operations that communicate with operations of other
message-passing program modules in an asynchronous computing environment.
Type annotations are communication protocols that represent processes of
input and/or output actions that the program module developer expects
each operation to perform or take on a selected set of communication
channels. During development of the program module, the type annotations
are declared at each operation of the program module. Soundness of the
type annotations and whether implementation of the program module
conforms to the type annotations is checked using a type system. If the
program module is well-typed and well-implemented, the type system
abstracts a behavioral module of the message-passing program module that
reflects the relevant processes expressed by the type annotations. A
model checker determines whether the behavioral module is in fact a valid
abstraction of the implementation, and if so, evaluates one or more
properties of the behavioral module to render a conclusion about these
properties for the program module.