32
基于软件网络的软件度量若干问题研究 李兵 武汉大学 2010-07-28

基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

基于软件网络的软件度量若干问题研究

李兵

武汉大学

2010-07-28

Page 2: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件度量的重要性

"没有度量就不能控制。“

——Tom Demarco

软件工程学科的基础是软件度量

系统监控

质量保证

性能分析

估计预测

Page 3: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件度量的难点

软件工程并不是建立在基本物理定量规律上的,缺乏诸如电压、重量、速度、或者温度等物理测度。需要设法获取一套间接测度方法来提供对软件质量的表示

软件度量可以帮助我们理解软件属性,衡量软件质量,但是,软件度量并没有真正的去测量软件质量,而是测量软件质量的表现,因此,仍然需要我们去分析确定所测量的指标和软件质量的准确关系

Page 4: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件结构与软件外部质量有直接的关系

从软件拓扑结构(软件网络)出发,提出软件质量度量指标

》网络是一种观念!

Page 5: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

基于加权软件网络缺陷传播分析的面向对象软件结构质量度量

研究问题之一

Page 6: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

已有方法的不足

已有从软件结构角度度量软件质量方法都假设 一个软件实体(类、文件)的错误会100%影响与其有

直接和间接关系的其它软件实体

所有的软件实体(类、文件)编写、修改的过程中引入错误的概率是相等的。

问题如下图

Bug1

Bug2

问题1:

Bug1传播至Y

Bug2不会传播至Y

问题2:

研究表明:复杂性不同,错误产生概率不同

Page 7: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件网络模型抽象

面向对象软件系统被抽象成一种加权的复杂网络——加权依赖网络,其中:软件中的实体是网络中的节点,实体之间的依赖关系抽象成有向边,方向代表依赖、被依赖关系,边上的权值是缺陷在类之间进行传播的概率

类X 类YY依赖于X

缺陷传播概率P

Page 8: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件网络模型抽象

对开源面向对象软件系统进行解析(Java字节码、c++源码),提取其中的元素,包括:属性、方法以及它们之间的联系(方法调用、方法属性交互) 加权特征(属性+方法)依赖网络 WFDN

节点代表属性和方法

边代表方法调用和方法对属性的应用

权值为1(最坏情况);

加权类依赖网络 WCDN 节点:类

边:代表加权特征依赖网络中方法间的关系

权值:错误在类间传播概率(AB:错误从B传向A)

Page 9: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件网络抽象模型

》多层次网络结构之间的关系

Page 10: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

工作流程

Page 11: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

类依赖网络边权计算(1/2)

步骤一

Page 12: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

类依赖网络边权计算(1/2)

步骤一

Page 13: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

类依赖网络边权计算(2/2)

步骤二

Page 14: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

类影响力(CI)

权值的修正多步传播问题

Page 15: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

类错误倾向指数(BPIC)

研究发现,SLOC、WMC、CBO和RFC是广泛认可地能够较好地预测一个类的错误倾向性的复杂性度量指标。提出:

(1)S LOC(Source Lines Of Code): S LOC是源代码行数. 空行和注释行都忽略.

(2)WMC(Weighted Methods per Class): WMC是一个特定类中每个方法的复杂性的总和, 本文我们采用它最简单的形式, 即设每个方法的复杂性为一个单位, 则WMC为该特定类中所包含的方法总个数.

(3)CBO(Coupling Between Object): CBO是和该特定类有耦合关系的类的总个数.

(4)RFC(Response For a Class): RFC是类中某种特定类型方法的总个数. 该种方法的定义是, 当这个类的一个对象接收到了外部的一个消息,

那些可能被执行的方法.

Page 16: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

软件结构质量(SQoS)

软件的结构质量可以定义如下:

其中: CI——类影响力

BPIC——类错误传播指数

Page 17: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

实验程序

选择了一些程序,选择两种不同的实现方式(功能相同、结构不同)

采用设计模式( design pattern )

Bridge设计模式

Decorator设计模式

不采用设计模式

Page 18: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

实验结果(1/2)

Page 19: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

实验结果(2/2)

结论:本文的方法在模型上比其它基于结构的方法更加合理

Page 20: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

发表论文

Pan WF, Li B, Ma YT et al. Measuring Structural

Quality of OO Softwares via Bug Propagation

Analysis on Weighted Software Networks. Journal

of Computer Science and Technology(JCST),

2010, 25(6).

Page 21: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

未来工作

进一步的工作

用更多的开源的软件来验证本文提出的方法(目前我们又收集了8个开源Java程序验证了本方法的有效性)

将提出的加权耦合网络模型用于软件回归测试用例排序(已取得初步成果)

进一步完善本文的模型(考虑交互的种类等)

计算类重要性时考虑PageRank等度量

Page 22: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

面向对象软件系统中类的多重依赖结构的度量分析

研究问题之二

Page 23: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

研究问题

面向对象软件系统中类的(外部)多重依赖结构对其(内部)功能的影响

波及度:类构造的代价功能的专用性

入度:类重用的程度功能的通用性

量化因子 反映了软件设计中功能的通用性与专用性的权衡关系

ripple degree in-degree

maximum in-degree and the maximum

reachable set in a graph with n nodes

Page 24: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

发现1

节点的入度和波及度呈现负相关性,而且节点的度越大,现象越明显

Page 25: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

发现2

量化指标m的出现频率呈现幂率分布

Page 26: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

发现2

真实软件系统中同时具有较大入度和较大波及度的类很少存在(5%的“少数派”现象)

Page 27: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

发现3

量化指标m与WMC有明显的正相关性

Page 28: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

发现3

量化指标m划分的类的WMC间有明显的统计差异性

p=0.0027 p<0.001

p<0.0001 p<0.0001

Page 29: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

结论

类的多重依赖结构对其功能有一定的影响

外部结构越复杂,内部功能倾向于愈强

结构复杂性是功能复杂性的必要而非充分条件

功能简单但多重依赖结构复杂的类值得关注

增加软件缺陷追踪的代价

软件缺陷传播危害的“放大器”

Page 30: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

论文发表

[1] Y.-T. Ma, K.-Q. He, B. Li, et al., “ How multiple-dependency structure of classes affects their functions: A statistical perspective,” In Proceedings of 2nd IEEE International Conference on Software Technology and Engineering (ICSTE 2010), Puerto Rico, USA, October 3-5, 2010.

[2] Y.-T. Ma, K.-Q. He, B. Li, et al., “A Hybrid Set of Complexity Metrics for Large-scale Object-oriented Software Systems,” Journal of Computer Science and Technology, 2010, 25(5).

Page 31: 基于软件网络的软件度量若干问题研究image.sciencenet.cn/olddata/kexue.com.cn/upload/... · 已有方法的不足 已有从软件结构角度度量软件质量方法都假设

研究人员

软件网络课题组研究人员 教师:李兵教授、刘婧副教授、马于涛讲师 博士生:潘伟丰、李其锋、汪北阳、黄媛、丁沂 硕士生:覃叶宜、周晓燕

基金资助 国家自然科学基金项目:基于软件网络的软件度量研

究(60873083),基于网络化数据挖掘的软件重用方法研究( 60803025 )

湖北省杰出青年人才基金,网络化软件复杂性度量及其应用研究(2008ABA358)

湖北省自然科学基金,大规模软件系统复杂性度量标度体系研究(2008ABA379)

31