关键词:
功能模块
复用
面向对象
程序切片
摘要:
在软件工程领域中,随着用户需求增大,软件规模不断扩大并且其复杂性正在逐步增加。程序切片作为一种程序分解技术,可以有效地把一个复杂的程序分割成多个部分,使得该程序便于理解、分析和复用。使用软件复用技术把程序切片所分割的部分模块重复利用到新的环境中,可以降低整个软件生产中需要的花销,在节省劳动力和物件消耗成本的同时,减少软件缺陷和软件风险的发生。为了探究软件模块的提取以及提取的软件模块是否具有可重用性,本文研究基于程序切片的软件模块提取以及提取的模块的可复用性度量技术。在程序切片方面,本文设计了面向Java程序的、基于扩展的系统依赖图以及两阶段遍历图可达性程序切片算法。从构造控制流图到添加数据依赖边和控制依赖边形成程序依赖图,再在程序依赖图的基础之上,添加过程间调用边形成表达多个过程的系统依赖图。在系统依赖图的基础之上,添加面向对象Java程序所具有的特性所反映出来的节点,对系统依赖图进行面向对象的扩充,实现了扩展的系统依赖图。面向对象程序中软件度量的重要方式主要是内聚性、耦合性和复杂性度量,群聚度直观体现了一个模块包含的代码的紧密程度,在一定程度上反映了这个模块的聚集程度,也是复杂度和内聚度的一种体现。本文基于所设计基于扩展系统依赖图的Java程序切片算法,设计了Java程序功能模块提取算法,并设计了采用群聚度、复杂度、耦合度和内聚度评价指标的功能模块可复用性度量方法。基于所设计的切片算法、功能模块提取算法和功能模块可复用性度量方法,设计和实现了一个Java程序功能模块提取和可复用性度量工具JP Function Extractor,并进行了三组实验分析。其一是从切片工具结果与源码逻辑结构的相似程度来对切片工具进行有效性分析,其二是从工程的不同版本同一功能模块以及同一版本不同功能模块这两个方面分析度量工具的有效性,其三是与其他方法比较,探讨本文所使用的切片工具的优越性体现方面。本文的独特之处在于在程序切片的基础之上研究功能模块可复用性度量问题。首先,利用程序解析技术得到Java源程序中的所有功能模块,并对功能模块进行面向对象的程序切片。其次,提出四个指标作为衡量功能模块切片结果的可复用性的度量方法。最后,根据度量结果对功能模块的可复用性进行分析。