Data abstraction and information hiding
- 1 September 2002
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 24 (5) , 491-553
- https://doi.org/10.1145/570886.570888
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.Keywords
This publication has 18 references indexed in Scilit:
- Alias burying: Unique variables without destructive readsSoftware: Practice and Experience, 2001
- Virginity: A contribution to the specification of object-oriented softwareInformation Processing Letters, 1999
- Flexible alias protectionPublished by Springer Nature ,1998
- AspectACM Transactions on Software Engineering and Methodology, 1995
- Modular verification of data abstractions with shared realizationsIEEE Transactions on Software Engineering, 1994
- A single complete rule for data refinementFormal Aspects of Computing, 1993
- The programming language oberonSoftware: Practice and Experience, 1988
- Modula: A language for modular multiprogrammingSoftware: Practice and Experience, 1977
- On the criteria to be used in decomposing systems into modulesCommunications of the ACM, 1972
- OS6--An experimental operating system for a small computer. Part 2: Input/output and filing systemThe Computer Journal, 1972