Empirical Validation of Complexity and Extensibility Metrics for Software Product Line Architectures Edson A. Oliveira Junior, Jos´ e C. Maldonado Computing Systems Department University of S˜ ao Paulo (USP) ao Carlos-SP, Brazil Email: {edsonjr, jcmaldon}@icmc.usp.br Itana M. S. Gimenes Informatics Department State University of Maring´ a (UEM) Maring´ a-PR, Brazil Email: itana@din.uem.br Abstract—The software product line (PL) architecture (PLA) is one of the most important PL core assets as it is the abstraction of the products that can be generated, and it represents similarities and variabilities of a PL. Its quality attributes analysis and evaluation can serve as a basis for analyzing the managerial and economical values of a PL. We proposed metrics for PLA complexity and extensibility quality attributes. This paper is concerned with the empirical validation of such metrics. As a result of the experimental work we can conclude that the metrics are relevant indicators of complexity and extensibility of PLA by presenting their correlation analysis. Keywords-complexity; empirical validation; extensibility; me- trics; product line architecture; software product line. I. I NTRODUCTION In the last decades effective methodologies to evaluate software architectures, such as ATAM (Architecture Trade- off Analysis Method) and SAAM (Software Architecture Analysis Method), were proposed and consolidated by both industrial and academic segments [6]. Such a consolidation is corroborated by the analysis of the number of published research papers and technical reports providing important examples of how to carry out a software architecture evalu- ation based on quality attributes. Thus, these methodologies are essential for evaluating single-product architectures. However, in recent years, the software product line (PL) [8] engineering has emerged as a promising reusability approach, which brings out some important benefits, such as increases the reusability of its core assets, while decreases the time to market. One of the most important assets of a PL is its architecture (PLA). The PLA plays a central role at the development of products from a PL. The evaluation of a PLA must be supported by a set of metrics [7]. Such metrics must both evidence the quality of PL and serve as a basis to analyze the managerial and economical value of a PL [2]. The PLA must explicit the common (similarities) and variable (variabilities) aspects of a PL. The variability impact analysis on the PL develop- ment can determine the aggregated value of a PL for an organization. Metrics for a PLA are applied to a set of assets from which variants can be generated rather than one specific product. Thus, it is necessary to define specific PLA metrics to provide effective indicators with regard to the overall PL development and evolution. We proposed two metrics for PLA quality attributes [10]: one for complexity (CompPLA) and one for extensibility (ExtensPLA). These metrics were defined to provide an indicator of how complex and extensible is a PLA by measuring derived PL products. Complexity is measured based on McCabe’s Cyclomatic Complexity [9] while exten- sibility is measured based on the relation between abstract classes and methods over concrete classes and methods. Class extensibility is calculated taking into account the number of abstract methods divided by the total number of methods (concrete plus abstract) of a class. Thus, component extensibility is the sum of the extensibility of all classes that form a component. The metrics are presented as follows: CompPLA: is the sum of the complexity of each compo- nent of a PLA. This metric is represented as: CompPLA(PLA) = nCpt i=1 CompV arComponent(Cpt i ), where: CompVarComponent is the complexity of a PLA compo- nent. It is the sum of the complexity of each variability in class Cpt i is the i th component of a PLA nCpt is the number of variable components of a PLA (1) ExtensPLA: is the sum of the extensibility of each component of a PLA. This metric is represented as: ExtensPLA(PLA) = nCpt i=1 ExtensV arComponent(Cpt i ), where: ExtensVarComponent is the extensibility of a PLA com- ponent. It is the sum of the extensibility of each variability in class Cpt i is the i th component of a PLA nCpt is the number of variable components of a PLA (2) Variabilities are related to PLA class and/or components. Each variability is related to variation points and/or variants 2010 Fourth Brazilian Symposium on Software Components, Architectures and Reuse 978-0-7695-4259-1/10 $26.00 © 2010 IEEE DOI 10.1109/SBCARS.2010.13 31