An overview of metrics-based approaches to support software components reusability assessment <s> Critique <s> Metrics have long been used in software engineering to measure, evaluate, and improve software products and processes. Many metrics have been developed and their subsequent use in different settings has led to varying levels of success. Software architecture is a discipline in which few metrics have been applied, a surprising fact given the important role that software architecture plays in software development. Software product line architectures represent one area of software architecture in which metrics can be of especially great use. The critical importance of the structure defined by a product line architecture requires that its properties be meaningfully assessed and that informed architectural decisions be made to guide its evolution. In this paper, we present several novel metrics that we have designed to address this issue. These metrics are based on the concept of service utilization and are designed to take into account the context in which individual architectural elements are placed. We show the utility of the metrics by applying them in a case study involving a digital library product line architecture. In doing so, we demonstrate how the metrics illustrate deficiencies that, when addressed, improve the overall structural quality of the product line architecture. <s> BIB001 </s> An overview of metrics-based approaches to support software components reusability assessment <s> Critique <s> As Component-based Software Development (CBSD) starts to be effectively used, some software vendors have commenced to successfully sell and license commercial off-the-shelf (COTS) components. One of the most critical processes in CBSD is the selection of the COTS components that meet the user requirements. Current proposals have shown how to deal with the functional aspects of this evaluation process. However, there is a lack of appropriate quality models that allow an effective assessment of COTS components. Besides, the international standards that address the software products' quality issues (in particular, those from ISO and IEEE) have shown to be too general for dealing with the specific characteristics of software components. In this position paper we propose a quality model for CBSD based on ISO 9126, that defines a set of quality attributes and their associated metrics for the effective evaluation of COTS components. <s> BIB002 </s> An overview of metrics-based approaches to support software components reusability assessment <s> Critique <s> This paper describes an independent validation study for a suite of reusability metrics for component based design published in the literature. The metrics under validation were originally proposed using a semi-formal notation, namely a combination of mathematical formulae with natural language descriptions for elementary parts of those formulae. They were then computed using proprietary tools. By contrast, we present a formalization for the metrics suite that combines the version 2.0 of the UML metamodel with OCL. This technique provides a formal, portable and executable definition of the metrics set that can be used to perform other cross-validations of the metrics suite. A prototype working environment to perform such cross-validation experiments, both with this and other metrics sets was developed and a metrics collection experiment using that environment is discussed. <s> BIB003 </s> An overview of metrics-based approaches to support software components reusability assessment <s> Critique <s> Collections of already developed programs are important resources for efficient development of reliable software systems. In this paper, we propose a novel graph-representation model of a software component library (repository), called component rank model. This is based on analyzing actual usage relations of the components and propagating the significance through the usage relations. Using the component rank model, we have developed a Java class retrieval system named SPARS-J and applied SPARS-J to various collections of Java files. The result shows that SPARS-J gives a higher rank to components that are used more frequently. As a result, software engineers looking for a component have a better chance of finding it quickly. SPARS-J has been used by two companies, and has produced promising results. <s> BIB004
By using the information made available by vendors, there are limitations concerning the ability to automate metrics collection, due to the noticeable lack of standards in data presentation by COTS producers and brokers. To overcome this problem, a UML model for the classification of COTS usability is proposed, but populating that model in an automated fashion remains an open challenge. From the original set of metrics BIB002 , some were dropped out due to difficulties in their collection. With respect to the validation efforts, the proponents' attempt to build up a set of experiments was successful in what concerns the replication of the experiment by an independent team, but the small component sample is probably the most noticeable threat to validity of the experiment series. The proposal includes an interesting discussion on the focus shift caused by the specificity of black-box components evaluation, as opposed to the evaluation of OO design, or structured software and provides an interesting roadmap for research in metrics-based component evaluation.  The white-box view of components renders this approach inadequate for evaluation by independent component assemblers. The internal complexity of a component method should not be relevant for the understandability of its interface and the component's reusability.  The level of detail in the analysis of arguments in the interface is richer than in other approaches, in what concerns the relevance of naming conventions for component interfaces' understandability. However, this approach does not address other potentially interesting aspects in the interface, such as arguments' complexity. It can be argued that the analysis of the interface complexity is over-simplistic since at least two aspects are not considered: (i) the complexity of arguments, and (ii) the repetition of argument types. In both cases no distinction is made. Intuitively, increased complexity and variety of argument types would decrease the understandability of the component's interface. Washizaki's metrics set was validated with a case study where the reusability of over 120 components was assessed, both with this metrics set and by a panel of experts. Results show a high correlation between both assessments, indicating that the metrics defined in this set can indeed be used to assess component's reusability. However, an independent case study showed the metrics to be unreliable for components with a small number of features on their interface BIB003 . Further independent analysis is still required. The main contribution of this paper is an interesting discussion on requirements for metrics for CB architectures, measured at a system level, including insights on how to choose relevant metrics. However, this is an exploratory work based on expert opinions alone, rather than on some sort of quantitative evidence to back up the presented arguments.  This approach adapts the well-known concepts of coupling and cohesion to the scope of CBD. Except for the nodes in the graph being black-box components rather than classes, the proposal is similar to coupling and cohesion for OO design. Hoek's service utilization metrics BIB001 Scope Software product lines Of all the proposals presented in this overview, Hoek's is the one that best fits the notions of architectural components and assemblies' evaluation rather than individual components' evaluation. Inoue's ranking significance BIB004 Scope Software component libraries. Although the proposal is instantiated to Java class libraries, it is generic and could be used with other sorts of components, from fine to coarse-grained, both white and black-box. One of the most noticeable features of this approach is that reuse is assessed in terms of the effective reuse of software components, rather than in terms of expected reuse (e.g. predicted from the component interface's characteristics). This means that the metrics are useless from the point of view of a component developer. In turn, they may be very useful for component assemblers, as they help locating the most frequently reused components. From all the presented proposals, this was clearly the most thoroughly validated one. The ranking system is in use in two different companies, where a small case study concerning user satisfaction with the ranking system was conducted. The results were very encouraging, although a larger sample of users would be required to confirm them. More important, the ranking system was tested with a set of about 6100 components, from the JDK 1.4.2, on a first observational study, and 180000 components from publicly available Java component libraries, collected from SourceForge.net, on a second one. In both cases, the ranking system obtained significantly better results than those of non-specialized search engines. The authors do not specifically present the underlying quality model, although the proposal assumes that leveraging software component reusability is a promising approach to the development of high-quality software. Figure 1 represents an overview of the maturity levels of each of the proposals described on previous sections. In this chart, from left to right, we present each proposal; from front to back we present each of the analysed rating scales. On the vertical axis we have the maturity level, as defined in Table 1 . The overall low level of maturity throughout the several rating scales supports the claim that research in the area of software components quantitative evaluation is still on a very early stage. We can revisit now the three aspects highlighted in section 2. 