Eiffel: the language
A research typology for object-oriented analysis and design
Communications of the ACM - Special issue on analysis and modeling in software development
Applying object-oriented analysis and design
Communications of the ACM - Special issue on analysis and modeling in software development
Program analysis using binary relations
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Reasoning about Java classes: preliminary report
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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
Hi-index | 0.00 |
This paper is a progress report on our research into the problem of automatically identifying and using class invariants in object-oriented programs. We introduce an example of a class invariant in Java, and review applications for class invariants in software engineering tools and in compiler optimization. We then focus on an elementary problem of definition: what is a class invariant? This question gives an interesting perspective on programming language design. We conclude that there are many reasonable categories of class invariants, and that the problem of finding good definitions cannot be solved by a thought experiment. The only way to choose good categories is to experiment with the analysis of real programs, to see which categories of class invariant are actually useful. Our current research focuses on these experiments.