This Article 
 Bibliographic References 
 Add to: 
Analysis of a Conflict between Aggregation and Interface Negotiation in Microsoft's Component Object Model
July/August 1999 (vol. 25 no. 4)
pp. 584-599

Abstract—Many software projects today are based on the integration of independently designed software components that are acquired on the market, rather than developed within the projects themselves. A component standard, or integration architecture, is a set of design rules meant to ensure that such components can be integrated in defined ways without undue effort. The rules of a component standard define, among other things, component interoperability and composition mechanisms. Understanding the properties of such mechanisms and interactions between them is important for the successful development and integration of software components, as well as for the evolution of component standards. This paper presents a rigorous analysis of two such mechanisms: component aggregation and dynamic interface negotiation, which were first introduced in Microsoft's Component Object Model (COM). We show that interface negotiation does not function properly within COM aggregation boundaries. In particular, interface negotiation generally cannot be used to determine the identity and set of interfaces of aggregated components. This complicates integration within aggregates. We provide a mediator-based example, and show that the problem is in the sharing of interfaces inherent in COM aggregation.

[1] K. Brockschmidt, Inside OLE. Microsoft Press, 1995.
[2] K. Brockschmidt, "How OLE and COM Solve the Problems of Component Software Design," Microsoft Systems J., vol. 11, no. 5, pp. 63-82, May 1996.
[3] T. Bryant and A. Evans, "Formalizing the Object Management Group's Core Object Model," Computer Standards&Interfaces, vol. 17, nos. 5/6, pp. 481-489, 1995.
[4] R. Englander, Developing Java Beans, O'Reilly and Assoc., June 1997.
[5] C. Goswell, "The COM Programmer's Cookbook," Microsoft Office Product Unit, Spring 1995, revised Sept. 1995. URL:
[6] R. Grimes, Professional DCOM Programming. Wrox Press Inc, June 1997.
[7] W. Harris, Extending Mozilla. available as part of Netscape's Mozilla technical documentation at URL: docs/tplist/catFlow extendmoz.html
[8] I.S.C. Houston and M. Josephs, "A Formal Description of the OMG's Core Object Model and the Meaning of Compatible Extensions," Computer Standards and Interfaces, vol. 17, pp. 553-558, 1995.
[9] C. Kindel, "The Rules of the Component Object Model," Microsoft Developer Network Library, technical articles: Windows: OLE COM, Microsoft Corp., Oct. 1995.
[10] M. Kirtland, "The COM+ Programming Model Makes it Easy to Write Components in Any Language," Microsoft Systems J., pp. 19-28, Dec. 1997.
[11] I. Meisels and M. Saaltink, The Z/EVES Reference Manual (for Version 1.3), Draft, ORA Canada Technical Report TR-96-5493-03b, Dec. 1995, revised Nov. 1996.
[12] Microsoft Corp., "Microsoft Announces COM+," Microsoft URL: 1997/Sept97COMplspr.htm
[13] Microsoft Corp., The Component Object Model Specification, Draft Version 0.9, Microsoft Corp. and Digital Equipment Corp., Oct. 1995. URL:
[14] Microsoft Corp., "Windows DNA_Windows Distributed interNet Applications Architecture, Integrating Web and Client/ Server Computing: A Microsoft Corp. White Paper." available at URL: overviewdnawp.asp
[15] Object Management Group, "The Common Object Request Broker: Architecture and Specification," Object Management Group, 1997.
[16] D. Rogerson, Inside COM. Microsoft Press, 1997.
[17] W. Scullin, Modularization Techniques. available as part of Netscape's Mozilla technical documentation through URL: modunote.htm
[18] A. Snyder, "Modeling the C++ Object Model," Proc. ECOOP'91. European Conf. Object-Oriented Programming, pp. 1-20, Springer-Verlag, 1991.
[19] J.M. Spivey, The Z Notation: A Reference Manual, Prentice-Hall, Englewood Cliffs, N.J., 1992.
[20] K.J. Sullivan, "Mediators: Easing the Design and Evolution of Integrated Systems," PhD dissertation, Dept. of Computer Science, Univ. of Washington, Aug. 1994.
[21] K.J. Sullivan and D. Notkin, "Reconciling Environment Integration and Evolution," ACM Trans. Software Eng. and Methodology vol. 1, no. 3, July 1992.
[22] K.J. Sullivan, I.J. Kalet, and D. Notkin, "Mediators in a Radiation Treatment Planning System," IEEE Trans. Software Eng., vol. 22, no. 8, pp. 563-579, Aug. 1996.
[23] K.J. Sullivan, J. Socha, and M. Marchukov, "Using Formal Methods to Reason About Architectural Standards," Proc. 19th Int'l Conf. Software Eng., pp. 503-513, ACM Press, May 1997.
[24] A. Williams, Developing ActiveX Web Controls. Coriolis Group, 1996.
[25] T. Williams, Microsoft Corp., Personal Communication.
[26] X/Open Preliminary Specification X/Open DCE: Remote Procedure Call, X/Open Company Ltd., 1993.

Index Terms:
Software components, component standards, Component Object Model, COM, interface negotiation, aggregation, integration architecture.
Kevin J. Sullivan, Mark Marchukov, John Socha, "Analysis of a Conflict between Aggregation and Interface Negotiation in Microsoft's Component Object Model," IEEE Transactions on Software Engineering, vol. 25, no. 4, pp. 584-599, July-Aug. 1999, doi:10.1109/32.799960
Usage of this product signifies your acceptance of the Terms of Use.