Architectural metrics and evaluation for component based software systems
MetadataShow full item record
Component based software engineering has been perceived to have immense reuse potential. This area has evoked wide interest and has led to considerable investment in research and development efforts. Most of these investigations have explored internal characteristics of software components such as correctness, reliability, modularity, interoperability, understandability, maintainability, readability, portability and generality for promoting reuse. But experience over the past decade and a half has demonstrated that the usefulness of a component depends as much on the context into which it fits as it does on the internal characteristics of the component. Software architecture descriptions that take into account the requirements of the domain can be used to serve as this context. While the Perry, Wolf definition of software architecture has been widely acknowledged, a number of architectural description languages (ADL) have emerged that aim to capture various facets of a software, using varying degrees of formalism. There is currently no agreement towards a standard approach for documenting software architectures which would help define the vocabulary for architectural semantics. In spite of lack of any specification standards for components, Software Product Lines (SPL) and Commercial Off The Shelf (COTS) components do provide a rich supporting base for creating software architectures and promise significant improvements in the quality of software configurations that can be composed from pre-built components. However, further research is needed for evaluation of architectural merits of such component based configurations. In this research, we identify the key aspects of software that need to be specified to enable useful analysis at an architectural level. We also propose a set of metrics that enable objective evaluation of reusability potential. Architectural research has established that software architectural styles provide a way for achieving a desired coherence for component-based architectures. Different architectural styles enforce different quality attributes for a system. Thus, if the architectural style of an emergent system could be predicted, a person playing the role of a system integrator could make necessary changes to ensure that the quality attributes dictated by the system requirements were satisfied before the actual system is built and deployed, thus somewhat mitigating project risks. As part of this research, we propose a model for predicting architectural styles based on use cases that need to be satisfied by a system configuration and demonstrate how our approach can be used to determine stylistic conformance. We also propose objective methods for assessing architectural divergence, erosion and drift during system evolution and maintenance.