软件复杂性(转有删减)

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

1           软件复杂性

{3[h[W"Va&Y0

1.1          软件复杂性的基本概念51Testing软件测试网 XPr AI-^(o7Z

软件复杂性度量的参数很多,主要有:51Testing软件测试网7C0d!A(Q] Z?1Q T
    (1)
规模,即总共的指令数,或源程序行数。51Testing软件测试网kDy a!i OJ9\d {.F
    (2)
难度,通常由程序中出现的操作数的数目所决定的量来表示。51Testing软件测试网z(x(v'm/z6qW
    (3)
结构,通常用于程序结构有关的度量来表示。
y#v ^2h i1K;A }0    (4)
智能度,即算法的难易程度。
@ R1{:`2rvuG0   
软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。51Testing软件测试网 \t!n8Qc hZ+|2u6u

要求复杂性度量满足以下假设:51Testing软件测试网DG-R!dj })`H
    (1)
它可以用来计算任何一个程序的复杂性。
4R]*M-UyT(h"LS4Wm0    (2)
对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算。
5`Q Dbk@@0    (3)
如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。51Testing软件测试网'k t-}n%I

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

6o5ry D$ov_-Gg0

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

Hk [g ^k'oW&m7LWJ0
                     V(G)=m-n+2p  p=1

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

2           软件可靠性51Testing软件测试网-@)ea@Z5tb

2.1          软件可靠性定义51Testing软件测试网q1n5n0tfu
   
软件可靠性定义表明了一个程序按照用户的要求和设计的目标,执行其功能的正确程度。一个可靠的程序应要求是正确的、完整的、一致的和健壮的。51Testing软件测试网&L+I)v JU0F`g%R

2.2          软件可靠性指标51Testing软件测试网 _*P j7R%m:c rRK
   
软件可靠性与可用性的定量指标,是指能够以数字概念来描述可靠性的数学表达式中所使用的量。下面主要讨论常用指标平均失效等待时间MTTF与平均失效间隔时间MTBF51Testing软件测试网3k1Y7Zxv$C
   1. MTTF
Mean Time To Failure51Testing软件测试网T\'@3z;WPk
 
平均失效等待时间MTTF定义为:51Testing软件测试网)lU4o \!w4}.H-h4B
     
1Lz7]4z^:X0   2. MTBF
Mean Time Betmeen Failure
`(d0} t.k5OCqp0   MTBF
是平均失效间隔时间,它是指两次相继失效之间的平均时间。

s#jB(V Q4BAC*~0

2.3          软件可靠性模型51Testing软件测试网:h:~_$YXn
  
软件可靠性是软件最重要的质量要素之一。
$D k&Qs#ad(Y:j)G%r0  
MTTF是机器的平均无故障时间,MTTR是错误的平均修复时间,则机器的稳定可用性可定义为:51Testing软件测试网NQZ9No7sLU
     A=MTTF/
MTTF+MTTR
hZ*vp2Pd1V)`0  
软件可靠性模型通常分为如下几类:51Testing软件测试网k+{1?"\^%M;oNLurs/b,_
   (1)
由硬件可靠性理论导出的模型。
}9aiPn{ ]|0   (2)
基于程序内部特性的模型。51Testing软件测试网Ma*P9C#z-So
   (3)
植入模型。

{K6Z9W"f6qf`(sN0

TAG: 软件测试

 

评分:0

我来说两句

Open Toolbar