An application framework for module composition tools

  • Guruduth Banavar
  • Gary Lindstrom
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1098)


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.


Object File Software Artifact Compositional Module Compositional Modularity Concrete Classis 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Roberto M. Amadio and Luca Cardelli. Subtyping recursive types. ACM Transactions on Programming Languages and Systems, 15(4), September 1993.Google Scholar
  2. 2.
    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.Google Scholar
  3. 3.
    Guruduth Banavar. An Application Framework for Compositional Modularity. PhD thesis, University of Utah, Salt Lake City, Utah, 1995. Available as report CSTD-95-011.Google Scholar
  4. 4.
    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.Google Scholar
  5. 5.
    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.Google Scholar
  6. 6.
    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.Google Scholar
  7. 7.
    Kim B. Bruce. A paradigmatic object-oriented programming language: Design, static typing and semantics. J. Functional Programming, 4(2):127–206, 1994.zbMATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    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.Google Scholar
  9. 9.
    Luca Cardelli and John C. Mitchell. Operations on records. Technical Report 48, Digital Equipment Corporation Systems Research Center, August 1989.Google Scholar
  10. 10.
    William Clinger and Jonathan Rees. Revised4 report on the algorithmic language Scheme. ACM Lisp Pointers, 4(3), 1991.Google Scholar
  11. 11.
    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.Google Scholar
  12. 12.
    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.Google Scholar
  13. 13.
    Pavel Curtis and James Rauen. A module system for Scheme. In Conference Record of the ACM Lisp and Functional Programming. ACM, 1990.Google Scholar
  14. 14.
    Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990.Google Scholar
  15. 15.
    Erick Gallesio. STk reference manual. Version 2.1, 1993/94.Google Scholar
  16. 16.
    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.Google Scholar
  17. 17.
    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.Google Scholar
  18. 18.
    Suresh Jagannathan. Metalevel building blocks for modular systems. ACM Transactions on Programming Languages and Systems, 16(3):456–492, May 1994.CrossRefGoogle Scholar
  19. 19.
    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.Google Scholar
  20. 20.
    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.Google Scholar
  21. 21.
    Leslie Lamport. LATEX, a Document Processing System. Addison Wesley Publishing Company, Reading, MA, 1986.Google Scholar
  22. 22.
    Object Management Group. The Common Object Request Broker: Architecture and Specification, December 1991. Revision 1.1.Google Scholar
  23. 23.
    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.Google Scholar
  24. 24.
    Jonathan Rees. Another module system for Scheme. Included in the Scheme 48 distribution, 1993.Google Scholar
  25. 25.
    Wayne Rossberg, Edward Smith, and Angelica Matinkhah. Structured text system. US Patent Number 5,341,469, August 1994.Google Scholar
  26. 26.
    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.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Guruduth Banavar
    • 1
  • Gary Lindstrom
    • 2
  1. 1.IBM TJ Watson Research CenterHawthorneUSA
  2. 2.Department of Computer ScienceUniversity of UtahSalt Lake CityUSA

Personalised recommendations