论文部分内容阅读
随着软件产业的发展,遗产软件日益增多,软件再工程已经成为一个重要的研究领域。系统理解是软件再工程的基础,可以弄清一个程序“做什么”以及“如何做”,目前存在着许多正在使用和发展中的理解方法。 程序切片针对源程序中某个关注点把程序减少到只包含与该关注点相关的那些语句,准确地回答了哪些程序语句影响了关注点这样一个问题。程序切片可以应用于系统理解、软件度量等诸多方面。 本文首先立足于各种理解方法的本质、异同和适用场合来对这些方法进行归类研究,没有对系统理解的已有理论进行赘述,而是在阐明方法思想的基础上,强调了方法间的比较、不足之处、改进的建议和继续研究的方向,这对方法间的借鉴和多种方法的综合运用很有意义。 接下来,本文重点研究了面向对象程序切片技术。在分析现有面向对象程序切片技术存在的问题基础之上,提出了把波动效应分析和系统依赖图结合起来对面向对象程序进行切片的方法。通过波动效应分析反映面向对象程序中单元间的波动关系,基于系统依赖图切片侧重于分析控制依赖和数据依赖。分析了面向对象程序中的波动效应,把类、实例、成员方法和成员变量作为研究对象,扩展了切片粗粒度的含义,并且把波动结果映射到切片中。通过构造类图和改造传统系统依赖图构造了适合系统理解和软件度量的描述面向对象程序的系统依赖图。这样对一个面向对象程序切片,首先通过波动效应分析确定关注点波动到的范围,并把波动结果映射到切片中,然后在这个小范围内,构造系统依赖图并切片,最后取两种切片的并集为最后的切片。文中分别给出了波动效应分析、构造系统依赖图以及切片的算法实现,并进行了复杂度分析。 最后在实现面向对象程序切片方法的基础上,把程序切片和软件度量结合起来,提出了应用本文程序切片方法进行模块耦合性和类内聚性度量的方法。