Institute for Software Research
School of Computer Science, Carnegie Mellon University
A Language-based Approach to Specification and
Enforcement of Architectural Protocols
Kevin Bierhoff, Jonathan Aldrich. Sangjin Han*
Reissued December 2007
This technical report was drafted under the the number
CMU-CS-06-119 and has been available on the first author's website
since April 2006. It was officially published, without content changes,
in December 2007 as CMU-ISRI-07-121.
This report is superceded by Institute for Software Research
Technical Report CMU-ISR-10-110
Keywords: Protocol, typestate, software architecture, ArchJava
Software architecture research has proposed using protocols for
specifying the interactions between components through ports.
Enforcing these protocols in an implementation is difficult. This
paper proposes an approach to statically reason about protocol
conformance of an implementation.
It leverages the architectural guarantees of the ArchJava programming
language. The approach allows modular reasoning about implementations
with callbacks, recursive calls, and multiple instances
of component types. It uses a dataflow analysis to check method
implementations and uses model checking techniques to reason modularly
about component composition. The approach is limited to static
architectures but can handle multiple instances for component types
and arbitrary nesting of components.
*Formerly with Carnegie Mellon University.