Institute for Software Research
School of Computer Science, Carnegie Mellon University
A Language-based Approach to Specification and
Enforcement of Architectural Protocols
Kevin Bierhoff*, Matthew Kehrt, Sangjin Han**
Darpan Saini, Majid Al-Meshari**, Jonathan Aldrich
This reports supercedes Institute for Software Research
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 a summary-based interprocedural
analysis 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. We tested the
implementation on a case study, and the results suggest that the approach
can be scaled to large software applications.
*Two Sigma Investments LLC, New York, NY
**Formerly at Carnegie Mellon University