|
ABSTRACT
This article describes an approach for verifying programs in the presence of data abstraction and information hiding, which are key features of modern programming languages with objects and modules. This article draws on our experience building and using an automatic program checker, and focuses on the property of modular soundness: that is, the property that the separate verifications of the individual modules of a program suffice to ensure the correctness of the composite program. We found this desirable property surprisingly difficult to achieve. A key feature of our methodology for modular soundness is a new specification construct: the abstraction dependency, which reveals which concrete variables appear in the representation of a given abstract variable, without revealing the abstraction function itself. This article discusses in detail two varieties of abstraction dependencies: static and dynamic. The article also presents a new technical definition of modular soundness as a monotonicity property of verifiability with respect to scope and uses this technical definition to formally prove the modular soundness of a programming discipline for static dependencies.
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
|
Alfred V. Aho , Ravi Sethi , Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1986
|
| |
2
|
Almeida, P. S. 1997. Balloon types: Controlling sharing of state in data types. In ECOOP'97---Object-Oriented Programming: 11th European Conference, M. Akşit and S. Matsuoka, Eds. Lecture Notes in Computer Science, vol. 1241. Springer-Verlag, New York, pp. 32--59.
|
| |
3
|
American National Standards Institute, Inc. 1983. ANSI/MIL-STD-1815A-1983, The Programming Language Ada Reference Manual. Lecture Notes in Computer Science, vol. 155. Springer-Verlag, Berlin, Germany.
|
| |
4
|
Back, R. J. R. 1980. Correctness Preserving Program Refinements: Proof Theory and Applications. Mathematical Centre Tracts, vol. 131. Mathematical Centre, Amsterdam.
|
| |
5
|
|
| |
6
|
Detlefs, D. L., Leino, K. R. M., and Nelson, G. 1998a. Wrestling with rep exposure. Research Report 156, Digital Equipment Corporation Systems Research Center. July.
|
| |
7
|
Detlefs, D. L., Leino, K. R. M., Nelson, G., and Saxe, J. B. 1998b. Extended static checking. Research Report 159, Compaq Systems Research Center. Dec.
|
| |
8
|
|
| |
9
|
|
| |
10
|
Extended Static Checking for Java. Extended Static Checking for Java home page. On the web at http://research.compaq.com/SRC/esc/.
|
| |
11
|
Extended Static Checking for Modula-3. Extended Static Checking for Modula-3 home page. On the web at http://research.compaq.com/SRC/esc/EscModula3.html.
|
| |
12
|
Gardiner, P. H. B. and Morgan, C. 1993. A single complete rule for data refinement. Form. Asp. Comput. 5, 4, 367--382.
|
| |
13
|
|
 |
14
|
|
| |
15
|
Gries, D. and Volpano, D. 1990. The transform---A new language construct. Struct. Prog. 11, 1, 1--10.
|
| |
16
|
Hoare, C. A. R. 1972. Proof of correctness of data representations. Acta Inf. 1, 4, 271--81.
|
| |
17
|
Hoare, C. A. R. and Wirth, N. 1973. An axiomatic definition of the programming language PASCAL. Acta Inf. 2, 4, 335--355.
|
 |
18
|
John Hogg, Islands: aliasing protection in object-oriented languages, Conference proceedings on Object-oriented programming systems, languages, and applications, p.271-285, October 06-11, 1991, Phoenix, Arizona, United States
|
 |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
Joshi, R. 1997. Extended static checking of programs with cyclic dependencies. In 1997 SRC Summer Intern Projects, J. Mason, Ed. Technical Note 1997-028. Digital Equipment Corporation Systems Research Center.
|
 |
23
|
|
| |
24
|
Leavens, G. T. 1996. An overview of Larch/C++: Behavioral specifications for C++ modules. In Specification of Behavioral Semantics in Object-Oriented Information Modeling, H. Kilov and W. Harvey, Eds. Kluwer Academic Publishers, Chapter 8, 121--142.
|
| |
25
|
Leavens, G. T., Baker, A. L., and Ruby, C. 1999. Preliminary design of JML: A behavioral interface specification language for Java. Tech. Rep. 98-06f. Department of Computer Science. Iowa State University, July. Available at ftp://ftp.cs.iastate.edu/pub/techreports/TR98-06/.
|
 |
26
|
|
| |
27
|
Leino, K. R. M. 1997. Ecstatic: An object-oriented programming language with an axiomatic semantics. In Proceedings of the Fourth International Workshop on Foundations of Object-Oriented Languages. Proceedings available from http://www.cs.williams.edu/∼kim/FOOL/.
|
 |
28
|
K. Rustan M. Leino, Data groups: specifying the modification of extended state, Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.144-153, October 18-22, 1998, Vancouver, British Columbia, Canada
|
| |
29
|
|
| |
30
|
Leino, K. R. M. and Nelson, G. 2000. Data abstraction and information hiding. Research Rep. 160, Compaq Systems Research Center. Nov.
|
| |
31
|
Leino, K. R. M., Nelson, G., and Saxe, J. B. 2000. ESC/Java user's manual. Tech. Note 2000-002, Compaq Systems Research Center. Oct.
|
| |
32
|
Leino, K. R. M. and Stata, R. 1997. Checking object invariants. Tech. Note 1997-007, Digital Equipment Corporation Systems Research Center. Jan.
|
| |
33
|
Leino, K. R. M. and Stata, R. 1999a. Smothering rep exposure with reads clauses. Internal manuscript KRML 90, Compaq Systems Research Center.
|
| |
34
|
|
| |
35
|
|
| |
36
|
|
| |
37
|
Mitchell, J. G., Maybury, W., and Sweet, R. 1979. The Mesa language manual, version 5.0. Tech. Rep. CSL-79-3, Xerox PARC. Apr.
|
| |
38
|
|
| |
39
|
Mössenböck, H. and Wirth, N. 1991. The programming language Oberon-2. Struct. Prog. 12, 4, 179--195.
|
| |
40
|
Müller, P. 2001. Modular specification and verification of object-oriented programs. Ph.D. dissertation, FernUniversität Hagen. Available from http://www.informatik.fernuni-hagen.de/pi5/publications.html.
|
| |
41
|
|
| |
42
|
Müller, P. and Poetzsch-Heffter, A. 2001. Universes: A type system for alias and dependency control. Tech. Rep. 279, FernUniversität Hagen. Available from http://www.informatik.fernuni-hagen.de/pi5/publications.html.
|
 |
43
|
|
| |
44
|
|
| |
45
|
|
 |
46
|
|
| |
47
|
Stoy, J. E. and Strachey, C. 1972. OS6---An experimental operating system for a small computer. Part II: Input/output and filing system. Comput. J. 15, 3, 195--203.
|
| |
48
|
Utting, M. 1995. Reasoning about aliasing. In Proceedings of the 4th Australasian Refinement Workshop (ARW-95). School of Computer Science and Engineering, The University of New South Wales, 195--211.
|
| |
49
|
Wirth, N. 1977. Modula: A language for modular multiprogramming. Softw. Pract. Exper. 7, 1 (Jan.--Mar.), 3--35.
|
| |
50
|
|
| |
51
|
|
|