Eiffel: the language
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
UML components: a simple process for specifying component-based software
UML components: a simple process for specifying component-based software
Exception handling: issues and a proposed notation
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Design by contract, by example
Design by contract, by example
Building Reliable Component-Based Software Systems
Building Reliable Component-Based Software Systems
Java Virtual Machine Specification
Java Virtual Machine Specification
APSEC '97 Proceedings of the Fourth Asia-Pacific Software Engineering and International Computer Science Conference
Error Scope on a Computational Grid: Theory and Practice
HPDC '02 Proceedings of the 11th IEEE International Symposium on High Performance Distributed Computing
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
The .NET Contract Wizard: Adding Design by Contract to Languages Other than Eiffel
TOOLS '01 Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS39)
Adding Contracts to Java with Handshake
Adding Contracts to Java with Handshake
Contracts for aspect-oriented design
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
A tool architecture to verify properties of multiagent system at runtime
ProMAS'06 Proceedings of the 4th international conference on Programming multi-agent systems
Hi-index | 0.00 |
Design by Contract is a software engineering practice that allows semantic information to be added to a class or interface to precisely specify the conditions that are required for its correct operation. The basic constructs of Design by Contract are method preconditions and postconditions, and class invariants.This paper presents a detailed design and implementation overview of jContractor, a freely available tool that allows programmers to write "contracts'' as standard Java methods following an intuitive naming convention. Preconditions, postconditions, and invariants can be associated with, or inherited by, any class or interface. jContractor performs on-the-fly bytecode instrumentation to detect violation of the contract specification during a program's execution. jContractor's bytecode engineering technique allows it to specify and check contracts even when source code is not available. jContractor is a pure Java library providing a rich set of syntactic constructs for expressing contracts without extending the Java language or runtime environment. These constructs include support for predicate logic expressions, and referencing entry values of attributes and return values of methods. Fine grain control over the level of monitoring is possible at runtime. Since contract methods are allowed to use unconstrained Java expressions, in addition to runtime verification they can perform additional runtime monitoring, logging, and analysis.