Skip to main content

Interactions of Abstractions in Programming

  • Conference paper
  • First Online:
Abstraction, Reformulation, and Approximation (SARA 2000)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 1864))

Abstract

Computer programs written by humans are largely composed of instances of well-understood data and procedural abstractions. Clearly, it should be possible to generate programs automatically by reuse of abstract components. However, despite much effort, the use of abstract components in building practical software remains limited. We argue that software components constrain and parameterize each other in complex ways. Commonly used means of parameterization of components are too simple to represent the multiple views of components used by human programmers. In order for automatic generation of application software from components to be successful, constraints between abstract components must be represented, propagated, and where possible satisfied by inference.

A simple application program is analyzed in detail, and its abstract components and their interactions are identified. This analysis shows that even in a small program the abstractions are tightly interwoven in the code. We show how this code can be derived by composition of separate generic program components using view types. Next we consider how the view types can be constructed from a minimal specification provided by the user.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight 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. R. Akers, E. Kant, C. Randall, S. Steinberg, and R. Young, “SciNapse: A Problem-Solving Environment for Partial Differential Equations,” IEEE Computational Science and Engineering, vol. 4, no. 3, July–Sept. 1997, pp 32–42.

    Article  Google Scholar 

  2. D. Batory, V. Singhal, J. Thomas, and M. Sirkin, “Scalable Software Libraries,” Proc. ACM SIGSOFT’ 93: Foundations of Software Engineering, Dec. 1993.

    Google Scholar 

  3. T. Biggerstaff, “A New Control Structure for Transformation-Based Generators,” Proc. Int. Conf. on Software Reuse, Vienna, Austria, June, 2000, Springer-Verlag.

    Google Scholar 

  4. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.

    Google Scholar 

  5. M. Genesereth and S. Ketchpel, “Software Agents,” Communications of the ACM, vol. 37, no. 7 (Jul. 1994), pp. 48–53.

    Article  Google Scholar 

  6. J.A. Goguen, “Reusing and Interconnecting Software Components,” IEEE Computer, pp. 16–28, Feb. 1986.

    Google Scholar 

  7. Neil D. Jones, Carsten K. Gomard, and Peter Sestoft, Partial Evaluation and Automatic Program Generation, Prentice Hall, 1993.

    Google Scholar 

  8. Richard M. Keller, Michal Rimon, and Aseem Das, “A Knowledge-based Prototyping Environment for Construction of Scientific Modeling Software,” Automated Software Engineering, vol. 1, no. 1, March 1994, pp. 79–128.

    Article  Google Scholar 

  9. Gregor Kiczales, et al.,”Aspect-Oriented Programming,” Proc. Euro. Conf. OOP 1997, LNCS 1241, Springer Verlag, 1997.

    Google Scholar 

  10. D. E. Knuth, The Art of Computer Programming, vol. 3: Sorting and Searching, Addison-Wesley, 1973.

    Google Scholar 

  11. C.W. Krueger, “Software Reuse,” ACM Computing Surveys, vol. 24, no. 2, pp. 131–184, June 1992.

    Article  MathSciNet  Google Scholar 

  12. Michael R. Lowry, “The Abstraction/Implementation Model of Problem Reformulation,” Proc. IJCAI-87, pp. 1004–1010, 1987.

    Google Scholar 

  13. Michael Lowry, Andrew Philpot, Thomas Pressburger, and Ian Underwood, “A Formal Approach to Domain-Oriented Software Design Environments,” Proc. Ninth Knowledge-Based Software Engineering Conference (KBSE-94), pp. 48–57, 1994.

    Google Scholar 

  14. M. D. McIlroy, “Mass-produced software components,” in Software Engineering Concepts and Techniques, 1968 NATO Conf. Software Eng., ed. J. M. Buxton, P. Naur, and B. Randell, pp. 88–98, 1976.

    Google Scholar 

  15. H. Mili, F. Mili, and A. Mili, “Reusing Software: Issues and Research Directions,” IEEE Trans. Soft. Engr., vol. 21, no. 6, pp. 528–562, June 1995.

    Article  Google Scholar 

  16. G. Novak, “GLISP: A LISP-Based Programming System With Data Abstraction,” AI Magazine, vol. 4, no. 3, pp. 37–47, Fall 1983.

    MathSciNet  Google Scholar 

  17. G. Novak, “Generating Programs from Connections of Physical Models,” 10th Conf. on Artificial Intelligence for Applications, IEEE CS Press, 1994, pp. 224–230.

    Google Scholar 

  18. G. Novak, “Composing Reusable Software Components through Views”, 9th Knowledge-Based Soft. Engr. Conf., IEEE CS Press, 1994, pp. 39–47.

    Google Scholar 

  19. G. Novak, “Conversion of Units of Measurement,” IEEE Trans. Software Engineering, vol. 21, no. 8, pp. 651–661, Aug. 1995.

    Article  Google Scholar 

  20. G. Novak, “Creation of Views for Reuse of Software with Different Data Representations”, IEEE Trans. Soft. Engr., vol. 21, no. 12, pp. 993–1005, Dec. 1995.

    Article  Google Scholar 

  21. G. Novak, “Software Reuse by Specialization of Generic Procedures through Views, IEEE Trans. Soft. Engr., vol. 23, no. 7, pp. 401–417, July 1997.

    Article  Google Scholar 

  22. D.E. Perry, “Some Holes in the Emperor’s Reused Clothes,” Proc. Ninth Annual Workshop on Software Reuse, Austin, TX, Jan. 1999.

    Google Scholar 

  23. C. Rich, “A Formal Representation for Plans in the Programmer’s Apprentice,” 7th Intl. Joint Conf. Art. Int. (IJCAI-81), pp. 1044–1052, 1981.

    Google Scholar 

  24. C. Rich and R. Waters, The Programmer’s Apprentice, ACM Press, 1990.

    Google Scholar 

  25. S. Russell and P. Norvig, Artificial Intelligence: A Modern Approach, Prentice Hall, 1995.

    Google Scholar 

  26. D.R. Smith, “KIDS: A Semiautomatic Program Development System,” IEEE Trans. Software Engineering, vol. 16, no. 9, pp. 1024–1043, Sept. 1990.

    Article  Google Scholar 

  27. Y.V. Srinivas and J.L. McDonald, “The Architecture of SPECWARE™, a Formal Software Development System,” Tech. Report KES.U.96.7, Kestrel Institute, Palo Alto, CA.

    Google Scholar 

  28. M. Stefik, “Planning with Constraints (MOLGEN: Part 1),” Artificial Intelligence, vol. 16, no. 2, May 1981.

    Google Scholar 

  29. B. Stroustrup, The C++ Programming Language, Addison-Wesley, 1991.

    Google Scholar 

  30. D. Waltz, “Understanding line drawings of scenes with shadows,” in P.H. Winston, ed., The Psychology of Computer Vision, McGraw-Hill, 1975.

    Google Scholar 

  31. G. Wiederhold, P. Wegner, and S. Ceri, “Toward Megaprogramming,” Communications of the ACM, vol. 35, no. 11 (Nov. 1992), pp. 89–99.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Novak, G.S. (2000). Interactions of Abstractions in Programming. In: Choueiry, B.Y., Walsh, T. (eds) Abstraction, Reformulation, and Approximation. SARA 2000. Lecture Notes in Computer Science(), vol 1864. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44914-0_11

Download citation

  • DOI: https://doi.org/10.1007/3-540-44914-0_11

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-67839-7

  • Online ISBN: 978-3-540-44914-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics