User-Perceived Source Code Quality Estimation Based on Static Analysis Metrics

The popularity of open source software repositories and the highly adopted paradigm of software reuse have led to the development of several tools that aspire to assess the quality of source code. However, most software quality estimation tools, even the ones using adaptable models, depend on fixed metric thresholds for defining the ground truth. In this work we argue that the popularity of software components, as perceived by developers, can be considered as an indicator of software quality. We present a generic methodology that relates quality with source code metrics and estimates the quality of software components residing in popular GitHub repositories. Our methodology employs two models: a one-class classifier, used to rule out low quality code, and a neural network, that computes a quality score for each software component. Preliminary evaluation indicates that our approach can be effective for identifying high quality software components in the context of reuse.

[1]  Roberto da Silva Bigonha,et al.  Identifying thresholds for object-oriented software metrics , 2012, J. Syst. Softw..

[2]  Witold Pedrycz,et al.  A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[3]  Taghi M. Khoshgoftaar,et al.  Unsupervised learning for expert-based software quality estimation , 2004, Eighth IEEE International Symposium on High Assurance Systems Engineering, 2004. Proceedings..

[4]  Claire Le Goues,et al.  Measuring Code Quality to Improve Specification Mining , 2012, IEEE Transactions on Software Engineering.

[5]  Hironori Washizaki,et al.  A Framework for Measuring and Evaluating Program Source Code Quality , 2007, PROFES.

[6]  Themistoklis G. Diamantopoulos,et al.  QualBoa: Reusability-aware Recommendations of Source Code Components , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[7]  Ajay Kumar,et al.  MEASURING SOFTWARE REUSABILITY USING SVM BASED CLASSIFIER APPROACH , 2011 .

[8]  Neha Goyal,et al.  Reusability Calculation of Object Oriented Software Model by Analyzing CK Metric , 2014 .

[9]  Rudolf Ferenc,et al.  A Drill-Down Approach for Measuring Maintainability at Source Code Element Level , 2013, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[10]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[11]  Shari Lawrence Pfleeger,et al.  Software Quality: The Elusive Target , 1996, IEEE Softw..

[12]  Ioannis Stamelos,et al.  The SQO-OSS Quality Model: Measurement Based Open Source Software Evaluation , 2008, OSS.

[13]  Marco Tulio Valente,et al.  On the Popularity of GitHub Applications: A Preliminary Note , 2015, ArXiv.

[14]  Michael R. Lyu,et al.  ComPARE : A Generic Quality Assessment Environment for Component-Based Software Systems , 2001 .

[15]  Fathi Taibi Empirical Analysis of the Reusability of Object-Oriented Program Code in Open-Source Software , 2014 .

[16]  Andreas Zeller,et al.  Change Bursts as Defect Predictors , 2010, 2010 IEEE 21st International Symposium on Software Reliability Engineering.

[17]  Joost Visser,et al.  Standardized code quality benchmarking for improving software maintainability , 2011, Software Quality Journal.

[18]  D. Marquardt An Algorithm for Least-Squares Estimation of Nonlinear Parameters , 1963 .