Master of Science in Computer Science (MSCS)


Computer Science

Document Type



Clearly conveying and enforcing the proper ordering of method calls on objects has become a common problem among developers and interface designers. Without the ability of the compilation environment to enforce these constraints, programmers must rely on clear documentation being provided and diligence in programming to ensure that a proper sequence of operations is performed. Commonly, though, type-checking becomes the only tool to help support the correctness of operation sequences as API documentation rarely describes inter-object communications. Thus, the likeliness of producing erroneous and buggy software increases. Object protocols provide a simple and straight-forward approach to solving this problem. They do so by providing simple grammatical constructs for expressing valid call sequences on objects. These constructs can be parsed by a compiler and then used for conformance analysis on subclasses and objects that implement interfaces. Once parsing is complete, the compiler will implement code in the target binaries for run-time enforcement of sequencing constraints. This thesis builds upon the foundation provided by Butkevich et al. to provide the design of a comprehensive tool for utilizing object protocols within the Java compilation and runtime environments. In addition to the existing work, we provide language constructs that allow the enforcement of object protocols on classes and the designation of objects and interfaces to be traced programmatically. We will consider the problems that are introduced when protocols are enforced upon classes and discuss the strategy for resolving these issues. We present the results of testing the object tracing framework to determine the impact of protocols on the performance of software. Baseline timings are drawn on the operations of data types and then protocols are manually added to the code in the same manner that would be done by the compiler in a fully working implementation; including the implementation of the tracing framework. We show that the overhead introduced is minimal, making the run-time monitoring of protocols practical. Along with support for basic sequencing constraints, we also show how other constraints, such as timing constraints, can be added to the framework with minimal adjustments. Such applications of constraints can help debug different environments, such as embedded, real-time, and near real-time environments.



Document Availability at the Time of Submission

Release the entire work immediately for access worldwide.

Committee Chair

Baumgartner, Gerald