Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Cecil: A Sequencing Constraint Language for Automatic Static Analysis Generation
IEEE Transactions on Software Engineering
Interprocedural static analysis of sequencing constraints
ACM Transactions on Software Engineering and Methodology (TOSEM)
Regular types for active objects
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
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)
Formalizing architectural connection
ICSE '94 Proceedings of the 16th international conference on Software engineering
A formal basis for architectural connection
ACM Transactions on Software Engineering and Methodology (TOSEM)
Java in a nutshell (2nd ed.): a desktop quick reference
Java in a nutshell (2nd ed.): a desktop quick reference
The Unified Modeling Language user guide
The Unified Modeling Language user guide
The Unified Modeling Language reference manual
The Unified Modeling Language reference manual
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Java Language Specification
The Java Language Specification
Specifying Distributed Software Architectures
Proceedings of the 5th European Software Engineering Conference
Types That Reflect Changes of Object Usability
JMLC '97 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
A Concurrent Object Calculus with Types that Express Sequences
Proceedings of the Workshop on Object-Oriented Technology
The specification of process synchronization by path expressions
Operating Systems, Proceedings of an International Symposium
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
Concern graphs: finding and describing concerns using structural program dependencies
Proceedings of the 24th International Conference on Software Engineering
Implementing protocols via declarative event patterns
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Lightweight object specification with typestates
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Static object trace extraction for programs with pointers
Journal of Systems and Software - Special issue: Software reverse engineering
Typestate protocol specification in JML
Proceedings of the 8th international workshop on Specification and verification of component-based systems
Hi-index | 0.00 |
We describe an extension to the Java programming language that supports static conformance checking and dynamic debugging of object “protocols,” i.e., sequencing constraints on the order in which methods may be called. Our Java protocols have a statically checkable subset embedded in richer descriptions that can be checked at run time. The statically checkable subtype conformance relation is based on Nierstrasz' proposal for regular (finite-state) process types, and is also very close to the conformance relation for architectural connectors in the Wright architectural description language by Allen and Garlan. Richer sequencing properties, which cannot be expressed by regular types alone, can be specified and checked at run time by associating predicates with object states. We describe the language extensions and their rationale, and the design of tool support for static and dynamic checking and debugging.