Component-based software engineering is gaining substantial interest in the software community today. This is because software components, offer developers the double-edged sword of shorter life cycles and lesser development costs. However, several technical issues still remain unsolved before the burgeoning software component industry. One such issue is the evaluation of software component quality with the help of software quality models. This paper is a result of our research effort to design a quality model for the purpose of evaluating software components. As a first step in this direction, the different quality models proposed for software components were studied and analyzed. A major drawback common to all the models is that they fail to recognize reusability as a high level quality characteristic, although reusability is one of the major driving forces of component usage. Testability has also been either driven out of the picture or placed lower in the hierarchy of the proposed quality models.
Most of the models are too generic, can be applied to any software product and hence don't specifically relate to components alone. This paper proposes a quality model SCQM (Software Component Quality Model) that can be used to evaluate the quality of any software component - whether it is an in-house, reusable in-house, COTS or reusable COTS component. The model has been derived based on the ISO-9126 software quality model and the existing models proposed in component research literature.Modern software systems have become more complex. The development process for such complex software also becomes tedious and uncontrolled, resulting in high development costs, low productivity and unmanageable software quality (Pour, 1999). Consequently, there is a growing demand for a new, efficient and cost-effective software development paradigm. This solution was offered to the software industry in the form of Component-Based Software Engineering. The component-based software development approach is based on the idea of developing software systems by selecting appropriate off-the - shelf components and then assembling them in a well-defined architecture. |