ACM Home Page
Please provide us with feedback. Feedback
What is a class invariant?
Full text PdfPdf (127 KB)
Source Workshop on Program Analysis for Software Tools and Engineering archive
Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering table of contents
Snowbird, Utah, United States
Pages: 86 - 89  
Year of Publication: 2001
ISBN:1-58113-413-4
Author
Adam Brooks Webber  Webber Labs and University of Wisconsin - Milwaukee
Sponsors
SIGSOFT: ACM Special Interest Group on Software Engineering
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 26,   Downloads (12 Months): 111,   Citation Count: 0
Additional Information:

abstract   references   index terms  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/379605.379685
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
L. Boynton and J. Payne. Java class java.util.vector, Dec. 1997. Version 1.38, Sun Microsystems Inc.
 
2
Program modularity and scaling of program analysis: position statement. Report of the Dagstuhl Seminar on Program Analysis (Dagstuhl Seminar 236), 1999.
 
3
D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Compaq SRC Resarch Report 159, 1998.
4
 
5
G. T. Leavens, A. L. Baker, and C. Ruby. Preliminary design of JML.Technical Report 98-060, Iowa State University, May 2001.
 
6
 
7
B. Meyer. The importance of the class invariant. At http://www.elj.com/eiffel/bm/invariants.
 
8
 
9
10
11
 
12
J. van den Berg, C.-B. Breunesse, B. Jacobs, and E. Poll. On the role of invariants in reasoning about object-oriented languages. To appear in: Workshop on Formal Techniques for Java Programs, ECOOP 2001, Budapest, Hungary, June 18, 2001.
13