Abstract
Modern computer programs use patterns of data abstraction that are richer than those considered previously in the literature for specifying and reasoning about programs. This paper presents abstraction dependencies as a key construct in specifying modular programs. The paper motivates abstraction dependencies through an extended example and outlines how they solve the immediate problems of previous techniques.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.
American National Standards Institute, Inc. The Programming Language Ada Reference Manual,volume 155 of Lecture Notes in Computer Science. Springer-Verlag, Berlin, 1983. ANSUMIL-STD-1815A-1983.
R. J. R. Back. Correctness Preserving Program Refinements: Proof Theory and Applications, volume 131 of Mathematical Centre Tracts. Mathematical Centre, Amsterdam, 1980.
David L. Detlefs, K. Rustan M. Leino, and Greg Nelson. Wrestling with rep exposure. Research Report 156, Digital Equipment Corporation Systems Research Center, July 1998.
David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe. Extended static checking. Research Report 159, Compaq Systems Research Center, December 1998.
Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.
George W. Ernst, Raymond J. Hookway, and William F. Ogden. Modular verification of data abstractions with shared realizations. IEEE Transactions on Software Engineering, 20 (4): 288–307, April 1994.
Extended Static Checking home page, Compaq Systems Research Center. On the web at research.compaq.com/SRC/esc/.
P. H. B. Gardiner and Carroll Morgan. A single complete rule for data refinement. Formal Aspects of Computing, 5 (4): 367–382, 1993.
James Gosling, Bill Joy, and Guy Steele. The JavaTM Language Specification. Addison-Wesley, 1996.
David Gries and Jan Prins. A new notion of encapsulation. In Proceedings of the ACM SIGPLAN 85 Symposium on Language Issues in Programming Environments, volume 20, number 7 in SIGPLAN Notices, pages 131–139. ACM, July 1985.
David Gries and Dennis Volpano. The transform — a new language construct. Structured Programming, 11 (1): 1–10, 1990.
C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1(41: 271–81, 1972.
Daniel Jackson. Aspect: Detecting bugs with abstract dependences. ACM Transactions on Software Engineering and Methodology, 4 (2): 109–145, April 1995.
Cliff B. Jones. Systematic Software Development using VDM. International Series in Computer Science. Prentice-Hall, 1986.
H. B. M. Jonkers. Upgrading the pre-and postcondition technique. In S. Prehn and W. J. Toetenel, editors, VDM ‘81 Formal Software Development Methods: 4th International Symposium of VDM Europe. Volume 1: Conference Contributions, volume 551 of Lecture Notes in Computer Science, pages 428–456. Springer-Verlag, October 1991.
Leslie Lamport and Fred B. Schneider. Constraints: A uniform approach to aliasing and typing. In Conference Record of the Twelfth Annual ACM Symposium on Principles of Programming Languages, pages 205–216, January 1985.
Gary T. Leavens. An overview of Larch/C++: Behavioral specifications for C++ modules. In Haim Kilov and William Harvey, editors, Specification of Behavioral Semantics in Object-Oriented Information Modeling, pages 121–142. Kluwer Academic Publishers, 1996.
Gary T. Leavens, Albert L. Baker, and Clyde Ruby. Preliminary design of JML: A behavioral interface specification language for Java. Technical Report 98–06f, Iowa State University, Department of Computer Science, July 1999. Available at ftp://ftp.cs.iastate.edu/pub/techreports/TR98–06/.
K. Rustan M. Leino. Toward Reliable Modular Programs. PhD thesis, California Institute of Technology, 1995. Available as Technical Report Caltech-CS-TR-95–03.
K. Rustan M. Leino. Data groups: Specifying the modification of extended state. In Proceedings of the 1998 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ‘88), volume 33, number 10 in SIGPLAN Notices, pages 144–153. ACM Press, October 1998.
K. Rustan M. Leino. Recursive object types in a logic of object-oriented programs. Nordic Journal of Computing, 5 (4): 330–360, Winter 1998.
K. Rustan M. Leino and Greg Nelson. Data abstraction and information hiding. Research Report 160, Compaq Systems Research Center, November 2000.
K. Rustan M. Leino and Raymie Stata. Checking object invariants. Technical Note 1997–007, Digital Equipment Corporation Systems Research Center, Palo Alto, CA, January 1997. Available at research. compaq. com/SRC/publications/.
Barbara Liskov and John Guttag. Abstraction and Specification in Program Development. MIT Electrical Engineering and Computer Science Series. MIT Press, 1986.
Robin Milner. An algebraic definition of simulation between programs. Technical Report Stanford Artificial Intelligence Project Memo AIM-142, Computer Science Department Report No. CS-205, Stanford University, February 1971.
James G. Mitchell, William Maybury, and Richard Sweet. The Mesa language manual, version 5.0. Technical Report CSL-79–3, Xerox PARC, Palo Alto, CA, April 1979.
Joseph M. Morris. Laws of data refinement. Acta Informatica, 26 (4): 287–308, February 1989.
H. Mössenböck and N. Wirth. The programming language Oberon-2. Structured Programming, 12 (4): 179–195, 1991.
Peter Müller and Arnd Poetzsch-Heffter. Modular specification and verification techniques for object-oriented software components. In Gary T. Leavens and Murali Sitaraman, editors, Foundations of Component-Based Systems, pages 137–159. Cambridge University Press, 2000.
Greg Nelson, editor. Systems Programming with Modula-3. Series in Innovative Technology. Prentice-Hall, 1991.
D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM,15(12):1053–1058, December 1972. Reprinted as www.acm.org/classics/may96/.
J. E. Stoy and C. Strachey. 0S6—an experimental operating system for a small computer. Part II: Input/output and filing system. The Computer Journal, 15 (3): 195–203, 1972.
N. Wirth. The programming language Oberon. Software—Practice and Experience, 18 (7): 671–690, July 1988.
N. Wirth. Modula: a language for modular multiprogramming. Software—Practice and Experience, 7 (1): 3–35, January–March 1977.
Niklaus Wirth. Programming in Modula-2. Springer-Verlag, 1982.
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer Science+Business Media New York
About this chapter
Cite this chapter
Rustan, K., Leino, M., Nelson, G. (2003). Abstraction dependencies. In: McIver, A., Morgan, C. (eds) Programming Methodology. Monographs in Computer Science. Springer, New York, NY. https://doi.org/10.1007/978-0-387-21798-7_13
Download citation
DOI: https://doi.org/10.1007/978-0-387-21798-7_13
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-2964-8
Online ISBN: 978-0-387-21798-7
eBook Packages: Springer Book Archive