软件复杂性(转有删减)

上一篇 / 下一篇  2007-06-08 16:07:57 / 个人分类:软件测试

1           软件复杂性

n9Ng9B3rv3Yr0

1.1          软件复杂性的基本概念51Testing软件测试网0M3GTc/YF ];D

软件复杂性度量的参数很多,主要有:
U+b$r'x/NA0    (1)
规模,即总共的指令数,或源程序行数。
NP!B,fO0    (2)
难度,通常由程序中出现的操作数的数目所决定的量来表示。
!kH$wM@tCI#F5n:|0    (3)
结构,通常用于程序结构有关的度量来表示。51Testing软件测试网+f.y/AD P%C
    (4)
智能度,即算法的难易程度。51Testing软件测试网V Z Dq$TTFK
   
软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。

4B``/` VC+o0

要求复杂性度量满足以下假设:
P }?Kh6c\G0    (1)
它可以用来计算任何一个程序的复杂性。
ZZ"ST+P1W0    (2)
对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算。
J h3D^"|%QYP0    (3)
如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。

-P3Y!r)E6z0

1.2          McCabe度量法51Testing软件测试网5Y2EX"@/?2x5L
    McCabe
度量法是由Thomas McCabe提出的一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称环路度量。它认为程序的复杂性很大程度上取决于程序的复杂性。单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图。也就是说,把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。51Testing软件测试网!L2?NYkPo
程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作分支和循环的具体条件。因此,它往往把一个简单的IF语句与循环语句的复杂性看成是一样的,把嵌套的IF语句与CASE的复杂性看成是一样的。下面给出计算环路复杂性的方法,51Testing软件测试网3i9SnWi}t h!A

在一个强连通的有向图G中,环的个数V(G)由以下公式给出:

;\ K C6c0d&o+L0
                     V(G)=m-n+2p  p=1

其中,V(G)是有向图G中环路数,m是图G中弧数,n是图G中结点数,p是图G中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。51Testing软件测试网A&e.@&E}&NS q2L

2           软件可靠性

cW-J\)ctf"T0

2.1          软件可靠性定义51Testing软件测试网+ld#AEwwU#n
   
软件可靠性定义表明了一个程序按照用户的要求和设计的目标,执行其功能的正确程度。一个可靠的程序应要求是正确的、完整的、一致的和健壮的。

5K/n7W3Ec5j;rywL0

2.2          软件可靠性指标
`o+R+p9IL7eX zC0   
软件可靠性与可用性的定量指标,是指能够以数字概念来描述可靠性的数学表达式中所使用的量。下面主要讨论常用指标平均失效等待时间MTTF与平均失效间隔时间MTBF
+K3k4e'i!LH0   1. MTTF
Mean Time To Failure51Testing软件测试网K-^fU&Z1W9Y }
 
平均失效等待时间MTTF定义为:
&F2B7SImy0     
;uZ_+h ^0   2. MTBF
Mean Time Betmeen Failure51Testing软件测试网7X_fT&\!\7i
   MTBF
是平均失效间隔时间,它是指两次相继失效之间的平均时间。

r1Pk9y!O'g{0

2.3          软件可靠性模型
s Q A }R7B*cB0  
软件可靠性是软件最重要的质量要素之一。
9? F"XC|/fe&}mN0  
MTTF是机器的平均无故障时间,MTTR是错误的平均修复时间,则机器的稳定可用性可定义为:
!L z?gH0     A=MTTF/
MTTF+MTTR51Testing软件测试网seLsBYfY
  
软件可靠性模型通常分为如下几类:
?k%y J%^DT6v0   (1)
由硬件可靠性理论导出的模型。
,FP#|%aw(^0   (2)
基于程序内部特性的模型。51Testing软件测试网3@ a^'G\8}U0W'|;]
   (3)
植入模型。51Testing软件测试网)Ta`!Bx"Kb+X-j


TAG: 软件测试

 

评分:0

我来说两句

Open Toolbar