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)
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Aspect Composition Applying the Design by Contract Principle
GCSE '00 Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
Automated Validation of Class Invariants in C ++ Applications
Proceedings of the 17th IEEE international conference on Automated software engineering
Investigating the use of analysis contracts to improve the testability of object-oriented code
Software—Practice & Experience
jContractor: A Reflective Java Library to Support Design by Contract
jContractor: A Reflective Java Library to Support Design by Contract
Cona: aspects for contracts and contracts for aspects
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
Exploiting design patterns to automate validation of class invariants: Research Articles
Software Testing, Verification & Reliability
Design by Contract to Improve Software Vigilance
IEEE Transactions on Software Engineering
Trace-based Reflexive Testing of OO Programs with T2
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
Contracts for aspect-oriented design
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
IEEE Transactions on Software Engineering
Can aspects implement contracts?
RISE'05 Proceedings of the Second international conference on Rapid Integration of Software Engineering Techniques
Hi-index | 0.00 |
We present a technique for automatically weaving structural invariant checks into an existing collection of classes. Using variations on existing design patterns, we use a concise specification to generate from this collection a new set of classes that implement the interfaces of the originals, but with the addition of user-specified class invariant checks. Our work is notable in the scarcity of assumptions made. Unlike previous design pattern approaches to this problem, our technique requires no modification of the original source code, relies only on single inheritance, and does not require that the attributes used in the checks be publicly visible. We are able to instrument a wide variety of class hierarchies, including those with pure interfaces, abstract classes and classes with type parameters. We have implemented the construction as an Eclipse plug-in for Java development.