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
## Viewing complete call graph
## Viewing Class metrics
Details of Training Set
Metric Values
Application | Version | Nodes | Edges | Paths | Avg-Degree | Clustering Coef | Diameter | Modularity |
---|---|---|---|---|---|---|---|---|
Antlr | antlr-4.0-complete | 1897 | 3718 | 60290 | 1.96 | 0.038 | 16 | 0.853 |
antlr-4.1-complete | 1914 | 3787 | 66850 | 1.979 | 0.038 | 16 | 0.837 | |
antlr-4.2-complete | 2075 | 3995 | 83121 | 1.925 | 0.037 | 16 | 0.848 | |
antlr-4.4-complete | 2334 | 4352 | 111242 | 1.865 | 0.037 | 16 | 0.846 | |
antlr-4.5-complete | 2596 | 4630 | 118115 | 1.784 | 0.035 | 16 | 0.86 | |
BroadleafCommerce | broadleaf-common-1.6.0-M2 | 236 | 213 | 292 | 0.903 | 0.015 | 5 | 0.943 |
broadleaf-common-2.0.0-ga | 321 | 280 | 373 | 0.872 | 0.009 | 5 | 0.959 | |
broadleaf-common-2.0.7-ga | 317 | 279 | 372 | 0.88 | 0.013 | 5 | 0.958 | |
broadleaf-common-2.4.0-GA | 377 | 333 | 488 | 0.883 | 0.013 | 5 | 0.959 | |
broadleaf-common-3.0.10-GA | 521 | 453 | 661 | 0.869 | 0.013 | 5 | 0.967 | |
broadleaf-common-3.1.0-M2-15 | 719 | 653 | 1028 | 0.908 | 0.012 | 5 | 0.962 | |
broadleaf-common-4.0.0-BETA12 | 1075 | 1042 | 1841 | 0.969 | 0.011 | 5 | 0.956 | |
broadleaf-common-4.0.0-GA | 1128 | 1102 | 1967 | 0.977 | 0.012 | 5 | 0.95 | |
Camel | camel-1.0 | 1163 | 1059 | 2348 | 0.911 | 0.01 | 9 | 0.975 |
camel-2.0 | 2038 | 1991 | 4885 | 0.977 | 0.013 | 10 | 0.97 | |
Hazelcast | hazelcast-2.1 | 2348 | 3351 | 9369 | 1.427 | 0.013 | 9 | 0.816 |
hazelcast-2.4 | 2458 | 3525 | 10560 | 1.434 | 0.014 | 11 | 0.811 | |
hazelcast-2.5.1 | 2488 | 3576 | 10962 | 4.437 | 0.013 | 11 | 0.803 | |
hazelcast-3.1.1 | 4605 | 6223 | 11274 | 1.351 | 0.009 | 7 | 0.86 | |
hazelcast-3.3-EA | 5929 | 7874 | 14933 | 1.328 | 0.008 | 6 | 0.887 | |
hazelcast-3.4-EA | 6912 | 8895 | 15561 | 1.287 | 0.007 | 6 | 0.919 | |
hazelcast-3.5-EA | 8779 | 12352 | 22720 | 1.407 | 0.007 | 10 | 0.911 | |
Ivy | ivy-2.0 | 1214 | 1833 | 11356 | 1.51 | 0.014 | 8 | 0.766 |
ivy-1.4 | 2064 | 3107 | 6896 | 1.505 | 0.015 | 8 | 0.774 | |
Lucene | lucene-2.0 | 852 | 1272 | 2613 | 1.493 | 0.022 | 7 | 0.84 |
lucene-2.2 | 1059 | 1568 | 5098 | 1.481 | 0.02 | 8 | 0.826 | |
lucene-2.4 | 1677 | 2580 | 6364 | 1.538 | 0.018 | 9 | 0.811 | |
Mapdb | mapdb-0.9.0 | 314 | 474 | 1120 | 1.51 | 0.03 | 6 | 0.783 |
mapdb-0.9.13 | 476 | 849 | 2912 | 1.784 | 0.036 | 7 | 0.784 | |
mapdb-0.9.6 | 438 | 749 | 2279 | 1.71 | 0.038 | 7 | 0.798 | |
mapdb-1.0.5 | 471 | 842 | 2893 | 1.788 | 0.036 | 7 | 0.784 | |
mapdb-1.0.7 | 471 | 843 | 2895 | 1.79 | 0.034 | 7 | 0.785 | |
mapdb-2.0-alpha3 | 421 | 831 | 3619 | 1.974 | 0.042 | 7 | 0.752 | |
mcMMO | mcMMO-1.3.09 | 12 | 10 | 12 | 0.833 | 0 | 2 | 0.535 |
mcMMO-1.3.14 | 18 | 16 | 19 | 0.889 | 0 | 2 | 0.602 | |
mcMMO-1.4.08 | 14 | 15 | 17 | 1.071 | 0.046 | 1 | 0.398 | |
mcMMO-1.5.00 | 14 | 15 | 17 | 1.071 | 0.046 | 1 | 0.398 | |
Netty | netty-3.2.4.Final | 988 | 890 | 1200 | 0.901 | 0.009 | 5 | 0.967 |
netty-3.2.5.Final | 988 | 891 | 1202 | 0.902 | 0.009 | 5 | 0.966 | |
netty-3.3.1.Final | 1141 | 999 | 1324 | 0.876 | 0.007 | 5 | 0.973 | |
netty-3.5.4.Final | 1428 | 1222 | 1741 | 0.856 | 0.006 | 5 | 0.974 | |
netty-3.9.3.Final | 1631 | 1507 | 2308 | 0.924 | 0.008 | 5 | 0.924 | |
netty-all-4.0.0.Beta2 | 2172 | 2177 | 3375 | 1.002 | 0.016 | 6 | 0.966 | |
netty-all-4.0.16.Final | 2902 | 3795 | 5473 | 1.308 | 0.011 | 5 | 0.827 | |
netty-all-4.0.7.Final | 2745 | 3553 | 5000 | 1.294 | 0.011 | 5 | 0.836 | |
Poi | poi-2.0 | 2349 | 3054 | 7463 | 1.3 | 0.014 | 7 | 0.881 |
poi-2.5 | 2907 | 3784 | 8763 | 1.302 | 0.014 | 7 | 0.896 | |
poi-3.0 | 3566 | 4896 | 13049 | 1.373 | 0.014 | 7 | 0.894 | |
Titan | titan-0.1.0 | 598 | 580 | 855 | 0.97 | 0.011 | 5 | 0.94 |
titan-core-0.2.1 | 542 | 5000 | 758 | 0.923 | 0.007 | 5 | 0.949 | |
titan-core-0.4.0 | 726 | 806 | 2491 | 1.11 | 0.011 | 6 | 0.884 | |
titan-core-0.4.4 | 873 | 950 | 2713 | 1.088 | 0.012 | 7 | 0.89 | |
titan-core-0.5.1 | 1568 | 1797 | 10794 | 1.146 | 0.015 | 12 | 0.872 | |
titan-core-0.5.4 | 1606 | 1833 | 10840 | 1.141 | 0.014 | 12 | 0.869 | |
Velocity | velocity-1.4 | 463 | 663 | 32690 | 1.432 | 0.024 | 15 | 0.813 |
velocity-1.5 | 732 | 968 | 38970 | 1.322 | 0.018 | 15 | 0.817 | |
velocity-1.6 | 751 | 1002 | 43204 | 1.334 | 0.019 | 16 | 0.823 | |
Xalan | xalan-2.4 | 1069 | 1885 | 10437 | 1.763 | 0.029 | 11 | 0.78 |
xalan-2.5 | 2193 | 3986 | 13681 | 1.818 | 0.023 | 11 | 0.79 | |
xalan-2.6 | 2391 | 4243 | 14218 | 1.775 | 0.022 | 11 | 0.8 | |
xalan-2.7 | 2445 | 4378 | 14792 | 1.791 | 0.022 | 11 | 0.805 | |
Xerces | xerces-1.2 | 1254 | 2385 | 15438 | 1.902 | 0.056 | 10 | 0.79 |
xerces-1.3 | 1346 | 2566 | 21211 | 1.906 | 0.055 | 10 | 0.787 |