Skip to the content.

GraphEvoDef - Defect Prediction Using Deep learning with Network PortraitDivergence for Software Evolution

Understanding software evolution is essential for software development tasks, including debugging, maintenance, and testing. As a software system evolves, it grows in size and becomes more complex, hindering its comprehension. Researchers proposed several approaches for software quality analysis based on software metrics. One of the primary practices is predicting defects across software components in the code-base to improve agile product quality. While several software metrics exist, graph-based metrics have rarely been utilized in software quality. In this paper, we explore recent \textcolor{blue}{information} theory advancements to characterize software evolution and focus on aiding software visualization, metrics analysis, and defect prediction. We support our approach with an automated tool named GraphEvoDef. Particularly, GraphEvoDef aims at three-fold goals: It allows (1) to detect and visualize software evolution changes using call graphs, (2) analyze a set of metrics that can aid the software structure analysis, and (3) we recommend and utilize a set of metrics explicit for defect prediction using deep learning. In order to show the general usefulness of the approach of utilizing network divergence in software evolution, we examined 29 different open-source Java projects from GitHub and then demonstrated the proposed approach using 9 Java open-source projects with defect data from the PROMISE dataset. We then built and evaluated a defect prediction model. Our proposed technique has an 18\% reduction in the mean square error and a 48\% increase in squared correlation coefficient over the state-of-the-art approaches.

Screenshots

#Creating new project through UI ## Uploading Jar files Screenshot2 ## Viewing complete call graph Screenshot0 ## Viewing Class metrics Screenshot3

Details of Training Set

image

Metric Values

ApplicationVersionNodesEdgesPathsAvg-DegreeClustering CoefDiameterModularity
Antlrantlr-4.0-complete18973718602901.960.038160.853
 antlr-4.1-complete19143787668501.9790.038160.837
 antlr-4.2-complete20753995831211.9250.037160.848
 antlr-4.4-complete233443521112421.8650.037160.846
 antlr-4.5-complete259646301181151.7840.035160.86
BroadleafCommercebroadleaf-common-1.6.0-M22362132920.9030.01550.943
 broadleaf-common-2.0.0-ga3212803730.8720.00950.959
 broadleaf-common-2.0.7-ga3172793720.880.01350.958
 broadleaf-common-2.4.0-GA3773334880.8830.01350.959
 broadleaf-common-3.0.10-GA5214536610.8690.01350.967
 broadleaf-common-3.1.0-M2-1571965310280.9080.01250.962
 broadleaf-common-4.0.0-BETA121075104218410.9690.01150.956
 broadleaf-common-4.0.0-GA1128110219670.9770.01250.95
Camelcamel-1.01163105923480.9110.0190.975
 camel-2.02038199148850.9770.013100.97
Hazelcasthazelcast-2.12348335193691.4270.01390.816
 hazelcast-2.424583525105601.4340.014110.811
 hazelcast-2.5.124883576109624.4370.013110.803
 hazelcast-3.1.146056223112741.3510.00970.86
 hazelcast-3.3-EA59297874149331.3280.00860.887
 hazelcast-3.4-EA69128895155611.2870.00760.919
 hazelcast-3.5-EA877912352227201.4070.007100.911
Ivyivy-2.012141833113561.510.01480.766
 ivy-1.42064310768961.5050.01580.774
Lucenelucene-2.0852127226131.4930.02270.84
 lucene-2.21059156850981.4810.0280.826
 lucene-2.41677258063641.5380.01890.811
Mapdbmapdb-0.9.031447411201.510.0360.783
 mapdb-0.9.1347684929121.7840.03670.784
 mapdb-0.9.643874922791.710.03870.798
 mapdb-1.0.547184228931.7880.03670.784
 mapdb-1.0.747184328951.790.03470.785
 mapdb-2.0-alpha342183136191.9740.04270.752
mcMMOmcMMO-1.3.091210120.833020.535
 mcMMO-1.3.141816190.889020.602
 mcMMO-1.4.081415171.0710.04610.398
 mcMMO-1.5.001415171.0710.04610.398
Nettynetty-3.2.4.Final98889012000.9010.00950.967
 netty-3.2.5.Final98889112020.9020.00950.966
 netty-3.3.1.Final114199913240.8760.00750.973
 netty-3.5.4.Final1428122217410.8560.00650.974
 netty-3.9.3.Final1631150723080.9240.00850.924
 netty-all-4.0.0.Beta22172217733751.0020.01660.966
 netty-all-4.0.16.Final2902379554731.3080.01150.827
 netty-all-4.0.7.Final2745355350001.2940.01150.836
Poipoi-2.02349305474631.30.01470.881
 poi-2.52907378487631.3020.01470.896
 poi-3.035664896130491.3730.01470.894
Titantitan-0.1.05985808550.970.01150.94
 titan-core-0.2.154250007580.9230.00750.949
 titan-core-0.4.072680624911.110.01160.884
 titan-core-0.4.487395027131.0880.01270.89
 titan-core-0.5.115681797107941.1460.015120.872
 titan-core-0.5.416061833108401.1410.014120.869
Velocityvelocity-1.4463663326901.4320.024150.813
 velocity-1.5732968389701.3220.018150.817
 velocity-1.67511002432041.3340.019160.823
Xalanxalan-2.410691885104371.7630.029110.78
 xalan-2.521933986136811.8180.023110.79
 xalan-2.623914243142181.7750.022110.8
 xalan-2.724454378147921.7910.022110.805
Xercesxerces-1.212542385154381.9020.056100.79
 xerces-1.313462566212111.9060.055100.787