Abstract
This paper shows that class inheritance, viewed as a mechanism for composing self-referential namespaces, is a broadly applicable concept. We show that several kinds of software artifacts can be modeled as self-referential namespaces, and software tools based on a model of composition of namespaces can effectively manage these artifacts. We describe four such tools: an interpreter for compositionally modular Scheme, a compositional linker for object files, a compositional interface definition language, and a compositional document processing tool. We show that these tools benefit significantly from incorporating inheritance-based reuse. Furthermore, the implementation of these tools share much in common since they are based on the same underlying model. We describe a reusable OO framework for efficiently constructing such tools. Three of the above tools were built by directly reusing the application framework, and the fourth evolved in parallel with it. We provide reuse statistics and experiences with the development of our framework and its completions.
This research was sponsored by the Defense Advanced Research Projects Agency under contract number DABT63-94-C-0058, and by the Office of Naval Research under grant number N00014-95-1-0737.
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
Roberto M. Amadio and Luca Cardelli. Subtyping recursive types. ACM Transactions on Programming Languages and Systems, 15(4), September 1993.
Joshua Auerbach and James Russell. The Concert signature representation: IDL as intermediate language. In Jeanette Wing, editor, Proc. of Workshop on Interface Definition Languages, pages 1–12, January 1994. Also available as ACM SIGPLAN Notices 29 (8), August 1994.
Guruduth Banavar. An Application Framework for Compositional Modularity. PhD thesis, University of Utah, Salt Lake City, Utah, 1995. Available as report CSTD-95-011.
Guruduth Banavar, Gary Lindstrom, and Douglas Orr. Type-safe composition of object modules. In Computer Systems and Education, pages 188–200. Tata McGraw Hill Publishing Company, Limited, New Delhi, India, June 22–25, 1994. ISBN 0-07-462044-4. Also available as University of Utah Technical Report UUCS-94-001.
Guruduth Banavar, Douglas Orr, and Gary Lindstrom. Layered, server-based support for object-oriented application development. In Luis-Felipe Cabrera and Marvin Theimer, editors, Proceedings of the Fourth International Workshop on Object Orientation in Operating Systems, pages 2–11, Lund, Sweden, August 14–15 1995. EEEE Computer Society. Also available as University of Utah TR UUCS-95-007.
Gilad Bracha and Gary Lindstrom. Modularity meets inheritance. In Proc. International Conference on Computer Languages, pages 282–290, San Francisco, CA, April 20–23, 1992. IEEE Computer Society. Also available as University of Utah Technical Report UUCS-91-017.
Kim B. Bruce. A paradigmatic object-oriented programming language: Design, static typing and semantics. J. Functional Programming, 4(2):127–206, 1994.
P. Canning, W. Cook, W. Hill, and W. Olthoff. Interfaces for strongly-typed object-oriented programming. In Norman Meyrowitz, editor, Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 457–467, 1989.
Luca Cardelli and John C. Mitchell. Operations on records. Technical Report 48, Digital Equipment Corporation Systems Research Center, August 1989.
William Clinger and Jonathan Rees. Revised4 report on the algorithmic language Scheme. ACM Lisp Pointers, 4(3), 1991.
William Cook, Walter Hill, and Peter Canning. Inheritance is not subtyping. In Carl Gunter and John Mitchell, editors, Theoretical Aspects of Object-Oriented Programming, pages 497–517. MIT Press, 1994.
William Cook and Jen Palsberg. A denotational semantics of inheritance and its correctness. In Proc. ACM Conf. on Object-Oriented Programming: Systems, Languages and Applications, pages 433–444, 1989.
Pavel Curtis and James Rauen. A module system for Scheme. In Conference Record of the ACM Lisp and Functional Programming. ACM, 1990.
Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990.
Erick Gallesio. STk reference manual. Version 2.1, 1993/94.
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Professional Computing Series. Addison-Wesley Publishing Company, Reading, Massachusetts, 1995.
Graham Hamilton and Sanjan Radia. Using interface inheritance to address problems in system software evolution. In Jeanette Wing, editor, Proc. of Workshop on Interface Definition Languages, pages 119–128, January 1994. Available as August 1994 issue of ACM SIGPLAN Notices.
Suresh Jagannathan. Metalevel building blocks for modular systems. ACM Transactions on Programming Languages and Systems, 16(3):456–492, May 1994.
Dinesh Katiyar, David Luckham, and John Mitchell. A type system for prototyping languages. In Proc. of the ACM Symp. on Principles of Programming Languages, pages 138–150, Portland, OR, January 1994. ACM.
Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Moller-Pedersen, and Kristen Nygaard. The BETA programming language. In Research Directions in Object-Oriented Programming, pages 7–48. MIT Press, 1987.
Leslie Lamport. LATEX, a Document Processing System. Addison Wesley Publishing Company, Reading, MA, 1986.
Object Management Group. The Common Object Request Broker: Architecture and Specification, December 1991. Revision 1.1.
Douglas B. Orr and Robert W. Mecklenburg. OMOS — An object server for program execution. In Proc. International Workshop on Object Oriented Operating Systems, pages 200–209, Paris, September 1992. IEEE Computer Society. Also available as technical report UUCS-92-033.
Jonathan Rees. Another module system for Scheme. Included in the Scheme 48 distribution, 1993.
Wayne Rossberg, Edward Smith, and Angelica Matinkhah. Structured text system. US Patent Number 5,341,469, August 1994.
Sho-Huan Simon Tung. Interactive modular programming in Scheme. In Proceedings of the ACM Lisp and Functional Programming Conference, pages pages 86–95. ACM, 1992.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1996 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Banavar, G., Lindstrom, G. (1996). An application framework for module composition tools. In: Cointe, P. (eds) ECOOP ’96 — Object-Oriented Programming. ECOOP 1996. Lecture Notes in Computer Science, vol 1098. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0053058
Download citation
DOI: https://doi.org/10.1007/BFb0053058
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-61439-5
Online ISBN: 978-3-540-68570-8
eBook Packages: Springer Book Archive