Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Statecharts: A visual formalism for complex systems
Science of Computer Programming
Eiffel: the language
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Object-Z: a specification language advocated for the description of standards
Computer Standards & Interfaces - Special issue on formal description techniques
Intersection types and computational effects
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Compiler and tool support for debugging object protocols
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Behavioral contracts and behavioral subtyping
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
Contract Soundness for object-oriented languages
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Types and programming languages
Types and programming languages
A system and language for building system-specific, static analyses
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
An effective theory of type refinements
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Iterator specification with typestates
Proceedings of the 2006 conference on Specification and verification of component-based systems
Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Typestate-like analysis of multiple interacting objects
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Pushing relevant artifact annotations in collaborative software development
Proceedings of the 2008 ACM conference on Computer supported cooperative work
Typestate protocol specification in JML
Proceedings of the 8th international workshop on Specification and verification of component-based systems
Practical API Protocol Checking with Access Permissions
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Modular session types for distributed object-oriented programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Model checking a model checker: a code contract combined approach
ICFEM'10 Proceedings of the 12th international conference on Formal engineering methods and software engineering
JPure:: a modular purity system for java
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
An empirical study of object protocols in the wild
Proceedings of the 25th European conference on Object-oriented programming
First-class state change in plaid
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Changing state in the plaid language
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Compositional Shape Analysis by Means of Bi-Abduction
Journal of the ACM (JACM)
Runtime verification based on register automata
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.03 |
Previous work has proven typestates to be useful for modeling protocols in object-oriented languages. We build on this work by addressing substitutability of subtypes as well as improving precision and conciseness of specifications. We propose a specification technique for objects based on abstract states that incorporates state refinement, method refinement, and orthogonal state dimensions. Union and intersection types form the underlying semantics of method specifications. The approach guarantees substitutability and behavioral subtyping. We designed a dynamic analysis to check existing object-oriented software for protocol conformance and validated our approach by specifying two standard Java libraries. We provide preliminary evidence for the usefulness of our approach.