随着计算机软件的迅速增长,软件维护的问题越来越受到产业界和学术界的重视,而在软件维护中占有至关重要位置的程序理解也就成为了研究的焦点。单纯面向人或程序进行程序理解往往不能迅速、准确地满足维护人员的具体需要。本项目从如何更好地衔接人与程序的角度出发,提出了利用开发知识辅助进行程序理解的思路,基于开发知识自然具有衔接人和程序的特点,将更加自动地完成程序理解。在此基础上,本项目以理论研究与技术研究相结合的方式,主要研究知识驱动的程序理解模型、开发知识的获取与分析技术、代码知识的获取与分析以及开发知识与代码知识的匹配技术。基于以上模型和技术的研究,我们将完成相应的支持系统的开发,并协作完成方法和系统的应用、实验和改进工作。
程序理解在软件维护中占有至关重要位置,随着软件复杂度的不断增长,单纯面向人或程序进行程序理解越来越不能满足维护人员的具体需要。本项目从如何更好地衔接人与程序的角度出发,提出了自动地从多种信息源获取知识,辅助进行程序理解的思路。基于这一思路,本项目以理论研究与技术研究相结合的方式对以下几个方面进行了着重研究知识驱动的程序理解模型、基于有向图分析的构件辅助获取、源代码分析框架、代码知识获取框架、基于度量的缺陷检测、基于测试信息的故障定位、基于合约的测试用例选择、面向版本历史的程序理解。经过三年的研究,本项目初步建立了一个知识驱动的程序理解模型,并针对该模型中的多个技术点进行了较深入的研究,取得了较好的研究成果。本项目共发表(含已录用待发表)学术论文20篇,其中国际期刊4篇,国内期刊3篇,国际会议11篇(其中1篇为国际书籍的一章),国内会议2篇,在国际顶级期刊和会议上均有论文发表,部分成果已受到国际同行的关注和广泛引用。一名参与人员的博士学位论文2006年被评为中国计算机学会首届优秀博士学位论文。