APP下载

基于深度学习的程序理解研究进展

2019-08-01刘芳李戈胡星金芝

计算机研究与发展 2019年8期
关键词:程序深度方法

刘 芳 李 戈 胡 星 金 芝

(北京大学信息科学技术学院 北京 100871) (高可信软件技术教育部重点实验室(北京大学) 北京 100871)

程序理解(又叫软件理解)是通过对程序进行分析、抽象、推理从而获取程序中相关信息的过程,自1968年软件工程诞生起,程序理解就开始受到关注.程序理解是软件复用、维护、迁移、逆向工程等任务中的首要活动[1],其目的是通过对程序进行多方面、多层次、多角度地分析来提取程序中的相关信息.程序理解是软件工程中的一个重要部分,在整个软件维护与开发过程中起着举足轻重的作用.

早期的程序理解大多基于人为制定的启发式规则确定程序的特征,然后根据所确定的特征从程序中提取出的相关信息并进行分析,分析结果完全依赖于开发人员具备的先验知识.主要方法包括程序静态分析、动态分析等,其中,静态分析直接分析程序源代码,分析过程不需要执行程序[2];动态分析用于理解程序运行时的性质,在程序执行过程中获取其输入输出关系等[3].这些方法主要局限有3个方面:

1) 完全依赖开发人员具备的先验知识来确定需要从程序中提取什么特征;

2) 一旦软件系统过于复杂规模过大,则程序性质分析不能有效地进行,不具备可扩展性;

3) 针对不同程序分析需求,需制定特定规则进行分析,通用性较差.

深度学习是一种数据驱动的端到端的方法,它根据已有数据构建深度神经网络来挖掘数据中隐含的特征.近……

登录APP查看全文

猜你喜欢

程序深度方法
试论我国未决羁押程序的立法完善
深度观察
深度观察
深度观察
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
用对方法才能瘦
创卫暗访程序有待改进
四大方法 教你不再“坐以待病”!
捕鱼