Deep Learning-based Software Engineering: Progress, Challenges, and Opportunities
Xiangping Chen,Xing Hu,Yuan Huang,He Jiang,Weixing Ji,Yanjie Jiang,Yanyan Jiang,Bo Liu,Hui Liu,Xiaochen Li,Xiaoli Lian,Guozhu Meng,Xin Peng,Hailong Sun,Lin Shi,Bo Wang,Chong Wang,Jiayi Wang,Tiantian Wang,Jifeng Xuan,Xin Xia,Yibiao Yang,Yixin Yang,Li Zhang,Yuming Zhou,Lu Zhang
DOI: https://doi.org/10.1007/s11432-023-4127-5
2024-10-17
Abstract:Researchers have recently achieved significant advances in deep learning techniques, which in turn has substantially advanced other research disciplines, such as natural language processing, image processing, speech recognition, and software engineering. Various deep learning techniques have been successfully employed to facilitate software engineering tasks, including code generation, software refactoring, and fault localization. Many papers have also been presented in top conferences and journals, demonstrating the applications of deep learning techniques in resolving various software engineering tasks. However, although several surveys have provided overall pictures of the application of deep learning techniques in software engineering, they focus more on learning techniques, that is, what kind of deep learning techniques are employed and how deep models are trained or fine-tuned for software engineering tasks. We still lack surveys explaining the advances of subareas in software engineering driven by deep learning techniques, as well as challenges and opportunities in each subarea. To this end, in this paper, we present the first task-oriented survey on deep learning-based software engineering. It covers twelve major software engineering subareas significantly impacted by deep learning techniques. Such subareas spread out the through the whole lifecycle of software development and maintenance, including requirements engineering, software development, testing, maintenance, and developer collaboration. As we believe that deep learning may provide an opportunity to revolutionize the whole discipline of software engineering, providing one survey covering as many subareas as possible in software engineering can help future research push forward the frontier of deep learning-based software engineering more systematically.
Software Engineering