论文部分内容阅读
软件变更管理是软件维护和软件进化中的中心环节之一,有效的变更管理可以使得软件的功能和软件的质量以一种平滑的路线同时取得进步和发展;可以很大程度上提高开发者对于软件的开发和维护过程的控制程度;可以大幅降低维护和开发的费用,并可以使得用户的利益也得到有效的保障。而这些对于一个成熟的软件产品的开发和维护都是至关重要的。
然而令人遗憾的是,直到目前为止,变更管理由于缺乏有效的自动化技术的支持而一直处于以手工为主的状态。如果是一个小型的软件系统,当需要对软件产品作出变更时,也许通过人工检查代码等方法可以基本确认该变更对系统可能造成的影响;在变更实际作出以后,也可以通过重新进行所有回归测试的方法来保证系统原有的功能的正确性。但是对于大型系统而言,由于其结构复杂,逻辑和控制关系难以理解,因此,即使再优秀的维护者也无法保证能够正确完全的了解一个变更可能对系统功能所产生的影响。而且对于大型系统而言,进行完全的回归测试是一件费时、费力的工作。因此如果每次变更都需要进行全面的回归测试,这种代价是不能容忍的。
软件变更冲击分析是一种可以在对软件作出变更前,预估变更可能对系统造成的影响;或者在作出实际变更后,确定软件的哪些部分可能受到了影响的技术。它可以用于计算一个将要作出或者已经作出的变更所需要的代价——即系统的哪些部分可能受到影响,以及对该变更进行测试的范围和代价是多大。通过将变更冲击分析应用在变更管理之中,不仅可以消除手工变更管理所带来的成本高、效率和可靠性低的问题,更重要的是可以为变更管理提供一个科学的、可依赖的度量基础,从而直接保证了软件开发过程和软件质量的可控性。
变更冲击分析技术的概念最早在上个世纪90年代被明确的提出,迄今为止,已经产生了一系列的用于各种条件下变更冲击分析的技术和工具。本文在介绍和分析现有变更冲击分析的基础之上,尝试为软件变更冲击分析的一些基本概念,如变更和冲击等提出明确的定义和分类。并基于严格的、形式化的软件依赖理论,给出了在面向过程语言和面向对象语言这两种基本环境下实现冲击分析的基本算法。在实现方面,本文提出了在现有的程序信息模型的基础之上建立变更冲击分析系统的方法。通过这些工作,分别从理论和实践两方面为实现有效的变更冲击分析建立一个基本的框架和进一步发展的基础。