An introduction to Z and formal specifications
Software Engineering Journal - Special Section on Z
Lessons from the design of the Eiffel libraries
Communications of the ACM
Eiffel: the language
The Z notation: a reference manual
The Z notation: a reference manual
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Reusable software: the Base object-oriented component libraries
Reusable software: the Base object-oriented component libraries
The Larch/Smalltalk interface specification language
ACM Transactions on Software Engineering and Methodology (TOSEM)
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Sequential abstract-state machines capture sequential algorithms
ACM Transactions on Computational Logic (TOCL)
Design by contract, by example
Design by contract, by example
Background, Reserve, and Gandy Machines
Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
A framework for proving contract-equipped classes
ASM'03 Proceedings of the abstract state machines 10th international conference on Advances in theory and practice
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Attached types and their application to three open problems of object-oriented programming
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
A verification methodology for model fields
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
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
Eiffel as a Framework for Verification
Verified Software: Theories, Tools, Experiments
Verifying executable object-oriented specifications with separation logic
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Specifying reusable components
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Proving consistency and completeness of model classes using theory interpretation
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
Good components need precise contracts. In the practice of Design by ContractTM, applications and libraries typically express, in their postconditions and class invariants, only a subset of the relevant properties. We present: An approach to making these contract elements complete without extending the assertion language, by relying on “model classes” directly deduced from mathematical concepts. An actual “Mathematical Model Library” (MML) built for that purpose A method for using MML to express complete contracts through abstraction functions, and an associated theory of specification soundness. As a direct application of these ideas, a new version of a widely used data structure and algorithms library equipped with complete contracts through MML. All the software is available for download. The approach retains the pragmatism of the Design by Contract method, suitable for ordinary applications and understandable to ordinary programmers, while potentially achieving the benefits of much heavier formal specifications. The article concludes with a discussion of applications to testing and program proving, and of remaining issues.