This Article 
 Bibliographic References 
 Add to: 
Software Component Models
October 2007 (vol. 33 no. 10)
pp. 709-724
Component-based Development (CBD) is an important emerging topic in Software Engineering, promising long sought after benefits like increased reuse, reduced time-to-market and hence software production cost. The cornerstone of a CBD technology is its underlying software component model, which defines components and their composition mechanisms. Current models use objects or architectural units as components. These are not ideal for component reuse or systematic composition. In this paper, we survey and analyze current component models, and classify them into a taxonomy based on commonly accepted desiderata for CBD. For each category in the taxonomy, we describe its key characteristics and evaluate them with respect to these desiderata.

[1] F. Bachmann, L. Bass, C. Buhman, S. Comella-Dorda, F. Long, J. Robert, R. Seacord, and K. Wallnau, “Volume II: Technical Concepts of Component-Based Software Engineering,” second ed., Technical Report CMU/SEI-2000-TR-008, Software Eng. Inst., Carnegie Mellon Univ., 2000.
[2] Component-Based Software Engineering: Putting the Pieces Together, G. Heineman and W. Councill, eds. Addison-Wesley, 2001.
[3] C. Szyperski, D. Gruntz, and S. Murer, Component Software: Beyond Object-Oriented Programming, second ed. Addison-Wesley, 2002.
[4] K.-K. Lau, “Software Component Models,” Proc. 28th Int'l Conf. Software Eng. (ICSE '06), pp. 1081-1082, 2006.
[5] K.-K. Lau and Z. Wang, A Survey of Software Component Models, second ed., School of Computer Science, Univ. of Manchester, cspp38.pdf, May 2006.
[6] M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.
[7] L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice, second ed. Addison-Wesley, 2003.
[8] L. DeMichiel, L. Yalçinalp, and S. Krishnan, Enterprise JavaBeans Specification Version 2.0, 2001.
[9] R. Monson-Haefel, Enterprise JavaBeans, fourth ed. O'Reilly & Assoc., 2004.
[10] P. Clements, “A Survey of Architecture Description Languages,” Proc. Eighth Int'l Workshop Software Specification and Design (IWSSD '96), pp. 16-25, 1996.
[11] N. Medvidovic and R.N. Taylor, “A Classification and Comparison Framework for Software Architecture Description Languages,” IEEE Trans. Software Eng., vol. 26, no. 1, pp. 70-93, Jan. 2000.
[12] K.-K. Lau and Z. Wang, “A Taxonomy of Software Component Models,” Proc. 31st Euromicro Conf. Software Eng. and Advanced Applications (SEAA '05), pp. 88-95, 2005.
[13] M. Broy, A. Deimel, J. Henn, K. Koskimies, F. Plasil, G. Pomberger, W. Pree, M. Stal, and C. Szyperski, “What Characterizes a Software Component?” Software—Concepts and Tools, vol. 19, no. 1, pp. 49-56, 1998.
[14] B. Meyer, “The Grand Challenge of Trusted Components,” Proc. 25th Int'l Conf. Software Eng. (ICSE '03), pp. 660-667, 2003.
[15] D. Box, Essential COM. Addison-Wesley, 1998.
[16] CORBA Component Model, V3.0, OMG, formalcomponents.htm, 2002.
[17] JavaBeans Specification. Sun Microsystems, spec.html, 1997.
[18] A. Wigley, M. Sutton, R. MacLeod, R. Burbidge, and S. Wheelwright, Microsoft .NET Compact Framework (Core Reference). Microsoft Press, Jan. 2003.
[19] G. Alonso, F. Casati, H. Kuno, and V. Machiraju, Web Services: Concepts, Architectures and Applications. Springer-Verlag, 2004.
[20] R. van Ommering, F. van der Linden, J. Kramer, and J. Magee, “The Koala Component Model for Consumer Electronics Software,” Computer, vol. 33, no. 3, pp. 78-85, Mar. 2000.
[21] R. van Ommering, “The Koala Component Model,” Building Reliable Component-Based Software Systems, I. Crnkovic and M.Larsson, eds., pp. 223-236, Artech House, 2002.
[22] C. Atkinson, J. Bayer, C. Bunse, E. Kamsties, O. Laitenberger, R. Laqua, D. Muthig, B. Paech, J. Wüst, and J. Zettel, Component-Based Product Line Engineering with UML. Addison-Wesley, 2001.
[23] F. Plášil, D. Balek, and R. Janecek, “SOFA/DCUP: Architecture for Component Trading and Dynamic Updating,” Proc. Fourth Int'l Conf. Configurable Distributed Systems (ICCDS '98), pp. 43-52, 1998.
[24] F. Plášil, M. Besta, and S. Visnovsky, “Bounding Component Behavior via Protocols,” Proc. Technology of Object-Oriented Languages and Systems (TOOLS 31), pp. 387-398, 1999.
[25] UML 2.0 Superstructure Specification, OMG, , 2007.
[26] J. Cheesman and J. Daniels, UML Components: A Simple Process for Specifying Component-Based Software. Addison-Wesley, 2000.
[27] T. Genssler, A. Christoph, B. Schulz, M. Winter, C. Stich, C. Zeidler, P. Müller, A. Stelter, O. Nierstrasz, S. Ducasse, G. Arévalo, R. Wuyts, P. Liang, B. Schönhage, and R. van den Born, PECOS in a Nutshell, http:/, Sept. 2002.
[28] O. Nierstrasz, G. Arévalo, S. Ducasse, R. Wuyts, A. Black, P. Müller, C. Zeidler, T. Genssler, and R. van den Born, “A Component Model for Field Devices,” Proc. First Int'l IFIP/ACM Working Conf. Component Deployment (CD '02), pp. 200-209, 2002.
[29] “The Fractal Project Web Page,” http:/, 2007.
[30] E. Bruneton, T. Coupaye, and J. Stefani, “Recursive and Dynamic Software Composition with Sharing,” Proc. Seventh Int'l Workshop Component-Oriented Programming (WCOP '02), 2002.
[31] E. Bruneton, T. Coupaye, and J. Stefani, “The Fractal Component Model,” ObjectWeb Consortium, Technical Report Specification V2, 2003.
[32] E. Bruneton, T. Coupaye, and M. Leclercq, “An Open Component Model and Its Support in Java,” Proc. Seventh Int'l Symp. Component-Based Software Eng. (CBSE '04), pp. 7-22, 2004.
[33] JavaBeans Architecture: BDK Download. Sun Microsystems, bdk_download. html, 2003.
[34] Java 2 Platform, Enterprise Edition Sun Microsystems, http://java.sun.comj2ee/, 2007.
[35] Common Object Request Broker Architecture: Core Specification, Version 3.0.3, corba_spec_catalog.htm , Mar. 2004.
[36] D. Garlan, R. Monroe, and D. Wile, “Acme: Architectural Description of Component-Based Systems,” Foundations of Component-Based Systems, G. Leavens and M. Sitaraman, eds., pp. 47-68, Cambridge Univ. Press, 2000.
[37] C. Peltz, “Web Services Orchestration and Choreography,” Computer, vol. 36, no. 10, pp. 46-52, Oct. 2003.
[38] M. Lumpe, F. Achermann, and O. Nierstrasz, “A Formal Language for Composition,” Foundations of Component Based Systems, G. Leavens and M. Sitaraman, eds., pp. 69-90, Cambridge Univ. Press, 2000.
[39] T. Andrews, F. Curbera, H. Dholakia, Y. Goland, J. Klein, F. Leymann, K. Liu, D. Roller, D. Smith, S. Thatte, I. Trickovic, and S. Weeragwarana, Business Process Execution Language for Web Services (BPEL4WS) Version 1.1. IBM, ws-bpel/, 2004.
[40] R. Allen and D. Garlan, “A Formal Basis for Architectural Connection,” ACM Trans. Software Eng. and Methodology, vol. 6, no. 3, pp. 213-249, 1997.
[41] I. Crnkovic, H. Schmidt, J. Stafford, and K. Wallnau, Proc. Sixth Workshop Component-Based Software Eng.: Automated Reasoning and Prediction (CBSE '04). ACM SIGSOFT Software Eng. Notes, vol. 29, no. 3, pp. 1-7, May 2004.
[42] B. Christiansson, L. Jakobsson, and I. Crnkovic, “CBD Process,” Building Reliable Component-Based Software Systems, I. Crnkovic and M. Larsson, eds., pp. 89-113, Artech House, 2002.
[43] B. Warboys, B. Snowdon, R. Greenwood, W. Seet, I. Robertson, R. Morrison, D. Balasubramaniam, G. Kirby, and K. Mickan, “An Active Architecture Approach to COTS Integration,” IEEE Software, special issue on incorporating COTS into the development process, vol. 22, no. 4, pp. 20-27, July/Aug. 2005.
[44] The Bean Builder, Sun Microsystems, https:/, 2007.
[45] AcmeStudio 2.1 User Manual, Carnegie Mellon Univ., , 1998.
[46] J. Aldrich, C. Chambers, and D. Notkin, “ArchJava: Connecting Software Architecture to Implementation,” Proc. 24th Int'l Conf. Software Eng. (ICSE '02), pp. 187-197, 2002.
[47] J. Aldrich, C. Chambers, and D. Notkin, “Architectural Reasoning in ArchJava,” Proc. 16th European Conf. Object-Oriented Programming (ECOOP '02), pp. 334-367, 2002.
[48] J. Aldrich, D. Garlan, B. Schmerl, and T. Tseng, “Modeling and Implementing Software Architecture with Acme and ArchJava,” Proc. Companion 19th Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '04), pp. 156-157, 2004.
[49] L. DeMichiel and M. Keith, Enterprise JavaBeans, Version 3.0. Sun Microsystems, 2006.
[50] R. Monson-Haefel, Enterprise JavaBeans 3.0, fifth ed. O'Reilly & Associates, 2006.
[51] “Eclipse Web Page,” http:/, 2007.
[52] Y. Choi, O. Kwon, and G. Shin, “An Approach to Composition of EJB Components Using C2 Style,” Proc. 28th Euromicro Conf. (Euromicro '02), pp. 40-46, 2002.
[53] P. Clements and L. Northrop, Software Product Lines: Practices and Patterns. Addison Wesley, 2001.
[54] P. Hntynka and F. Plášil, “Dynamic Reconfiguration and Access to Services in Hierarchical Component Models,” Proc. Ninth Int'l Symp. Component-Based Software Eng. (CBSE '06), I. Gorton et al., eds., pp. 352-359, 2006.
[55] K.-K. Lau, P. Velasco Elizondo, and Z. Wang, “Exogenous Connectors for Software Components,” Proc. Eighth Int'l Symp. Component-Based Software Eng. (CBSE '05), I. Gorton et al., eds., pp.90-106, 2005.
[56] K.-K. Lau, M. Ornaghi, and Z. Wang, “A Software Component Model and its Preliminary Formalisation,” Proc. Fourth Int'l Symp. Formal Methods for Components and Objects (FMCO '06), F. de Boer et al., eds., pp. 1-21, 2006.
[57] A. Major, COM IDL and Interface Design. John Wiley & Sons, Feb. 1999.
[58] M. Barnett and W. Schulte, “Runtime Verification of .Net Contracts,” Systems and Software, vol. 65, no. 2003, pp. 199-208, 2003.
[59] BEA Systems et al., “CORBA Components,” Object Management Group, Technical Report orbos/99-02-05, 1999.
[60] R. Natan, CORBA: A Guide to Common Object Request Broker Architecture. McGraw-Hill, 1995.
[61] OpenCCM User's Guide, ObjectWeb—Open Source Middleware, , 2007.
[62] E. Newcomer, Understanding Web Services: XML, WSDL, SOAP, and UDDI. Addison-Wesley, 2002.
[63] Ariba, Microsoft, and IBM, Web Services Description Language (WSDL) Version 1.1., , 2001.

Index Terms:
software components, software component models, component life-cycle, component syntax, component semantics, component composition
Kung-Kiu Lau, Zheng Wang, "Software Component Models," IEEE Transactions on Software Engineering, vol. 33, no. 10, pp. 709-724, Oct. 2007, doi:10.1109/TSE.2007.70726
Usage of this product signifies your acceptance of the Terms of Use.