Thursday, May 7, 2009

On Software Component

The early promises of object-oriented technology to provide reusable software elements did not bear fruit as expected. One of the main reasons for the failure is that objects are too fine grained for large-scale reuse efforts. In order to be reusable optimally, objects need to be coarse-grained in the services they provide and should have a published interface of what services they provide. One of the practices that gained wide spread acceptance in the software development industry through object technology is the practice of reuse using design patterns. Patterns embody accumulated knowledge about proven reusable design elements for software development. The use of design patterns has improved the quality of software and reduced the cost of developing software in object oriented technology for more than a decade.

A business software component is a self-contained and self-deployable (could be third-party composable) software element providing a set of inter-related services described in well-defined and published interfaces. As the natural successor of objects, components are being utilized in small and large scale software developments. Developing software from components promises benefits such as reuse, complexity management, change management, and time-to-market. The idea of approaching software development using components to imitate its hardware counterpart has been around for a while. But what makes the use of components for software development more feasible at this time is the use of objects and design patterns for component development.

Component Based Software Development (CBSD) focuses on development and composition of components through their interfaces. Composition or integration of components to form a functioning system requires designing collaborative behavior of multiple components to form a system based on a specific component model and component model framework. The current component based development is different from previous approaches, even with object-oriented technology, in its separation of component specification from implementation.

I would like to further write some notes on using components. The above paragraphs can be assumed as simple definition/explanation of components and the need to use them.

No comments:

Post a Comment