Should I Bug You? Identifying Domain Experts in Software Projects Using Code Complexity Metrics

In any sufficiently complex software system there are experts, having a deeper understanding of parts of the system than others. However, it is not always clear who these experts are and which particular parts of the system they can provide help with. We propose a framework to elicit the expertise of developers and recommend experts by analyzing complexity measures over time. Furthermore, teams can detect those parts of the software for which currently no, or only few experts exist and take preventive actions to keep the collective code knowledge and ownership high. We employed the developed approach at a medium-sized company. The results were evaluated with a survey, comparing the perceived and the computed expertise of developers. We show that aggregated code metrics can be used to identify experts for different software components. The identified experts were rated as acceptable candidates by developers in over 90% of all cases.

[1]  Andreas Zeller,et al.  Mining metrics to predict component failures , 2006, ICSE.

[2]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[3]  Sallie M. Henry,et al.  Software Structure Metrics Based on Information Flow , 1981, IEEE Transactions on Software Engineering.

[4]  Gail C. Murphy,et al.  Who should fix this bug? , 2006, ICSE.

[5]  Yvonne Koch,et al.  Javascript The Good Parts , 2016 .

[6]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[7]  Cem Kaner,et al.  Software Engineering Metrics: What Do They Measure and How Do We Know? , 2004 .

[8]  Rachel Harrison,et al.  An overview of object-oriented design metrics , 1997, Proceedings Eighth IEEE International Workshop on Software Technology and Engineering Practice incorporating Computer Aided Software Engineering.

[9]  Marco Tulio Valente,et al.  A novel approach for estimating Truck Factors , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[10]  Ewan D. Tempero,et al.  A systematic review of software maintainability prediction and metrics , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[11]  Alexander Serebrenik,et al.  By no means: a study on aggregating software metrics , 2011, WETSoM '11.

[12]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[13]  Dolores R. Wallace,et al.  Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric , 1996 .

[14]  Kate Ehrlich,et al.  Leveraging expertise in global software teams: Going outside boundaries , 2006, 2006 IEEE International Conference on Global Software Engineering (ICGSE'06).

[15]  Alexander Serebrenik,et al.  You can't control the unfamiliar: A study on the relations between aggregation techniques for software metrics , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[16]  Paul W. Oman,et al.  Using metrics to evaluate software system maintainability , 1994, Computer.

[17]  S. Ducasse,et al.  The Squale Quality Model Modèle enrichi d’agrégation des pratiques pour Java et C++ , 2010 .

[18]  M. H. Halstead Potential Impacts of Software Science on Software Life Cycle Management , 1977 .

[19]  Hajimu Iida,et al.  Revisiting Code Ownership and Its Relationship with Software Quality in the Scope of Modern Code Review , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[20]  H. E. Dunsmore,et al.  Software Science Revisited: A Critical Analysis of the Theory and Its Empirical Support , 1983, IEEE Transactions on Software Engineering.

[21]  Thomas Zimmermann,et al.  Mining usage expertise from version archives , 2008, MSR '08.

[22]  James D. Herbsleb,et al.  Architectures, coordination, and distance: Conway’s law and beyond , 1999 .

[23]  Thomas D. LaToza,et al.  Maintaining mental models: a study of developer work habits , 2006, ICSE.

[24]  Atul Gupta,et al.  Discovery of technical expertise from open source code repositories , 2013, WWW.

[25]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[26]  L. Sproull,et al.  Coordinating Expertise in Software Development Teams , 2000 .

[27]  Luigi Carro,et al.  On the Use of Software Quality Metrics to Improve Physical Properties of Embedded Systems , 2008, DIPES.

[28]  Mark S. Ackerman,et al.  Expertise recommender: a flexible recommendation system and architecture , 2000, CSCW '00.

[29]  Andy German,et al.  Static Code Analysis Identification of Safety-critical Software Why Use Static Code Analysis? Software Static Code Analysis Lessons Learned , 2022 .

[30]  Harald C. Gall,et al.  Don't touch my code!: examining the effects of ownership on software quality , 2011, ESEC/FSE '11.

[31]  C. Urmson,et al.  Complexity to Target Risky Modules in Autonomous Vehicle Systems , 2008 .

[32]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[33]  Martin E. Nordberg Managing Code Ownership , 2003, IEEE Softw..

[34]  Douglas Hoffman The Darker Side of Metrics , 2000 .

[35]  Xavier Blanc,et al.  Code ownership in open-source software , 2014, EASE '14.

[36]  David Lo,et al.  Learning to rank for bug report assignee recommendation , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[37]  Nicolas Anquetil,et al.  Software quality metrics aggregation in industry , 2013, J. Softw. Evol. Process..

[38]  Laurie A. Williams,et al.  Pair Programming Illuminated , 2002 .

[39]  M. E. Conway HOW DO COMMITTEES INVENT , 1967 .