论文部分内容阅读
软件维护占用了大部分的软件系统成本和花费(35~80%),而大约有30~90%的维护开销是程序理解。程序理解及相关技术已经成为计算机科学领域发展最快的课题之一。当前程序理解的主要研究是在具体的理解工具上,我们认为同等重要的还有理解环境。理解环境为理解工具提供分布存储和计算平台,提供工具间的协作接口,工具的结果存储和检索仓库,以及对维护人员提供统一的可切换导航的视图集成。 本文从结果表示、环境以及工具方面对程序理解进行了深入的研究。 针对当前作为开发结果的代码和文档并不能保存程序理解和软件维护所需全部信息的问题。本文提出了一种复合代码的表示方法,将代码、业务逻辑、概念、文档及各种相关资料以及它们之间的联系统一保存成一个整体。复合代码保存了整个程序理解和维护生命过程需要的信息。复合代码的仓库可以作为各种程序理解工具信息交换地点和输出结果的保存地点。重用复合代码中的元素可以不但可以重用代码,而且可以重用相关设计以及文档。 程序理解就是一个形成和丰富复合代码的过程。复合代码的各个部分即相对独立又相互联系,这些部分可以由独立的Agent来生成,因此可以用多Agent系统来建构理解环境的后端。程序理解处理需要密集的计算,本文提出了APNA(Active Peer-to-peer Network Architecture)架构,利用一个机构中的计算机组成主动P2P网络,并在此基础上部署多Agent程序理解系统后端以支持计算和信息分布。 在程序理解工具方面,本文阐述了在原型系统中实现的架构生成,文档关联和概念关联工具。这三种工具在各种程序理解策略中都是不可缺少的。 软件系统架构描述软件系统的整体组织框架,各个子系统之间的逻辑功能组织及调用关系,可以成为系统程序理解的起点,也是复合代码的视图导航起点。本文提出了一种基于动态程序执行特性分析的软件架构恢复方法,对动态执行数据做FCA(Formal Concept Analysis)分析生成系统的逻辑架构视图。并为后续的概念关联过程提供初始数据。 软件系统包含各种自由格式文档,维护和跟踪文档和代码的关联将对程序理解、文档维护都有重要意义。本文提出了一种信息检索的方法来自动完成代码和中文文档的关联。代码关联的文档也为概念识别提供初始线索。 程序理解是一个渐进地从代码中识别和抽象出业务逻辑,概念和模式的过程.本文提出了一种动作概念,对象概念以及设计模式的知识表示方法,并在此基础上提出基于树匹配的对象概念关联方法。 本文的主要工作有以下几点: ·提出一种新的程序理解结果表示—复合代码。复合代码保存程序理解和软件维护整个生命过程中的信息。基于复合代码仓库,提出了一种多Agent系统程序理解环境。 ·提出了一种动作概念、对象概念、设计模式等知识的表示方法。将代码、FCA结构分析数据、概念知识库、代码关联的文档结合,提出了基于树匹配的对象概念关联算法。自动从程序代码中抽象识别概念。进而为识别动作概念提供线索。浙江大学博士学位论文 ·提出了一种主动PZP网络架构,该系统结构能灵活和充分利用一个机构中的计算机资源来完成分布式计算和存储。主动PZP网络为部署其上的程序理解多Agent环境提供了分布计算和存储支持。 ·提出一种信息检索的方法自动跟踪中文文档和代码的关联。关键词:程序理解、多Agent系统、主动网络、Peer一t。一Peer网络、知识表示、概念关联、架构恢复