CNN 모델을 이용한 프로그램 코드 변경 예측
Predicting Program Code Changes Using a CNN Model
1
조회
0
다운로드
1
인용
0
참고문헌
키워드
초록
소프트웨어 시스템은 생명주기동안 기능 추가, 버그 수정, 새로운 컴퓨팅 환경 수용 등의 다양한 이유로 프로그램 코드 변경이 요구된다. 이러한 코드 수정 과정에서 새로운 오류 발생을 가져올 수 있으므로 프로그램 코드 수정 과정은 새로운 시스템 개발 못지 않게 신중하게 처리되야 한다. 또한, 오픈 소스 프로그램에 대한 재사용이 일반화된 소프트웨어 개발환경에서 오픈 소스 프로그램의 코드 변경 가능성을 예측할 수 있다면, 보다 양질의 프로그램 개발 효과를 기대할 수 있을 것이다. 본 논문은 소스 코드 변경을 예측하는 Convolutional Neural Network (CNN) 기반의 딥러닝 모델을 제안한다. 소스 코드 변경을 예측하는 문제는 딥러닝의 이진 분류 문제이며 레이블된 데이터가 요구되는 지도학습을 사용한다. 코드 예측 모델의 학습 및 시험을 위해 깃허브에서 수집한 Java 소스 코드와 코드 변경 로그를 데이터로 사용한다. 수집된 Java 소스 코드에서 소프트웨어 메트릭스를 계산한 후 제안된 코드 변경 예측 모델의 입력 데이터로 사용한다. 제안된 모델의 성능 평가를 위해 정밀도, 재현율, F1점수, 정확도가 측정되었으며 각각의 평가 지표에 있이서 CNN 모델은 95%, 다층 퍼셉트 기반의 DNN 모델은 92%를 달성했다.
Abstract
A software system is required to change during its life cycle due to various requirements such as adding functionalities, fixing bugs, and adjusting to new computing environments. Such program code modification should be considered as carefully as a new system development becase unexpected software errors could be introduced. In addition, when reusing open source programs, we can expect higher quality software if code changes of the open source program are predicted in advance. This paper proposes a Convolutional Neural Network (CNN)-based deep learning model to predict source code changes. In this paper, the prediction of code changes is considered as a kind of a binary classification problem in deep learning and labeled datasets are used for supervised learning. Java projects and code change logs are collected from GitHub for training and testing datasets. Software metrics are computed from the collected Java source code and they are used as input data for the proposed model to detect code changes. The performance of the proposed model has been measured by using evaluation metrics such as precision, recall, F1-score, and accuracy. The experimental results show the proposed CNN model has achieved 95% in terms of F1-Score and outperformed the multilayer percept-based DNN model whose F1-Score is 92%.
참고문헌 (21)
- B.W. Boehm, "Software risk management: principles and practices", IEEE Software, 8(1), pp.32~41 (1991), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
- Mikael Lindvall, "How well do experienced software developers predict software change?", Journal of Systems and Software, 43(1), pp.19~27 (1998), Elsevier BV[DOI]
- Loveleen Kaur, "A Pragmatic Framework for Predicting Change Prone Files Using Machine Learning Techniques with Java-based Software", Asia Pacific Journal of Information Systems, 30(3), pp.457~496 (2020), 한국경영정보학회[DOI]
- A. Güneş Koru, "Identifying and characterizing change-prone classes in two large-scale open-source products", Journal of Systems and Software, 80(1), pp.63~73 (2007), Elsevier BV[DOI]
- C. S. Melo, "A practical guide to support change-proneness prediction", Proceedings of the 21st International Conference on Enterprise Information Systems, pp.269~276 (2019), SciTePress
- A. D. F. Martins, "Empirical Study about Class Change Proneness Prediction using Software Metrics and Code Smells", Proceedings of the 22nd International Conference on Enterprise Information Systems, pp.140~147 (2020), SciTePress
- A. Barbez, "Deep Learning Anti-patterns from Code Metrics History", Proceedings of the 37th International Conference on Software Maintenance and Evolution, pp.114~124 (2019), IEEE
- Nakul Pritam, "Assessment of Code Smell for Predicting Class Change Proneness Using Machine Learning", IEEE Access, 7, pp.37414~37425 (2019), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
- F. Pudlitz, "Extraction of system states from natural language requirements", Proceedings of the 27th International Conference on Requirements Engineering, pp.211~222 (2019), IEEE
- Jieshan Chen, "Wireframe-based UI Design Search through Image Autoencoder", ACM Transactions on Software Engineering and Methodology, 29(3), pp.1~31 (2020), Association for Computing Machinery (ACM)[DOI]
- Yasir Hussain, "CodeGRU: Context-aware deep learning with gated recurrent unit for source code modeling", Information and Software Technology, 125, pp.106309~ (2020), Elsevier BV[DOI]
- Y. Yang, "A Survey on Deep Learning for Software Engineering", ArXiv, 2011.14597., ~ (2020)
- Tianchi Zhou, "Improving defect prediction with deep forest", Information and Software Technology, 114, pp.204~216 (2019), Elsevier BV[DOI]
- H. K. Dam, "Lessons learned from using a deep tree-based model for software defect prediction in practice", Proceedings of the 16th International Conference on Mining Software Repositories, pp.46~57 (2019), IEEE
- Ming Wen, "How Well Do Change Sequences Predict Defects? Sequence Learning from Software Changes", IEEE Transactions on Software Engineering, 46(11), pp.1155~1175 (2020), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
- M. Y. Mhawish, "Generating Code-Smell Prediction Rules Using Decision Tree Algorithm and Software Metrics", International Journal of Computer Sciences and Engineering, 7(5), pp.41~48 (2019)[DOI]
- Thirupathi Guggulothu, "Code smell detection using multi-label classification approach", Software Quality Journal, 28(3), pp.1063~1086 (2020), Springer Science and Business Media LLC[DOI]
- Mohammad Y. Mhawish, "Predicting Code Smells and Analysis of Predictions: Using Machine Learning Techniques and Software Metrics", Journal of Computer Science and Technology, 35(6), pp.1428~1445 (2020), Springer Science and Business Media LLC[DOI]
- Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric, "H. Watson", NIST, 1~114 (1996)
- V.Y. Shen, "Software Science Revisited: A Critical Analysis of the Theory and Its Empirical Support", IEEE Transactions on Software Engineering, SE-9(2), pp.155~165 (1983), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
- S.R. Chidamber, "A metrics suite for object oriented design", IEEE Transactions on Software Engineering, 20(6), pp.476~493 (1994), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
