Artificial intelligence (AI) 프로젝트에 널리 사용되는 Python 언어는 Interpreter 언어로 Runtime 시에 오류가 발생한다. 오류로 인한 프로젝트의 실패를 방지하기 위해서는 사전에 예외적인 상황이 발생할 수 있는 코드에 대한 예외 처리가 필요하다. 특히, 많은 리소스를 필요로 하는 AI 프로젝트에서, 오랜 실행 후 발생하는 예외는 큰 리소스 낭비를 초래한다. 하지만, 예외 처리는 개발자의 경험에 의존하기 때문에 개발자들은 잡아야 할 적절한 예외를 결정하는데 어려움을 가진다. 이러한 필요성을 해결하기 위해 기존 예외 처리문을 학습하여 개발 중에 개발자에게 잡아야 할 예외를 제안해주는 접근 방법을 제안한다. 제안 방법은 try 블록의 소스 코드를 입력으로 받아 except 블록에서 처리되어야 할 예외들을 제안해준다. 우리는 2개의 프레임워크로 구성된 대규모 프로젝트에 대해 접근 방법을 평가한다. 우리의 평가 결과에 따르면, 예외 제안을 수행할 때 평균 AUPRC는 0.92 이상을 나타낸다. 연구 결과는 제안된 방법이 비교 모델들을 능가하는 예외 제안 성능으로 개발자의 예외 처리를 지원할 수 있음을 보여준다.
Artificial intelligence (AI) 프로젝트에 널리 사용되는 Python 언어는 Interpreter 언어로 Runtime 시에 오류가 발생한다. 오류로 인한 프로젝트의 실패를 방지하기 위해서는 사전에 예외적인 상황이 발생할 수 있는 코드에 대한 예외 처리가 필요하다. 특히, 많은 리소스를 필요로 하는 AI 프로젝트에서, 오랜 실행 후 발생하는 예외는 큰 리소스 낭비를 초래한다. 하지만, 예외 처리는 개발자의 경험에 의존하기 때문에 개발자들은 잡아야 할 적절한 예외를 결정하는데 어려움을 가진다. 이러한 필요성을 해결하기 위해 기존 예외 처리문을 학습하여 개발 중에 개발자에게 잡아야 할 예외를 제안해주는 접근 방법을 제안한다. 제안 방법은 try 블록의 소스 코드를 입력으로 받아 except 블록에서 처리되어야 할 예외들을 제안해준다. 우리는 2개의 프레임워크로 구성된 대규모 프로젝트에 대해 접근 방법을 평가한다. 우리의 평가 결과에 따르면, 예외 제안을 수행할 때 평균 AUPRC는 0.92 이상을 나타낸다. 연구 결과는 제안된 방법이 비교 모델들을 능가하는 예외 제안 성능으로 개발자의 예외 처리를 지원할 수 있음을 보여준다.
The Python language widely used in artificial intelligence (AI) projects is an interpreter language, and errors occur at runtime. In order to prevent project failure due to errors, it is necessary to handle exceptions in code that can cause exceptional situations in advance. In particular, in AI pro...
The Python language widely used in artificial intelligence (AI) projects is an interpreter language, and errors occur at runtime. In order to prevent project failure due to errors, it is necessary to handle exceptions in code that can cause exceptional situations in advance. In particular, in AI projects that require a lot of resources, exceptions that occur after long execution lead to a large waste of resources. However, since exception handling depends on the developer's experience, developers have difficulty determining the appropriate exception to catch. To solve this need, we propose an approach that recommends exceptions to catch to developers during development by learning the existing exception handling statements. The proposed method receives the source code of the try block as input and recommends exceptions to be handled in the except block. We evaluate our approach for a large project consisting of two frameworks. According to our evaluation results, the average AUPRC is 0.92 or higher when performing exception recommendation. The study results show that the proposed method can support the developer's exception handling with exception recommendation performance that outperforms the comparative models.
The Python language widely used in artificial intelligence (AI) projects is an interpreter language, and errors occur at runtime. In order to prevent project failure due to errors, it is necessary to handle exceptions in code that can cause exceptional situations in advance. In particular, in AI projects that require a lot of resources, exceptions that occur after long execution lead to a large waste of resources. However, since exception handling depends on the developer's experience, developers have difficulty determining the appropriate exception to catch. To solve this need, we propose an approach that recommends exceptions to catch to developers during development by learning the existing exception handling statements. The proposed method receives the source code of the try block as input and recommends exceptions to be handled in the except block. We evaluate our approach for a large project consisting of two frameworks. According to our evaluation results, the average AUPRC is 0.92 or higher when performing exception recommendation. The study results show that the proposed method can support the developer's exception handling with exception recommendation performance that outperforms the comparative models.
우리는 개발 중인 개발자에게 처리해야 할 적절한 예외를 제안해주는 것을 목표로 한다. 우리는 이 작업을 다루기 위해 다중 분류 작업으로 예외문제를 처리한다.
이 논문에서는, 예외 처리에 대한 지원을 제공하는 예외 제안 접근 기법을 제시한다. 먼저 우리는 방대한 양의 AI 프로젝트를 수집하고 코드 저장소로부터 예외 처리와 관련된 소스 코드를 추출한다.
제안 방법
다음으로, 예외 처리문에 대해 문맥 정보를 학습하기 위한 사전 훈련 단계를 수행한다. 마지막으로, 훈련된 모델들을 통해 예외 유형을 학습하여 try 블록에 따라 처리되어야 할 예외 유형을 제안한다.
이 논문에서는, 예외 처리에 대한 지원을 제공하는 예외 제안 접근 기법을 제시한다. 먼저 우리는 방대한 양의 AI 프로젝트를 수집하고 코드 저장소로부터 예외 처리와 관련된 소스 코드를 추출한다. 다음으로, 예외 처리문에 대해 문맥 정보를 학습하기 위한 사전 훈련 단계를 수행한다.
접근 방법 평가에 사용할 데이터 셋을 수집하기 위해, 먼저 Paper With Code(https://paperswithcode.com)에서 코드와 함께 포함된 AI 관련 논문을 크롤링했다. Paper With Code는 학회 또는 저널에 등재된 AI 관련 논문, 구현 코드 URL, 데이터를 포함하는 오픈 리소스이다.
이 절에서는 하위 예외 유형 제안을 위한 접근 방법을 평가하는 실험을 수행한다. 제안된 모델이 얼마나 효과적인지 조사하고, 접근 방식이 비교 모델에 비해 얼마나 높은 성능을 달성할 수 있는지 확인한다.
대상 데이터
6%를 차지하기 때문에 해당 프로젝트에 집중한다. 실험에 사용된 샘플은 일반적인 상위 예외의 제안을 방지하기 위해, Python에서 지원하는 예외(https://docs.python.org/3/library/exceptions.html) 중 코드와 예외를 맵핑시킬 수 있는 하위 예외(Leaf Exception)를 사용한다.
표의 각 열은 첫 번째 열부터 프레임워크 종류, 논문 수, 프로젝트 수, 추출된 하위 예외 수를 나타낸다. 우리는 7개의 프레임워크로 실험된 67,576개의 논문을 수집하였으나 두(Pytorch, Tensorflow) 프레임워크로 작성된 논문이 전체의 96.6%를 차지하기 때문에 해당 프로젝트에 집중한다. 실험에 사용된 샘플은 일반적인 상위 예외의 제안을 방지하기 위해, Python에서 지원하는 예외(https://docs.
Paper With Code에서는 고품질 데이터를 보장하기 위해 커뮤니티 참여자가 데이터를 검토하고 모니터링한다. 우리는 논문 구현 코드를 포함하고 있는 AI 논문에서 Github repository URL을 추출하고, Github repository로 부터 프로젝트를 수집했다. 표 1은 연구에 사용된 프로젝트에 대한 통계를 보여준다.
접근 방법의 평가를 위해 2개의 Framework로 구성된 프로젝트를 수집했으며, 평가 결과에 따르면 Area under the average Precision-Recall curve(AUPRC)가 각각 0.95, 0.93로 비교 모델들을 능가한다. 이는 우리의 접근 방식이 예외를 지원하는데 효과적임을 보여주고, 개발자들은 실행 없이 예외를 파악하고 처리할 수 있다.
성능/효과
우리의 접근 방식은 2개의 프레임워크로 구성된 대규모 프로젝트에 대해 평가한다. 결과는 우리의 접근 방법이 비교 모델들을 큰 차이로 능가한다는 것을 보여준다. 향후 연구로는, 정확한 예외를 예측하기 위해 try 블록 앞의 소스 코드까지 고려할 수 있는 접근 방법을 연구할 계획이다.
그런 다음 예외 제안 모델의 전체 아키텍처와 접근 방법의 각 구성요소를 소개한다. 제안된 접근 방법을 통해 개발자는 작성한 소스 코드로부터 처리되어야 할 예외 유형을 제안받을 수 있다.
후속연구
결과는 우리의 접근 방법이 비교 모델들을 큰 차이로 능가한다는 것을 보여준다. 향후 연구로는, 정확한 예외를 예측하기 위해 try 블록 앞의 소스 코드까지 고려할 수 있는 접근 방법을 연구할 계획이다.
참고문헌 (21)
Do-Young Lee et al., "The effects of middle school mathematical statistics area and python programming steam instruction on problem solving ability and curriculum interest", Journal of the Korea Academia-Industrial cooperation Society, Vol. 20, No. 4, pp. 336-344, 2019. DOI: https://doi.org/10.5762/KAIS.2019.20.4.336
Kyungmin Park et al., "Exercise healthcare program using artificial intelligenmce", The Journal of KIIT, pp. 607-609, 2022.
Nguyen, Giang, et al., "Machine learning and deep learning frameworks and libraries for large-scale data mining: a survey", Artificial Intelligence Review Vol. 52. No. 1, pp. 77-124, 2019. DOI: doi.org/10.1007/s10462-018-09679-z
ASADUZZAMAN, Muhammad, et al. "How developers use exception handling in Java?", 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories, pp. 516-519, 2016. DOI: 10.1145/2901739.2903500
ZHANG, Ru, et al. "An empirical study on program failures of deep learning jobs", 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE), pp. 1159-1170, 2020. DOI: 10.1145/3377811.3380362
DE SOUZA COELHO, R., et al. "Exception handling bug hazards in Android: Results from a mining study and an exploratory survey", Empirical Software Engineering, pp. 1264-1304, 2017. DOI:doi.org/10.1007/s10664-016-9443-7
MARINESCU, C, "Should we beware the exceptions? an empirical study on the eclipse project", 2013 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing. pp. 250-257, 2013. DOI: 10.1109/SYNASC.2013.40
MONTENEGRO, Taiza. et al., "Improving developers awareness of the exception handling policy", 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering, pp. 413-422, 2018. DOI: 10.1109/SANER.2018.8330228
Barbosa, E. A., et al, "Global-aware recommendations for repairing violations in exception handling", IEEE Transactions on Software Engineering, Vol. 44, No. 9, pp. 855-873, 2018. DOI: 10.1109/TSE.2017.2716925
Rahman, M. M., & Roy, C. K., "On the use of context in recommending exception handling code examples", International Working Conference on Source Code Analysis and Manipulation, pp. 285-294, 2014. DOI: 10.1109/SCAM.2014.15
NGUYEN et al, "Code recommendation for exception handling", Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 1027-1038, 2020. DOI: doi.org/10.6084/m9.figshare.12433667.v1
ZHANG, Jian, et al. "Learning to handle exceptions",International Conference on Automated Software Engineering (ASE). pp. 29-41, 2020. DOI: dl.acm.org/doi/10.1145/3324884.3416568
Feng et al., "CodeBERT: A Pre-Trained Model for Programming and Natural Languages", In Findings of the Association for Computational Linguistics: EMNLP, pp. 1536-1547, 2020. DOI: 10.18653/v1/2020.findings-emnlp.139
LIU, Yinhan, et al. "Roberta: A robustly optimized bert pretraining approach". arXiv preprint arXiv:1907.11692, 2019.
SCHUSTER et al, "Bidirectional recurrent neural networks", IEEE transactions on Signal Processing, Vol. 45, No. 11, pp. 2673-2681, 1997. DOI: 10.1109/78.650093
KINGMA et al., "Adam: A method for stochastic optimization", International Conference on Learning Representations (ICLR), 2015.
DAVIS et al. "The relationship between Precision Recall and ROC curves", In Proceedings of the 23rd international conference on Machine learning, pp. 233-240, 2006. DOI:doi.org/10.1145/1143844.1143874
VASWANI, Ashish, et al., "Attention is all you need", Advances in neural information processing systems, Vol. 30, pp. 5998-6008, 2017.
UDDIN, Md Nasir, et al., "Software defect prediction employing BiLSTM and BERT-based semantic feature", Soft Computing, pp. 1-15, 2022. DOI: DOI:10.1007/s00500-022-06830-5
PAN, Cong et al., "An empirical study on software defect prediction using codebert model", Applied Sciences, Vol. 11, No. 11, pp. 4798, 2021. DOI: https://doi.org/10.3390/app11114793
ZHANG, Qihang et al.,"Software defect prediction via transformer", 2020 IEEE 4th Information Technology, Networking, Electronic and Automation Control Conference, pp. 874-879, 2020. DOI: 10.1109/ITNEC48623.2020.9084745
※ AI-Helper는 부적절한 답변을 할 수 있습니다.