论文部分内容阅读
随着软件系统越来越复杂,软件制品(包括设计文档和程序代码)关联关系的动态跟踪也变得越来越重要。设计文档与代码的正向跟踪是高效率验证软件功能实现的关键,同时也是提高软件开发效率和维护效率的重要技术手段。目前使用最广泛的技术是信息检索(Information Retrieval,IR),即构建IR模型,根据软件制品之间的文本相似性来识别跟踪链。其中,动态跟踪领域最常用的是向量空间模型。然而,不同软件制品之间词汇不匹配的问题影响了基于IR的方法性能。越来越多的研究者通过将IR技术与代码依赖关系(如方法调用)分析相结合来解决这个问题。但是,这类组合方法的性能高度依赖于IR技术跟踪链的正确性,并且不能充分利用代码依赖关系分析。此外,这类方法也没有充分考虑软件系统类型对于建立跟踪链的重要性。在管理信息系统中,其底层涉及的各种数据处理过程通常会有对应的SQL语句访问数据库,因此设计文档的功能描述通常也会关联代码中实际SQL语句。鉴于以上原因,在面向管理信息系统的设计文档到代码的动态跟踪中,本文将IR技术与代码依赖关系分析相结合,提出了综合代码依赖关系和SQL依赖关系的分析方法。本文具体研究工作如下:(1)为了获取和组织程序的代码依赖关系,本文设计和实现了一个静态分析工具,分析基于.NET WinForm平台的某港口生产业务管理系统(Port Cargo Terminal Operation System,PCTOS)的代码图DGML文件,捕获高质量的类与类的继承关系、类与方法的包含关系和方法与方法之间的调用关系。同时从获取的方法级别依赖关系中,抽象出3种类级别代码依赖关系:类调用、类继承和类使用关系。本文定义了一个新的概念:代码依赖接近度,用于衡量类之间代码依赖关系的交互程度。计算类级别代码依赖关系的接近度来构建代码接近度依赖图,通过这个依赖图来改进设计文档到代码类的候选链列表(基于IR技术生成)中类的排名。(2)由于管理信息系统中设计文档通常与代码中实际SQL语句存在着依赖关系,所以本文将设计文档的功能描述转换为预估SQL语句,并计算预估SQL语句与实际SQL语句的相似度来量化依赖关系的关联程度。本文称之为“SQL依赖接近度”。基于SQL依赖接近度,可以提升实际SQL语句所属类以及与该类有调用关系的类的IR值,从而进一步改进候选链列表中类的排名。(3)本文将上述两种“接近度”统称为“业务接近度”,并提出了一种结合IR技术与业务接近度生成设计文档到代码跟踪链的半自动化分析方法“TRIBPAnalysis”(Traceability Recovery based on Information retrieval and Business Proximity Analysis)。该方法先后通过代码依赖关系分析和SQL依赖关系分析改进候选链列表中类的排名。(4)本文设计并实现了一个基于TRIBPAnalysis分析方法的动态跟踪原型工具。使用该工具,对PCTOS系统设计文档与源代码的跟踪案例进行了实验。实验结果表明,本文提出的TRIBPAnalysis分析方法能够有效提高仅基于IR技术的跟踪结果精度。