ISSN 1000-1239 CN 11-1777/TP

Journal of Computer Research and Development ›› 2019, Vol. 56 ›› Issue (8): 1605-1620.doi: 10.7544/issn1000-1239.2019.20190185

Special Issue: 2019人工智能前沿进展专题

Previous Articles     Next Articles

Program Comprehension Based on Deep Learning

Liu Fang, Li Ge, Hu Xing, Jin Zhi   

  1. (School of Electronics Engineering and Computer Science, Peking University, Beijing 100871) (Key Laboratory of High Confidence Software Technologies (Peking University), Ministry of Education, Beijing 100871)
  • Online:2019-08-01

Abstract: Program comprehension is the process of obtaining relevant information in programs by analyzing, abstracting, and reasoning the programs. It plays an important role in software development, maintenance, migration, and other processes. It has received extensive attention in academia and industry. Traditional program comprehension relies heavily on the experience of developers. However, as the scale and complexity of software continue to grow, it is time-consuming and laborious to rely solely on the developer’s prior knowledge to extract program features, and it is difficult to fully exploit the hidden features in the program. Deep learning is a data-driven end-to-end method. It builds deep neural networks based on existing data to mine the hidden features in data, and has been successfully applied in many fields. By applying deep learning technology to program comprehension, we can automatically learn the features implied in programs, which can fully exploit the knowledge implied in the program and improve the efficiency of program comprehension. This paper surveys the research work of program comprehension based on deep learning in recent years. Firstly, we analyze the properties of the program, and then introduce mainstream program comprehension models, including sequential models, structural models, and execution traces based models. Furthermore, the applications of deep learning-based program comprehension in program analysis are introduced, which mainly focus on code completion, code summarization and code search, etc. Finally, we summarize the challenges in program comprehension research.

Key words: program comprehension, program analysis, software engineering, deep learning, data mining

CLC Number: