Skip to main content

Abstraction dependencies

  • Chapter
Programming Methodology

Part of the book series: Monographs in Computer Science ((MCS))

  • 243 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 149.00
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. R. J. R. Back. Correctness Preserving Program Refinements: Proof Theory and Applications, volume 131 of Mathematical Centre Tracts. Mathematical Centre, Amsterdam, 1980.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.

    Google Scholar 

  7. 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.

    Article  Google Scholar 

  8. Extended Static Checking home page, Compaq Systems Research Center. On the web at research.compaq.com/SRC/esc/.

    Google Scholar 

  9. P. H. B. Gardiner and Carroll Morgan. A single complete rule for data refinement. Formal Aspects of Computing, 5 (4): 367–382, 1993.

    Article  MATH  Google Scholar 

  10. James Gosling, Bill Joy, and Guy Steele. The JavaTM Language Specification. Addison-Wesley, 1996.

    Google Scholar 

  11. 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.

    Chapter  Google Scholar 

  12. David Gries and Dennis Volpano. The transform — a new language construct. Structured Programming, 11 (1): 1–10, 1990.

    Google Scholar 

  13. C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1(41: 271–81, 1972.

    Google Scholar 

  14. Daniel Jackson. Aspect: Detecting bugs with abstract dependences. ACM Transactions on Software Engineering and Methodology, 4 (2): 109–145, April 1995.

    Article  Google Scholar 

  15. Cliff B. Jones. Systematic Software Development using VDM. International Series in Computer Science. Prentice-Hall, 1986.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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/.

    Google Scholar 

  20. K. Rustan M. Leino. Toward Reliable Modular Programs. PhD thesis, California Institute of Technology, 1995. Available as Technical Report Caltech-CS-TR-95–03.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. K. Rustan M. Leino. Recursive object types in a logic of object-oriented programs. Nordic Journal of Computing, 5 (4): 330–360, Winter 1998.

    MathSciNet  MATH  Google Scholar 

  23. K. Rustan M. Leino and Greg Nelson. Data abstraction and information hiding. Research Report 160, Compaq Systems Research Center, November 2000.

    Google Scholar 

  24. 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/.

    Google Scholar 

  25. Barbara Liskov and John Guttag. Abstraction and Specification in Program Development. MIT Electrical Engineering and Computer Science Series. MIT Press, 1986.

    MATH  Google Scholar 

  26. 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.

    Google Scholar 

  27. 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.

    Google Scholar 

  28. Joseph M. Morris. Laws of data refinement. Acta Informatica, 26 (4): 287–308, February 1989.

    MathSciNet  MATH  Google Scholar 

  29. H. Mössenböck and N. Wirth. The programming language Oberon-2. Structured Programming, 12 (4): 179–195, 1991.

    Google Scholar 

  30. 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.

    Google Scholar 

  31. Greg Nelson, editor. Systems Programming with Modula-3. Series in Innovative Technology. Prentice-Hall, 1991.

    Google Scholar 

  32. 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/.

    Google Scholar 

  33. 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.

    Article  Google Scholar 

  34. N. Wirth. The programming language Oberon. Software—Practice and Experience, 18 (7): 671–690, July 1988.

    Article  MATH  Google Scholar 

  35. N. Wirth. Modula: a language for modular multiprogramming. Software—Practice and Experience, 7 (1): 3–35, January–March 1977.

    MathSciNet  MATH  Google Scholar 

  36. Niklaus Wirth. Programming in Modula-2. Springer-Verlag, 1982.

    Google Scholar 

Download references

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics