The requirements of testing a class of reusable software modules
The requirements of testing a class of reusable software modules
Eiffel: the language
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Part I: the RESOLVE framework and discipline: a research synopsis
ACM SIGSOFT Software Engineering Notes
Component-based software using RESOLVE
ACM SIGSOFT Software Engineering Notes
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Data groups: specifying the modification of extended state
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Design by contract, by example
Design by contract, by example
Programming with Specifications: An Introduction to Anna, a Language for Specifying ADA Programs
Programming with Specifications: An Introduction to Anna, a Language for Specifying ADA Programs
Data abstraction and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer
On the Frame Problem in Procedure Specifications
IEEE Transactions on Software Engineering
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
A Framework for Detecting Interface Violations in Component-Based Software
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Runtime verification of .NET contracts
Journal of Systems and Software - Special issue on: Component-based software engineering
A contextual interpretation of undefinedness for runtime assertion checking
Proceedings of the sixth international symposium on Automated analysis-driven debugging
A specification-based approach to reasoning about pointers
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
A case study of specification and verification using JML in an avionics application
JTRES '06 Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems
Simplifying reasoning about objects with Tako
Proceedings of the 2006 conference on Specification and verification of component-based systems
Information Hiding and Visibility in Interface Specifications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Faithful mapping of model classes to mathematical structures
Proceedings of the 2007 conference on Specification and verification of component-based systems: 6th Joint Meeting of the European Conference on Software Engineering and the ACM SIGSOFT Symposium on the Foundations of Software Engineering
Monitoring conversational web services
2nd international workshop on Service oriented software engineering: in conjunction with the 6th ESEC/FSE joint meeting
The Spec# Programming System: Challenges and Directions
Verified Software: Theories, Tools, Experiments
Proving Consistency of Pure Methods and Model Fields
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
Specification and verification of web services transactions
Proceedings of the Fourth SIGMOD PhD Workshop on Innovative Database Research
Automatic inference of abstract type behavior
Proceedings of the IEEE/ACM international conference on Automated software engineering
Verifying executable object-oriented specifications with separation logic
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Dynamic frames in java dynamic logic
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
A refinement methodology for object-oriented programs
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
Proceedings of the 33rd International Conference on Software Engineering
Resource allocation contracts for open analytic runtime models
EMSOFT '11 Proceedings of the ninth ACM international conference on Embedded software
Automatic inference of model fields and their representation
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
Beyond assertions: advanced specification and verification with JML and ESC/Java2
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
JML’s rich, inherited specifications for behavioral subtypes
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Proving consistency and completeness of model classes using theory interpretation
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
A verification methodology for model fields
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Towards modular algebraic specifications for pointer programs: a case study
Rewriting Computation and Proof
Modular verification of OO programs with interfaces
ICFEM'12 Proceedings of the 14th international conference on Formal Engineering Methods: formal methods and software engineering
Past expression: encapsulating pre-states at post-conditions by means of AOP
Proceedings of the 12th annual international conference on Aspect-oriented software development
Abstract effects and proof-relevant logical relations
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
In design by contract (DBC), assertions are typically written using program variables and query methods. The lack of separation between program code and assertions is confusing, because readers do not know what code is intended for use in the program and what code is only intended for specification purposes. This lack of separation also creates a potential runtime performance penalty, even when runtime assertion checks are disabled, due to both the increased memory footprint of the program and the execution of code maintaining that part of the program's state intended for use in specifications. To solve these problems, we present a new way of writing and checking DBC assertions without directly referring to concrete program states, using ‘model’, i.e. specification-only, variables and methods. The use of model variables and methods does not incur the problems mentioned above, but it also allow one to write more easily assertions that are abstract, concise, and independent of representation details, and hence more readable and maintainable. We implemented these features in the runtime assertion checker for the Java Modeling Language (JML), but the approach could also be implemented in other DBC tools. Copyright © 2005 John Wiley & Sons, Ltd.