Type-Safe Prototype-Based Component Evolution

  • Matthias Zenger
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2374)


Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the programming language level. We propose a simple prototype-based model for first-class components on top of a class-based object-oriented language. The model is formalized as an extension of Featherweight Java. Our calculus includes a minimal set of primitives to dynamically build, extend, and compose software components, while supporting features like explicit context dependencies, late composition, unanticipated component extensibility, and strong encapsulation. We present a type system for our calculus that ensures type-safe component definition, composition, and evolution.


Operational Semantic Type Soundness Service Implementation Component Instance Architecture Description Language 
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.
    M. Abadi and L. Cardelli. A Theory of Objects. Monographs in Computer Science. Springer Verlag, 1996.Google Scholar
  2. 2.
    J. Aldrich, C. Chambers, and D. Notkin. Architectural reasoning in ArchJava. In Proceedings of the 16th European Conference on Object-Oriented Programming, Málaga, Spain, June 2002.Google Scholar
  3. 3.
    R. Allen. A Formal Approach to Software Architecture. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, May 1997.Google Scholar
  4. 4.
    D. Ancona and E. Zucca. A theory of mixin modules: basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, 1998.MathSciNetzbMATHCrossRefGoogle Scholar
  5. 5.
    D. Ancona and E. Zucca. A primitive calculus for module systems. In Principles and Practice of Declarative Programming, LNCS 1702. Springer-Verlag, 1999.CrossRefGoogle Scholar
  6. 6.
    D. Ancona and E. Zucca. A calculus of module systems. Journal of Functional Programming, 2001.Google Scholar
  7. 7.
    D. Ancona and E. Zucca. True modules for Java-like languages. In Proceedings of European Conference on Object-Oriented Programming, LNCS 2072. Springer-Verlag, 2001.Google Scholar
  8. 8.
    L. Bettini, V. Bono, and B. Venneri. Coordinating mobile object-oriented code. In Proceedings of Coordination 2002, York, UK, April 2002.Google Scholar
  9. 9.
    V. Bono, A. Patel, and V. Shmatikov. A core calculus of classes and mixins. In Proceedings of the 13th European Conference on Object-Oriented Programming, pages 43–66, Lisbon, Portugal, 1999.Google Scholar
  10. 10.
    G. Bracha. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah, 1992.Google Scholar
  11. 11.
    G. Bracha and W. Cook. Mixin-based inheritance. In N. Meyrowitz, editor, Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, pages 303–311, Ottawa, Canada, 1990. ACM Press.Google Scholar
  12. 12.
    G. Bracha and D. Griswold. Extending Smalltalk with mixins. In OOPSLA’ 96 Workshop on Extending the Smalltalk Language, April 1996.Google Scholar
  13. 13.
    G. Bracha and G. Lindstrom. Modularity meets inheritance. In Proceedings of the IEEE Computer Society International Conference on Computer Languages, pages 282–290, Washington, DC, 1992. IEEE Computer Society.Google Scholar
  14. 14.
    M. Büchi and W. Weck. Compound types for Java. In Proceedings of OOPSLA 1998, pages 362–373, October 1998.Google Scholar
  15. 15.
    M. Büchi and W. Weck. Generic wrappers. In Proceedings of the 14th European Conference on Object-Oriented Programming, pages 201–225, June 2000.Google Scholar
  16. 16.
    L. Cardelli. Program fragments, linking, and modularization. In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 266–277, Paris, France, January 1997.Google Scholar
  17. 17.
    L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, December 1985.Google Scholar
  18. 18.
    C. Chambers and C. Team. The Cecil language, specification and rationale, December 1998.Google Scholar
  19. 19.
    M. Flatt. Programming Languages for Reusable Software Components. PhD thesis, Rice University, Department of Computer Science, June 1999.Google Scholar
  20. 20.
    M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proceedings of the ACM Conference on Programming Language Design and Implementation, pages 236–248, 1998.Google Scholar
  21. 21.
    M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proceedings of the 25th ACM Symposium on Principles of Programming Languages, pages 171–183, San Diego, California, 1998.Google Scholar
  22. 22.
    E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.Google Scholar
  23. 23.
    D. Garlan, R. Allen, and J. Ockerbloom. Exploiting style in architectural design environments. In Proceedings of SIGSOFT’ 94: Foundations of Software Engineering, pages 175–188, New Orleans, Louisiana, USA, December 1994.Google Scholar
  24. 24.
    D. Garlan, R. Monroe, and D. Wile. ACME: An architecture description interchange language. In Proceedings of CASCON’ 97, November 1997.Google Scholar
  25. 25.
    N. Glew and G. Morrisett. Type-safe linking and modular assembly language. In Conference Record of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 250–261, San Antonio, Texas, 1999.Google Scholar
  26. 26.
    J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification. Java Series, Sun Microsystems, second edition, 2000. ISBN 0-201-31008-2.Google Scholar
  27. 27.
    O. M. Group. The Common Object Request Broker: Architecture and specification, revision 2.0, February 1997.Google Scholar
  28. 28.
    A. Hejlsberg and S. Wiltamuth. C# language specification. Microsoft Corporation, 2000.Google Scholar
  29. 29.
    T. Hirschowitz and X. Leroy. Mixin modules in a call-by-value setting. In Proceedings of the European Symposium on Programming, Grenoble, France, April 2002.Google Scholar
  30. 30.
    U. Hölzle. Integrating independently-developed components in object-oriented languages. In Proceedings of the European Conference on Object-Oriented Programming, pages 36–56, 1993.Google Scholar
  31. 31.
    R. Ibrahim. COMEL: A formal model for COM. Technical report, Queensland University of Technology, Brisbane, Australia, 1998.Google Scholar
  32. 32.
    A. Igarashi, B. Pierce, and P. Wadler. Featherweight Java: A minimal core calculus for Java and GJ. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages & Applications, volume 34(10), pages 132–146, 1999.Google Scholar
  33. 33.
    JavaSoft. JavaBeans™., December 1996.
  34. 34.
    G. Kniesel. Type-safe delegation for run-time component adaptation. In Proceedings of the 13th European Conference on Object-Oriented Programming, pages 351–366, Lisbon, Portugal, 1999.Google Scholar
  35. 35.
    D. Luckham, L. Augustin, J. Kenney, J. Vera, D. Bryan, and W. Mann. Specification and analysis of system architecture using Rapide. In IEEE Transactions on Software Engineering, April 1995.Google Scholar
  36. 36.
    D. MacQueen. Modules for Standard ML. In Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, pages 198–207, New York, August 1984.Google Scholar
  37. 37.
    J. Magee, N. Dulay, S. Eisenbach, and J. Kramer. Specifying distributed software architectures. In Proceedings of the 5th European Software Engineering Conference, Barcelona, Spain, September 1995.Google Scholar
  38. 38.
    S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New-age components for old-fashioned Java. In Proceedings of the 2001 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages & Applications, October 2001.Google Scholar
  39. 39.
    S. McDirmid, M. Flatt, and W. C. Hsieh. Mixing COP and OOP. In OOPSLA Workshop on Language Mechanisms for Programming Software Components, pages 29–32. Technical Report NU-CCS-01-06, Northeastern University, Boston, MA, October 2001.Google Scholar
  40. 40.
    N. Medvidovic and R. N. Taylor. A classification and comparison framework for software architecture description languages. In IEEE Transactions on Software Engineering, volume 26, pages 70–93, January 2000.Google Scholar
  41. 41.
    M. Moriconi, X. Quian, and A. Riemenschneider. Correct architecture refinement. In IEEE Transactions on Software Engineering, volume 21, April 1995.Google Scholar
  42. 42.
    M. Odersky. Report on the programming language Scala. École Polytechnique Fédérale de Lausanne, Switzerland, 2002. Scholar
  43. 43.
    M. Odersky. Objects + views = components? In Proceedings of Abstract State Machines 2000, March 2000.Google Scholar
  44. 44.
    D. E. Perry and A. L. Wolf. Foundations for the study of software architecture. In ACM SIGSOFT Software Engineering Notes, volume 17, pages 40–52, October 1992.Google Scholar
  45. 45.
    B. C. Pierce. Types and Programming Languages. MIT Press, February 2002. ISBN 0-262-16209-1.Google Scholar
  46. 46.
    D. Rogerson. Inside COM: Microsoft’s Component Object Model. Microsoft Press, 1997.Google Scholar
  47. 47.
    C. Russo. Types for Modules. PhD thesis, University of Edinburgh, 1998.Google Scholar
  48. 48.
    C. Russo. First-class structures for Standard ML. In Proceedings of the 9th European Symposium on Programming, pages 336–350, Berlin, Germany, 2000.Google Scholar
  49. 49.
    J. C. Seco and L. Caires. A basic model of typed components. In Proceedings of the 14th European Conference on Object-Oriented Programming, pages 108–128, 2000.Google Scholar
  50. 50.
    M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.Google Scholar
  51. 51.
    V. C. Sreedhar. ACOEL on CORAL: A component requirement and abstraction language. In OOPSLA Workshop on Specification and Verification of Component-Based Systems, October 2001.Google Scholar
  52. 52.
    V. C. Sreedhar. Programming software components using ACOEL. Unpublished manuscript, IBM T.J. Watson Research Center, 2002.Google Scholar
  53. 53.
    C. Szyperski. Independently extensible systems-software engineering potential and challenges. In Proceedings of the 19th Australian Computer Science Conference, Melbourne, Australia, 1996.Google Scholar
  54. 54.
    C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addi-son Wesley / ACM Press, New York, 1998. ISBN 0-201-17888-5.Google Scholar
  55. 55.
    D. Ungar and R. B. Smith. Self: The power of simplicity. Lisp and Symbolic Computation, March 1991.Google Scholar
  56. 56.
    A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115, 1994.Google Scholar
  57. 57.
    M. Zenger. Type-safe prototype-based component evolution. Technical report, École Polytechnique Fédérale de Lausanne, Switzerland, April 2002.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Matthias Zenger
    • 1
  1. 1.École Polytechnique Fédérale de Lausanne INR EcublensLausanneSwitzerland

Personalised recommendations