Component-based development, takes the approach of the manufacturing industry, where interchangeable parts are developed and assembled to create the end product. In terms of software development, this means analyzing the requirements of the product to develop. The product is then assembled by using existing components if possible. If this is not possible, the missing component(s) are developed by generalizing concepts (if applicable), and on the basis of this, developing reusable components that can be used in the current and future products.

A good definition of a component is: A component is a language-neutral, independently implemented package of software services, delivered in an encapsulated and replaceable container, accessed via one or more published interfaces. A component is not platform constrained or application bound. [1]

Component-based development reduces development cost due to code reuse. Furthermore, it reduces maintenance cost as there is only a need for one code base. Also, when changing the implementation of a component's interface, only the component itself needs to be recompiled, as other parts of the system that depend on this particular component, use the existing interface to access the changed implementation.

Some consideration must be put into versioning, i.e. different versions of the same component could provide different interfaces. Also, trust is of importance when using third-party components in one's product.

Technologies: COM, CORBA, JavaBeans and .NET.

[1]
Kirby McInnis, CBD: The Concepts, Technology and Methodology, Castek Software Factory Inc.
[2]
CoLogNET, Component-Based Software Development - An Overview.
Back to the Glossary of Generative Programming Terms
Back to the course home page
Contributor: Jacob Munk-Stander
Last modification: 31/1 2006