论文部分内容阅读
程序理解可以看作是从源码中提取系统设计概念的过程。程序理解活动贯穿整个软件生命周期,软件维护占用了大量系统成本和花费(35~80%),其中30~90%的维护工作是程序理解,包括程序维护、调试、结构重建、源码复用、程序排错、文档整理等。程序理解及相关工作已成为计算机领域发展最快的课题之一。 程序理解模式包括自上而下方式和自下而上方式以及两者的混合模式。自下而上方式是一种拼盘式方法,它从基本组件开始逐步组建上层概念,直至到达总体目标。Plan是程序段的模板,自动程序理解基本上都是基于Plan自下而上式的。这在理论上是可以实现的,但在实际应用中遇到了两大难题:库的组织方式与库空间的穷尽式搜索效率。 本文研究基于特征符号的自下而上自动程序理解模型,特征符号既被用于建立带索引、层次式Plan库,又被用作匹配项来建立粗、细两层匹配机制,并对结果进行相似性分析。采用特征符号在较大程度上提高了穷尽式搜索的检索效率,通过相似性分析又保证了以特征符号为匹配代理时的准确度。 本文的主要创新点包括: 1)提出一种基于特征符号的分层匹配算法,把匹配过程分作粗匹配和细匹配两步。粗匹配利用特征符号在整个Plan库上进行穷尽式搜索,以达到在保证查全率的前提下快速匹配到可能适配Plan的目标。细匹配在粗匹配的结果上通过增加包含更多信息的特征符号进一步匹配得到更精确的Plan集,缩小可能适配Plan集的范围。 2)提出一种基于模糊推理的相似性分析算法,在细匹配的结果上通过对适配Plan集按照与目标程序元相似程度进行排序,得到最相似Plan,达到提高分层匹配准确度的目标。 3)针对特征符号中的领域词汇单元提出一种基于信息检索的方法来自动跟踪中文文档和代码的关联,达到方便领域词汇提取的目标。