Springer Nature is making SARS-CoV-2 and COVID-19 research free. View research | View latest news | Sign up for updates

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.

This is a preview of subscription content, log in to check access.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6


  1. 1.

    Baker P, Harman M, Steinhofel K, Skaliotis A (2006a) Search based approaches to component selection and prioritization for the next release problem. In: Proceedings of the 22nd IEEE international conference on software maintenance, pp 176–185

  2. 2.

    Baker P, Harman M, Steinhofel K, Skaliotis A (2006) Software component ranking as feature subset selection. Seattle, Washington

  3. 3.

    Batista L, de Souza L, Maia MA (2013) Do software categories impact coupling metrics? In: Proceedings of the 10th working conference on mining software repositories, pp 217–220

  4. 4.

    Beck K, Gamma E “JUnit: A Cook’s tour” 1998, Available at junit.sourceforge.net/doc/cookstour/cookstour.htm, Last Accessed 5 Jan 2017

  5. 5.

    Bindal D (2013) A review of markov model for estimating software reliability. Int J Adv Res Comput Sci Softw Eng 3(6):426–433

  6. 6.

    Bird C, Pattison D, D’Souza R, Fikov V, Devanbu P (2008) Latent social structure in open source projects. In: Proceedings of the 16th ACM SIGSOFT international symposium on foundations of software engineering, pp 24–35

  7. 7.

    Chung L, Cooper K (2004) Matching, ranking and selecting components: A COTS-aware requirements engineering and software architecting approach. In: Proceeding of the international workshop on models and processes for the evaluation of COTS components (MPEC’04). Edinburgh, Scotland

  8. 8.

    Gui G, Scott PD (2007) Ranking reusability of software components using coupling metrics. J Syst Softw 80(9):1450–1459

  9. 9.

    Gui G, Scott PD (2005) Vector space based on hierarchical weighting: a component ranking approach to component retrieval. Adv Parallel Process Technol Lect Notes Comput Sci 3756:184–193

  10. 10.

    Hamill P (2004) Unit test frameworks. O’Reilly, Sebastopol, pp 20–31

  11. 11.

    Hossain AL, Zhou D (2008) Measuring OSS quality through centrality. In: Proceedings of the 2008 international workshop on cooperative and human aspects of software engineering (CHASE’ 08), pp 65–68

  12. 12.

    Ichii M, Matsushita M, Inoue K (2008) An exploration of power-law in use-relation of java software systems. In: Proceedings of the 19th Australian conference on software engineering ASWEC 2008, pp 422–431

  13. 13.

    Inoue K, Yokomori R, Fujiwara H, Yomamoto T, Matsushita M, Kusumoto S (2003) Component rank: relative significance rank for software component search. In: Proceedings of the 25th international conference on software engineering ICSE’03, pp 14–24

  14. 14.

    Inoue K, Yokomori R, Fujiwara H, Yomamoto T, Matsushita M, Kusumoto S (2005) Ranking significance of software components based on use relations. IEEE Trans Softw Eng 31(3):213–225

  15. 15.

    Jia Y, Hoberock J, Garland M, Hart JC (2008) Visualization of social and other scale-free networks, Technical Report UIUCDCS-R-2008-2955, April 2008

  16. 16.

    Kas M, Carley LR, Carley KM (2013) Monitoring social centrality for peer-to-peer network protection. IEEE Commun Mag Vol.51(I. 12):pp. 155–161

  17. 17.

    Landherr B, Friedl J, Heidemann J (2010) A critical review of centrality measures in social networks. Discuss Pap WI-282 Bus Inf Syst Eng 2(6):371–385

  18. 18.

    Larman C (2005) Applying UML and patterns. Prentice Hall PTR, Upper Saddle River, p 562

  19. 19.

    Li PL, Herbsleb J, Shaw M (2005) Finding predictors of field defects for open source software systems in commonly available data sources: a case study of OpenBSD. In: Proceedings of the 11th international symposium of software metrics, pp 10–32

  20. 20.

    Lowe W, Ludwig A, Schwind A (2001) Understanding software—static and dynamic aspects. In: Proceedings of the 17th international conference on advanced science and technology

  21. 21.

    Lyon D (1999) Image Processing in Java. Prentice Hall PTR, Upper Saddle River

  22. 22.

    Mao C (2007) A quantitative approach for ranking change risk of component-based software. Comput Sci Appl ICCSA 2007 Lect Notes Comput Sci 4707:92–103

  23. 23.

    Matthews L, Richard P (2014) Who is central to a social network? It depends on your centrality measure. Available at www.activatenetworks.net/who-is-central-to-a-social-network-it-depends-on-your-centrality-measure/, Last accessed 5 Jan 2017

  24. 24.

    Mirakhorli M, Shin Y, Cleland-Huang J, Cinar M (2012) A tactic-centric approach for automating traceability of quality concerns. In: Proceedings of the 2012 international conference on software engineering. IEEE Press

  25. 25.

    Mujhid IJ, Santos JCS, Gopalakrishnan R, Mirakhorli M (2016) A search engine for finding and reusing architecturally significant code. J Syst Soft

  26. 26.

    Neuhaus S, Zimmermann T, Holler C, Zeller A (2007) Predicting vulnerable software components. In: Proceedings of the 14th ACM conference on computer and communication security (CCS ’07), pp 529–540

  27. 27.

    Nguyen THD, Adams B, Hassan AE (2010) Studying the impact of dependency network measures on software quality. In: Proceedings of the 2010 IEEE international conference on software maintenance (ICSM)

  28. 28.

    Pakhira A, Andras P (2012) Using network analysis metrics to discover functionally important methods in large-scale software systems. In: Proceedings of the 3rd international workshop on emerging trends in software metrics (WETSoM), pp 70–76

  29. 29.

    Pan W (2011) Applying complex network theory to software structure analysis. World Acad Sci Eng Technol 5(12):1634–1640

  30. 30.

    Prowell SJ (2005) Using markov chain usage modes to test complex systems. In: Proceedings of the 38th Hawaii international conference on system sciences

  31. 31.

    Sangwan RS, Ludwig RS, Neill CJ, Laplante PA (2005) Building reusable components for real-time imaging systems. J Imaging Sci Technol 49(2):154–162

  32. 32.

    Spinellis D, Szyperski C (2004) How is open source affecting software development. IEEE Softw 0740–0759

  33. 33.

    Srinivasan SM, Azadmanesh AH (2007) Exploiting markov chains to reach approximate agreement in partially connected networks. In: Proceedings of the international symposium on performance evaluation of computer and telecommunication systems (SPECTS 2007)

  34. 34.

    Valverde MS, Sole RV (2004) Hierarchical small worlds in software architecture. IEEE Trans Softw Eng

  35. 35.

    Varshosaz R Khosravi (2013) Discrete time markov chain families: modeling and verification of probabilistic software product lines. In: SPLC Workshops, ACM, pp 34–41

  36. 36.

    Whittaker JA, Poore JH (1993) Markov analysis of software specifications. ACM Trans Softw Eng Methodol 2(1):93–106

  37. 37.

    Whittaker JA, Thomason MG (1994) A Markov chain model for statistical software testing. IEEE Trans Softw Eng 20(10):812–824

  38. 38.

    Winter V, Perry J, Siy H, Srinivasan SM, Farkas B, McCoy J (2011) The tyranny of the vital few: the Pareto principle in language design. J Softw Eng Appl (JSEA) Sci Res 4:146–155

  39. 39.

    Zimmermann T, Nagappan N (2008) Predicting defects using network analysis on dependency graphs. In: Proceedings of the 30th international conference on software engineering, pp 531–540

Download references

Author information

Correspondence to Satish M. Srinivasan.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Srinivasan, S.M., Sangwan, R.S. & Neill, C.J. On the measures for ranking software components. Innovations Syst Softw Eng 13, 161–175 (2017). https://doi.org/10.1007/s11334-017-0302-5

Download citation


  • Discrete-Time Markov Chain
  • Component graphs
  • Ranking algorithm
  • Closeness centrality
  • Betweenness centrality
  • Eigenvector centrality