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.
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
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.
D. Batory, V. Singhal, J. Thomas, and M. Sirkin, “Scalable Software Libraries,” Proc. ACM SIGSOFT’ 93: Foundations of Software Engineering, Dec. 1993.
T. Biggerstaff, “A New Control Structure for Transformation-Based Generators,” Proc. Int. Conf. on Software Reuse, Vienna, Austria, June, 2000, Springer-Verlag.
E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
M. Genesereth and S. Ketchpel, “Software Agents,” Communications of the ACM, vol. 37, no. 7 (Jul. 1994), pp. 48–53.
J.A. Goguen, “Reusing and Interconnecting Software Components,” IEEE Computer, pp. 16–28, Feb. 1986.
Neil D. Jones, Carsten K. Gomard, and Peter Sestoft, Partial Evaluation and Automatic Program Generation, Prentice Hall, 1993.
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.
Gregor Kiczales, et al.,”Aspect-Oriented Programming,” Proc. Euro. Conf. OOP 1997, LNCS 1241, Springer Verlag, 1997.
D. E. Knuth, The Art of Computer Programming, vol. 3: Sorting and Searching, Addison-Wesley, 1973.
C.W. Krueger, “Software Reuse,” ACM Computing Surveys, vol. 24, no. 2, pp. 131–184, June 1992.
Michael R. Lowry, “The Abstraction/Implementation Model of Problem Reformulation,” Proc. IJCAI-87, pp. 1004–1010, 1987.
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.
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.
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.
G. Novak, “GLISP: A LISP-Based Programming System With Data Abstraction,” AI Magazine, vol. 4, no. 3, pp. 37–47, Fall 1983.
G. Novak, “Generating Programs from Connections of Physical Models,” 10th Conf. on Artificial Intelligence for Applications, IEEE CS Press, 1994, pp. 224–230.
G. Novak, “Composing Reusable Software Components through Views”, 9th Knowledge-Based Soft. Engr. Conf., IEEE CS Press, 1994, pp. 39–47.
G. Novak, “Conversion of Units of Measurement,” IEEE Trans. Software Engineering, vol. 21, no. 8, pp. 651–661, Aug. 1995.
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.
G. Novak, “Software Reuse by Specialization of Generic Procedures through Views, IEEE Trans. Soft. Engr., vol. 23, no. 7, pp. 401–417, July 1997.
D.E. Perry, “Some Holes in the Emperor’s Reused Clothes,” Proc. Ninth Annual Workshop on Software Reuse, Austin, TX, Jan. 1999.
C. Rich, “A Formal Representation for Plans in the Programmer’s Apprentice,” 7th Intl. Joint Conf. Art. Int. (IJCAI-81), pp. 1044–1052, 1981.
C. Rich and R. Waters, The Programmer’s Apprentice, ACM Press, 1990.
S. Russell and P. Norvig, Artificial Intelligence: A Modern Approach, Prentice Hall, 1995.
D.R. Smith, “KIDS: A Semiautomatic Program Development System,” IEEE Trans. Software Engineering, vol. 16, no. 9, pp. 1024–1043, Sept. 1990.
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.
M. Stefik, “Planning with Constraints (MOLGEN: Part 1),” Artificial Intelligence, vol. 16, no. 2, May 1981.
B. Stroustrup, The C++ Programming Language, Addison-Wesley, 1991.
D. Waltz, “Understanding line drawings of scenes with shadows,” in P.H. Winston, ed., The Psychology of Computer Vision, McGraw-Hill, 1975.
G. Wiederhold, P. Wegner, and S. Ceri, “Toward Megaprogramming,” Communications of the ACM, vol. 35, no. 11 (Nov. 1992), pp. 89–99.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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