Прогнозування дефектів у програмному забезпеченні алгоритмами глибинного навчання CNN та RNN

  • Т. П. Білецький Національний університет "Львівська політехніка", м. Львів
  • Д. В. Федасюк Національний університет "Львівська політехніка", м. Львів https://orcid.org/0000-0003-3552-7454
Ключові слова: надійність ПЗ, згорткова нейронна мережа, рекурентна нейронна мережа, машинне навчання

Анотація

Досліджено процес прогнозування дефектів у програмному забезпеченні (ПЗ) з використанням алгоритмів глибинного навчання. Показано, що цей процес складається з декількох основних етапів: пошук та підготовка даних, побудова абстрактного синтаксичного дерева (АСД), обхід дерева та кодування значень вершин у цілі числа, збалансування даних, побудова та навчання нейронної мережі. З'ясовано, що застосування цього процесу прогнозування дефектів у ПЗ може пришвидшити та полегшити пошук дефектів та відповідно знизити вартість їх виправлення. Встановлено, що передові алгоритми машинного навчання, які на цей момент використовуються на етапі побудови та навчання нейронної мережі, досі є недостатньо ефективними, щоб можна було застосовувати прогнозування дефектів у комерції, демонструючи нестабільну точність 40-60 %. За результатами досліджень встановлено, що застосування алгоритмів глибинного навчання дає точніші результати, ніж інші алгоритми машинного навчання. Для зниження дисперсії та підвищення середньої точності прогнозування запропоновано новий метод прогнозування дефектів у ПЗ на підставі поєднання двох останніх модифікацій алгоритмів глибинного навчання CNN та RNN за допомогою бінарного класифікатора логістична регресія. Проведено навчання нейронної мережі на наборі даних розміром 50 000 файлів вихідного коду, отриманих з 13-ти проєктів мовою Java. За результатами досліджень виявлено, що метод CNN+RNN в середньому дає на 10-9 % вищу точність, ніж RNN та на 2 % вищу точність, ніж CNN, що доводить доцільність використання поєднання алгоритмів глибинного навчання у задачі прогнозування дефектів. Проаналізовано точність методу CNN+RNN по кожному з ПЗ проектів з набору даних, унаслідок чого виявлено, що для 11-ти з 13-ти проєктів поєднання CNN+RNN дає не меншу точність, ніж окремо взяті CNN та RNN.

Біографії авторів

Т. П. Білецький, Національний університет "Львівська політехніка", м. Львів

 магістрант, кафедра програмного забезпечення

Д. В. Федасюк, Національний університет "Львівська політехніка", м. Львів

д-р техн. наук, професор, завідувач кафедри програмного забезпечення

Посилання

Cai, Q., He, H., & Man, H. (2014). Imbalanced evolving self-organizing learning. Neurocomputing, 133, 258–270. https://doi.org/10.1016/j.neucom.2013.11.010

Cramer, J. (2003). The Origins of Logistic Regression. SSRN Electronic Journal. https://doi.org/10.2139/ssrn.360300

Fan, G., Diao, X., Yu, H., Yang, K., & Chen, L. (2019). Software Defect Prediction via Attention-Based Recurrent Neural Network. Scientific Programming, 2019, 1–14. https://doi.org/10.1155/2019/6230953

Hassan, F., Fahiem, A., & Tauseef, A. (2018). Review On Machine Learning Techniques For Software Defect Prediction. Technical Journal, 23(2), 63–71.

Krizhevsky, A., Sutskever, I., & Hinton, G. (2017). ImageNet classification with deep convolutional neural networks. Communications Of The ACM, 60(6), 84–90. https://doi.org/10.1145/3065386

Li, J., He, P., Zhu, J., & Lyu, M. (2017). Software Defect Prediction via Convolutional Neural Network. 2017 IEEE International Conference On Software Quality, Reliability And Security (QRS). https://doi.org/10.1109/qrs.2017.42

Menzies, T., Milton, Z., Turhan, B., Cukic, B., Jiang, Y., & Bener, A. (2010). Defect prediction from static code features: current results, limitations, new approaches. Automated Software Engineering, 17(4), 375–407. https://doi.org/10.1007/s10515-010-0069-5

Michael, B. (2019). Ensemble Methods. Machine Learning With Spark™ And Python®, 221–263. https://doi.org/10.1002/9781119562023.ch6

Pak, C., Wang, T., & Su, X. (2018). An Empirical Study on Software Defect Prediction Using Over-Sampling by SMOTE. International Journal Of Software Engineering And Knowledge Engineering, 28(06), 811–830. https://doi.org/10.1142/s0218194018500237

Pan, C., Lu, M., Xu, B., & Gao, H. (2019). An Improved CNN Model for Within-Project Software Defect Prediction. Applied Sciences, 9(10), 2138 p. https://doi.org/10.3390/app9102138

Perreault, L., Berardinelli, S., Izurieta, C., & Sheppard, J. (2017). Using Classifiers for Software Defect Detection. 26th International Conference on Software Engineering and Data Engineering, pp. 2–4.

Pushpavathi, T. P., Suma, V., & Ramaswamy, V. (2014). Defect Prediction in Software Projects-Using Genetic Algorithm based Fuzzy C-Means Clustering and Random Forest Classifier. International Journal of Scientific & Engineering Research, 5, 888–898.

Romi Satria, W. (2015). A Systematic Literature Review of Software Defect Prediction: Research Trends, Datasets, Methods and Frameworks. Journal of Software Engineering, 1(1), 1–16

Software Fail Watch. (2019). Tricentis. Retrieved from: https://www.tricentis.com/wp-content/uploads/2019/01/Software-Fails-Watch-5th-edition.pdf

Sonal, D., & Kaur, G. (2013). Comparative Study of the Software Metrics for the complexity and Maintainability of Software Development. International Journal of Advanced Computer Science and Applications, 4(9), 161–164. https://doi.org/10.14569/IJACSA.2013.040925

Song, Q., Guo, Y., & Shepperd, M. (2019). A Comprehensive Investigation of the Role of Imbalanced Learning for Software Defect Prediction. IEEE Transactions On Software Engineering, 45(12), 1253–1269. https://doi.org/10.1109/tse.2018.2836442

Tóth, Z., Gyimesi, P., & Rudolf, R. (2016). Bug Database of GitHub Projects. Retrieved from: http://www.inf.u-szeged.hu/~ferenc/papers/GitHubBugDataSet/

Vu, N., Adel, H., Gupta, P., & Schütze, H. (2016). Combining Recurrent and Convolutional Neural Networks for Relation Classification. Proceedings Of The 2016 Conference Of The North American Chapter Of The Association For Computational Linguistics: Human Language Technologies. https://doi.org/10.18653/v1/n16-1065

Wolpert, D. (1996). The Lack of A Priori Distinctions Between Learning Algorithms. Neural Computation, 8(7), 1341–1390. https://doi.org/10.1162/neco.1996.8.7.1341

Yamaguchi, F., Lottmann, M., & Rieck, K. (2012). Generalized vulnerability extrapolation using abstract syntax trees. Proceedings Of The 28Th Annual Computer Security Applications Conference On – ACSAC 12. https://doi.org/10.1145/2420950.2421003

Опубліковано
2021-04-29
Як цитувати
Білецький, Т. П., & Федасюк, Д. В. (2021). Прогнозування дефектів у програмному забезпеченні алгоритмами глибинного навчання CNN та RNN. Науковий вісник НЛТУ України, 31(2), 114-120. https://doi.org/10.36930/40310219
Розділ
Інформаційні технології