Component-based Software Development (CBSD)

Home CBSD Links Aspect-oriented Programming Desktop Computing Script Languages

Abstract

Software Engineering is often perceived as comprising ponderous bureaucratic processes appropriate to the design, development, deployment, and evolution of big, complex, slowly adapting systems. Thus developing software at Internet speed using the currently available software engineering principles and practices are found inefficient and insufficient. This forced researchers in software engineering field to think about the necessity of designing new methodologies and paradigms to take head on these challenges. Thus came the most important component technology, which advocates development of software applications by creating components and assembling them.

As the demand for more flexible, adaptable, extensible, and robust Web-based enterprise application systems accelerates, adopting new software engineering methodologies and development strategies become critical. These strategies must support the construction of enterprise software systems that assemble highly flexible software components coded in different times by different developers. Traditional software development strategies and engineering methodologies, which require development of software systems from scratch fall short in this regard.

What is CBSD?

Component-based software development advocates developing software systems by selecting reliable, reusable and robust software components and assembling them within appropriate software architectures. By promoting the use of software components that commercial vendors or in-house developers build, the component-based software development approach promises large-scale software reuse. Component-based software engineering offers an attractive alternative for building Web-based enterprise application systems.

Benefits of CBSD

Software developers create software components mainly with an intention of being reused in various software systems. Components are designed to interact with its environment through its well-defined interfaces but to encapsulate their implementation. Component-based software development brings the potential for

  • significant reduction in the development cost and time-to-market of enterprise software systems because developers can assemble such systems from a set of reusable components rather than building them from scratch,

  • increasing the reliability of enterprise software systems - each reusable component undergoes several review and inspection stages in the course of its original development and previous uses, and CBSD relies on explicitly defined architectures and interfaces,

  • improving the maintainability of enterprise software systems by allowing new, higher-quality components to replace old ones, and

  • enhancing the quality of enterprise software systems - application-domain experts develop components, then software engineers who specialize in Component software engineering assemble those components into enterprise software systems.

Life Cycles of CBSD

The component-based software development life cycle differs from traditional way of developing software systems in many ways. The CBSD phase includes new activities such as selection and creation of software architectures, as well as selection and customization of a set of software components. In addition, the implementation phase deals with the integration of a set of software components within appropriate software architectures. This requires developing wrappers that glue reusable components together to build the software system, rather than extensive coding to build a software system from scratch. Late integration of components developed by others eliminates the confidence usually drawn from integration testing in a traditional software engineering model. Developers must architect and design extensibility into a system and all its parts otherwise the components in the resulting system will not be independently producible and deployable.

Back to Top