• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 电子设计 > 电源技术 > 电源技术 > 基于面向对象程序切片的软件度量

基于面向对象程序切片的软件度量

录入:edatop.com    点击:

1 引言
程序切片是软件工程领域的一项程序分析技术,在软件测试、度量、程序调试、维护以及逆向工程等方面有着广泛应用。通过切片技术,人们在程序分析过程中可以重点关注那些感兴趣的代码或者变量。

2 程序切片技术
这里利用面向对象程序切片技术进行软件度量。程序切片主要包括:
(1)语句切片该传统的程序切片技术是一种条件切片,根据程序的顺序、循环和选择结构进行程序切片。
(2)无定型程序切片 其不仅在保存一个程序语义投影的同时简化了程序,还可以使用任何简化的转换。而这些转换保留了该语义映射。
(3)面向对象切片 把切片技术应用于面向对象的系统相关图和过程相关图中,使对面向对象程序的代码理解、测试、调试、逆向工程和度量分析变得相对容易嘲。

3 面向对象程序切片技术
程序切片技术分面向过程和面向对象程序切片。目前程序切片大都以系统依赖图为基础,利用图的可达性算法获得。
3.1 SDG和OOSDG
系统依赖图SDG(System Dependence Graph)用一组边和顶点的集合表示一个程序。顶点表示程序的语句和控制谓词,边则表示语句之间的依赖关系。在SDG中有两类边:控制依赖边和数据依赖边。SDG是在控制流图、数据流图、控制依赖子图、数据依赖子图、过程依赖子图和程序依赖图的基础上建立的一种语法分析树,如图1所示。

面向对象依赖图OOSDG(Obiect-Orientecl System Depen-dence Graph)是过程依赖子图、类依赖子图、类层次子图、控制依赖子图、数据依赖子图和虚函数调用子图几种表示方法的并集.如图2所示。[p] [p]
程序切片的概念是在考虑各个方法、变量之间的依赖关系并在依赖图的基础上构造的。举一个简单的C++程序对上述公式进行应用,程序如下:


所定义的类是Cuboid,它有5个变量,2种方法,V_Uion={a,b,c,A,V},M_Uion={Area,Volume }。
构造面向对象依赖图,利用可达算法得到数据切片如下:


利用式(1)~(3)进行度量计算,具体过程如下:
(1)内聚度量值是一个3元组,分从属性之间、方法之间、属性和方法之间3个层面进行内聚度量;
(2)DataSliee(L,a)∩V_Uion={a};同样,DataSliee(L,b)∩V_Uion={b},DataSlice(L,c)∩V_Uion={c},进行势操作后取值均为1:
(3)DataSliee(L,V)∩V_Uion={a,b,c},DataSlice(L,A)∩V_Uion={a,b,c},进行势操作后取值均为3;
(4)DataSliee(L,A)∩DataSlice(L,V)={a,b,c},进行势操作后取值为3;
(5)根据式(4)计算得到:Cohesion(V_V)=(1+1+3+3)/4×5=2x5;
(6)DataSlie(L,Area)∩M_Uion={Area};同样,DataSliee(L,Volume)∩M_Uion={Volume},进行势操作后取值均为1。
计算得出Cohesion(M_M)=(1+1)/2x1=1。两个方法之间不存在调用、继承等关系,它们是独立的,所以内聚度为1;DataSlice(L,Area)∩DataSlice(L,Volume)∩M_Uion进行势操作后取值均为1。
计算得出Cohesion(M_V)=1/5。所以Cuboid的内聚度为一个3元组Cohesion(Cuboid)={Cohesion(V_V),Cohesion(M_M),Cohesion(M_V)}={2/5,1,1/5}。

5 结束语
利用程序切片技术,将度量粒度缩小到语句级别。而这里的度量粒度更是小到变量级别,在更小的级别上进行度量。基于程序切片的软件内聚度和耦合度度量从软件的基本粒度一变量出发,跳跃了面向过程和面向对象程序的区别,就其度量方法和公式考虑是没有局限性的,是普适的。
一个优良的内聚度度量准则应满足Briand的4个性质,即非负性及标准化、最小值和最大值、单调性、模块合并后内聚度不会增大。后续工作就是证明基于面向对象程序切片的内聚度度量方法符合Brland的4个性质。

射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...

天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...

上一篇:高功率微波脉冲对微带电路的影响
下一篇:金属端子电容器的啸叫降低作用

射频和天线工程师培训课程详情>>

  网站地图