关键词:
程序切片
面向对象
系统依赖图
API
软件度量
摘要:
软件度量是进行软件质量评估的有效手段。然而随着软件规模的不断扩大、软件构件的不断增加,现有的度量方法通过度量代码结构属性(如:代码复杂度等)来评估软件的质量,忽视了对软件内部组件间关联的质量评估。通过对软件内部的应用程序接口 API(Application Programming Interface)进行度量,可以了解软件系统内部组件之间的联系,从而可以更加系统地评估软件程序,使得目标软件的质量得到保障。程序切片是一种理解和分析软件程序的技术,能够在大规模代码中快速定位关注点代码,以便程序员集中精力研究关注点。本文工作利用程序切片技术对软件代码进行分析,可以从大量的代码中找出API的切片,在此基础之上完成对API的度量,可以提高度量结果的精确性。因此,本文提出了一种基于面向对象Java程序切片的API度量方法,该方法能够反映出软件整体的耦合和内聚程度,对软件整体设计情况作出评估。具体研究工作如下:首先,本文工作改进了传统切片技术中的面向对象Java系统依赖图,按照Java语言的语法规则将系统依赖图分成了三个层面的依赖图:类级别、方法级别和语句级别,并针对Java的不同语义在语句级别进行深入分析。通过对Java软件源码进行分层分析,构造粒度深入到语句内部的依赖图,可以使得切片结果更加精确,同时也缩小了切片的体积。其次,在程序切片的基础上,给出了五项API度量指标(紧密度、覆盖度、重合度、并行度、群聚度)的形式化表达,并进行了相应的度量算法设计。第三,在此基础上设计并实现了一个Java程序切片工具,能够对Java软件进行切片,并对其中的API进行度量。最后,分别进行了切片和度量实验,实验表明该方法能合理有效的反映出软件程序的内部质量属性。