Using Network Analysis for Recommendation of Central Software Classes

As a new developer, getting to know a large unknown software system is a challenging task. If experienced developers are available, they can suggest which classes to read first, helping new developers to quickly grasp the system's most fundamental concepts. In practice, however, experienced developers often are no longer available. In these cases, the set of most important classes must be reverse engineered. This paper presents a thorough analysis of using different network analysis metrics on dependency graphs to retrieve central classes. An empirical study on four open source projects evaluates the results based on a survey among the systems' core developers. It demonstrates that the algorithmic results can compete with the suggestions of experienced developers.

[1]  George G. Robertson,et al.  Visual analysis of importance and grouping in software dependency graphs , 2008, SOFTVIS.

[2]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[3]  Jorge Ressia,et al.  Ranking Software Artifacts , 2010 .

[4]  Ulrik Brandes,et al.  Networks Evolving Step by Step: Statistical Analysis of Dyadic Event Data , 2009, 2009 International Conference on Advances in Social Network Analysis and Mining.

[5]  Richard M. Karp,et al.  Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems , 1972, Combinatorial Optimization.

[6]  Padhraic Smyth,et al.  Algorithms for estimating relative importance in networks , 2003, KDD '03.

[7]  Gail C. Murphy,et al.  Hipikat: recommending pertinent software development artifacts , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[8]  Ulrik Brandes,et al.  Network Analysis: Methodological Foundations , 2010 .

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

[10]  Janice Singer,et al.  NavTracks: supporting navigation in software maintenance , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[11]  Michalis Faloutsos,et al.  Graph-based analysis and prediction for software evolution , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[12]  Giuliano Antoniol,et al.  Not all classes are created equal: toward a recommendation system for focusing testing , 2008, RSSE '08.

[13]  Sergey Brin,et al.  The Anatomy of a Large-Scale Hypertextual Web Search Engine , 1998, Comput. Networks.

[14]  Rajeev Motwani,et al.  The PageRank Citation Ranking : Bringing Order to the Web , 1999, WWW 1999.

[15]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.