Assessing the User-Perceived Quality of Source Code Components Using Static Analysis Metrics

Nowadays, developers tend to adopt a component-based software engineering approach, reusing own implementations and/or resorting to third-party source code. This practice is in principle cost-effective, however it may also lead to low quality software products, if the components to be reused exhibit low quality. Thus, several approaches have been developed to measure the quality of software components. Most of them, however, rely on the aid of experts for defining target quality scores and deriving metric thresholds, leading to results that are context-dependent and subjective. In this work, we build a mechanism that employs static analysis metrics extracted from GitHub projects and defines a target quality score based on repositories’ stars and forks, which indicate their adoption/acceptance by developers. Upon removing outliers with a one-class classifier, we employ Principal Feature Analysis and examine the semantics among metrics to provide an analysis on five axes for source code components (classes or packages): complexity, coupling, size, degree of inheritance, and quality of documentation. Neural networks are thus applied to estimate the final quality score given metrics from these axes. Preliminary evaluation indicates that our approach effectively estimates software quality at both class and package levels.

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

[2]  Evangelos Theodoridis,et al.  Code Quality Evaluation Methodology Using The ISO/IEC 9126 Standard , 2010, ArXiv.

[3]  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).

[4]  David Mauricio,et al.  A Review of Software Quality Models for the Evaluation of Software Products , 2014, ArXiv.

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

[6]  Themistoklis G. Diamantopoulos,et al.  User-Perceived Source Code Quality Estimation Based on Static Analysis Metrics , 2016, 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS).

[7]  Angélica Caro,et al.  A Probabilistic Approach to Web Portal's Data Quality Evaluation , 2007 .

[8]  Raed Shatnawi,et al.  Finding software metrics threshold values using ROC curves , 2010, J. Softw. Maintenance Res. Pract..

[9]  S. L. Pfleeger Workshop Defines Problems with Software-Engineering Data , 1996 .

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

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

[12]  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..

[13]  Joost Visser,et al.  A Practical Model for Measuring Maintainability , 2007, 6th International Conference on the Quality of Information and Communications Technology (QUATIC 2007).

[14]  Themistoklis G. Diamantopoulos,et al.  Towards Modeling the User-perceived Quality of Source Code using Static Analysis Metrics , 2017, ICSOFT.

[15]  Qi Tian,et al.  Feature selection using principal feature analysis , 2007, ACM Multimedia.

[16]  Xavier Blanc,et al.  Computing contextual metric thresholds , 2014, SAC.

[17]  Sanjiv Augustine,et al.  Agile Software Development: Teams , 2010, Encyclopedia of Software Engineering.

[18]  Tiago L. Alves,et al.  Deriving metric thresholds from benchmark data , 2010, 2010 IEEE International Conference on Software Maintenance.

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

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

[21]  Will Venters,et al.  Software engineering: theory and practice , 2006 .

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

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

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