Techniques for Embedding Executable Specifications in Software Component Interfaces
ICCBSS '03 Proceedings of the Second International Conference on COTS-Based Software Systems
Contracts: From Analysis to C++ Implementation
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
jContractor: Introducing Design-by-Contract to Java Using Reflective Bytecode Instrumentation
Formal Methods in System Design
Relationally-parametric polymorphic contracts
Proceedings of the 2007 symposium on Dynamic languages
Enterprise systems modeling: the ERP5 development process
Proceedings of the 2008 ACM symposium on Applied computing
Lazy Contract Checking for Immutable Data Structures
Implementation and Application of Functional Languages
From Contracts Towards Dependent Types: Proofs by Partial Evaluation
Implementation and Application of Functional Languages
Proceedings of the 2010 ACM Symposium on Applied Computing
Contracts for first-class classes
Proceedings of the 6th symposium on Dynamic languages
Contracts as pairs of projections
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Contracts for First-Class Classes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
The idea of design by contract (DBC), realized in the statically typed object-oriented programming language Eiffel, can be viewed as a systematic approach to specifying and implementing object-oriented software systems. We believe that a statically typed programming language is not suitable in the analysis and design phase of a proto-typing-oriented software life cycle. For this purpose, dynamically typed interpreted programming languages are better suited. Unfortunately, dynamically typed programming languages usually do not support the concept of DBC. Therefore we integrated DBC into the programming language Python by using a meta-programming approach, i.e., without changing the language or the run-time system. We adopted the DBC concept by adding mechanisms for dynamic type checking for method parameters and instance variables. The proposed combination of a more formal approach with a slim programming language provides a good basis for elicitation and documentation tasks in the analysis and design phase, especially in cases of a prototyping-oriented software development approach. Although the approach presented provides basic tool support for the analysis and design phase, further tool support, especially for browsing assertions, is desirable.