论文部分内容阅读
随着社会各行业的日常运营对软件的依赖与日俱增,对这些软件系统的维护工作越来越重要。同时,这些软件系统是重要的可复用资源,越来越多的软件企业关注如何更充分地重复使用这些资源。程序理解是上述软件维护和软件复用过程中的关键活动。维护和复用工作者通过分析理解目标系统的程序获取所需信息和知识,从而完成相应的各项任务。然而,程序理解活动复杂且开销大。特别是对于大型复杂系统,常常由于无法迅速准确地理解目标系统的程序而导致维护和复用的失败。
程序理解活动需要选择恰当的策略。大量研究指出,根据具体的软件维护和复用任务的需要进行有针对性的理解是高效的程序理解方式。面向特征的程序理解用于辅助一类围绕系统特征展开的软件维护和软件复用任务,是一种面向这类具体任务需要的、有针对性的程序理解方法。
目前,针对面向特征的程序理解的研究还较为初步,没有一个全面的解决方案。针对纠正和完善系统特征的维护任务,有研究人员探讨了为其提供辅助的特征定位技术。该技术关注恢复系统特征和代码实体间的追踪关系,是面向特征的程序理解需要的关键技术之一。针对复用现有系统,一些工作初步地探讨了以复用系统特征为目标来理解程序从而获取构件和构架的方案。这些研究工作表明,面向特征的程序理解模型、关键技术(特征定位)、对相应的软件维护和复用任务的具体支持方案等都还有待进一步研究。本文在现有研究的基础上进行了全面深入的探讨,旨在从上述几个方面出发,为面向特征的程序理解提出一个较为系统、全面且高效的解决方案。主要研究内容包括:
针对缺少面向特定任务的程序理解模型的现状,本文从围绕系统特征的维护和复用场景出发,分析它们的特定需要,给出一个面向特征的程序理解模型。该模型将现有模型所共有的系统代码、外部信息源、知识这三个静态元素考虑进来,并补充了维护和复用任务请求、系统特征以及特征追踪关系这三个特有的静态元素。此外,该模型给出实施面向特征的程序理解的四个阶段、每个阶段的具体活动、以及阶段间的关系。模型中六个静态元素间的依赖关系反映在面向特征的程序理解四个实施阶段的描述中。
针对特征定位,本文提出了一种静态非交互式的特征定位方法。该方法采用了信息检索技术以及针对程序静态结构信息的启发式算法,以非交互的方式获取系统特征与代码实体间的基本追踪关系。从而减轻了以往基于程序静态结构和基于程序动态剖面的特征定位方法中对人的依赖,有助于提高特征定位的效率。
基于特征和代码实体间的基本追踪关系,进一步推导出其它追踪关系对于软件维护和复用任务非常重要。最新的研究成果利用了形式化的概念分析这一应用数学技术解决该问题。本文考察了该方法在实际中的应用,指出其在处理大量数据时表现出有限的可伸缩性。作为替代方案,本文给出一组基于关系代数基本计算的算法对特征与代码间的基本追踪关系进行精化,得到特征与代码实体间的其它追踪关系。相对于应用形式化的概念分析的方法,该组算法具有更优的可伸缩性
针对现有研究对相应维护和复用任务中的具体活动支持不足的状况,本文基于特征追踪关系给出了具体的辅助支持方案。为纠正性、完善性维护任务中的变化点定位、变化影响分析、回归测试这3个具体活动给出明确的辅助方案。对复用现有系统场景下的可复用构件和构架的获取,本文给出了从特征出发的解决方案。
综上所述,本文对面向特征的程序理解模型,面向特征的程序理解的关键技术一特征定位(获取基本追踪关系以及精化基本追踪关系),支持软件维护和软件复用场景中具体活动的方案进行了研究,提出一个较为全面且高效的面向特征的程序理解的解决方案。同时,设计和开发了面向特征的程序理解支持工具,为围绕系统特征的软件维护及复用提供有力的支持。