On the measures for ranking software components

Large software systems consist of many components some of which are more significant than others. A component is deemed significant if it plays an important role and can have a significant impact on the rest of the system when modified. Identifying such core components is important since change is inevitable as a normal course of evolution in any system and core components must be designed to minimize their impact of change. Several different graph-based strategies exist for ranking software components that can be used to identify the core components within a software system. However, each ranking strategy behaves differently and most fail to pick up all of the significant core components among their top tier of highly ranked components. In this paper, we propose a component ranking approach that models the component graph of a system as a Discrete-Time Markov Chain and uses it as a basis for component ranking. Using this approach produces results that are superior to ranking strategies based on centrality measures such as closeness, betweenness and eigenvector centrality. We demonstrate the utility of the metric and compare it against existing graph-based measures, in the analysis of Kona and JUnit, two published systems with documented architectures.

[1]  Anjan Pakhira,et al.  Using network analysis metrics to discover functionally important methods in large-scale software systems , 2012, 2012 3rd International Workshop on Emerging Trends in Software Metrics (WETSoM).

[2]  Jesse H. Poore,et al.  Markov analysis of software specifications , 1993, TSEM.

[3]  Lucas Batista Leite de Souza,et al.  Do software categories impact coupling metrics? , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[4]  Chengying Mao A Quantitative Approach for Ranking Change Risk of Component-Based Software , 2007, ICCSA.

[5]  Harvey P. Siy,et al.  The Tyranny of the Vital Few: The Pareto Principle in Language Design , 2011, J. Softw. Eng. Appl..

[6]  Weifeng Pan,et al.  Applying Complex Network Theory to Software Structure Analysis , 2011 .

[7]  Ahmed E. Hassan,et al.  Studying the impact of dependency network measures on software quality , 2010, 2010 IEEE International Conference on Software Maintenance.

[8]  Paul D. Scott,et al.  Vector Space Based on Hierarchical Weighting: A Component Ranking Approach to Component Retrieval , 2005, APPT.

[9]  Mark Harman,et al.  Search Based Approaches to Component Selection and Prioritization for the Next Release Problem , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[10]  David Zhou,et al.  Measuring OSS quality trough centrality , 2008, CHASE '08.

[11]  Welf Löwe Understanding Software – Static and Dynamic Aspects , 2001 .

[12]  Lawrence Chung,et al.  COTS-Aware Requirements Engineering and Software Architecting , 2004, Software Engineering Research and Practice.

[13]  Shinji Kusumoto,et al.  Component rank: relative significance rank for software component search , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[14]  Robert S. Ludwig,et al.  Building reusable components for real-time imaging systems , 2005 .

[15]  James A. Whittaker,et al.  A Markov Chain Model for Statistical Software Testing , 1994, IEEE Trans. Software Eng..

[16]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[17]  Craig Larman,et al.  Applying UML and patterns , 1997 .

[18]  Paul Hamill Unit Test Frameworks , 2004 .

[19]  Mehdi Mirakhorli,et al.  A search engine for finding and reusing architecturally significant code , 2017, J. Syst. Softw..

[20]  Michael Garland,et al.  On the Visualization of Social and other Scale-Free Networks , 2008, IEEE Transactions on Visualization and Computer Graphics.

[21]  Jane Cleland-Huang,et al.  A tactic-centric approach for automating traceability of quality concerns , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[22]  Premkumar T. Devanbu,et al.  Latent social structure in open source projects , 2008, SIGSOFT '08/FSE-16.

[23]  Douglas A. Lyon,et al.  Image Processing in Java , 1999 .

[24]  Paul D. Scott,et al.  Ranking reusability of software components using coupling metrics , 2007, J. Syst. Softw..

[25]  Mahsa Varshosaz,et al.  Discrete time Markov chain families: modeling and verification of probabilistic software product lines , 2013, SPLC '13 Workshops.

[26]  Lawrence Chung Matching, ranking, and selecting components: a COTS-aware requirements engineering and software architecting approach , 2004, ICSE 2004.

[27]  Mary Shaw,et al.  Finding predictors of field defects for open source software systems in commonly available data sources: a case study of OpenBSD , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

[28]  D. Spinellis,et al.  How is open source affecting software development? , 2004, IEEE Software.

[29]  Shinji Kusumoto,et al.  Ranking significance of software components based on use relations , 2003, IEEE Transactions on Software Engineering.

[30]  Azad Azadmanesh,et al.  Exploiting Markov Chains to Reach Approximate Agreement in Partially Connected Networks , 2007 .

[31]  Katsuro Inoue,et al.  An Exploration of Power-Law in Use-Relation of Java Software Systems , 2008 .

[32]  Andreas Zeller,et al.  Predicting vulnerable software components , 2007, CCS '07.

[33]  Kathleen M. Carley,et al.  Monitoring social centrality for peer-to-peer network protection , 2013, IEEE Communications Magazine.

[34]  Divya Bindal,et al.  A Review of Markov Model for Estimating Software Reliability , 2013 .

[35]  Sergi Valverde,et al.  Hierarchical Small Worlds in Software Architecture , 2003 .

[36]  Stacy J. Prowell Using Markov Chain Usage Models to Test Complex Systems , 2005, Proceedings of the 38th Annual Hawaii International Conference on System Sciences.

[37]  Andrea Landherr,et al.  A Critical Review of Centrality Measures in Social Networks , 2010, Bus. Inf. Syst. Eng..