软件测试(四)

// 计算下列代码片段的 Halstead 复杂度的11项内容:
if (month < 3) { 
        month += 12; 
    --year; 
}
 
return dayray((int)(day+(month+1)*26/10+year+year/4+6*(year/100)+year/400)%7); 

\(n_1\)表示程序中不同操作符的个数
\(n_2\)表示程序中不同操作数的个数
\(N_1\)表示程序中出现操作符的总数
\(N_2\)表示程序中出现操作数的总数

OperatorNumber of OccurrencesOperandNumber of OccurrencesOperandNumber of Occurrences
\(if\)1month3101
\(<\)1year541
\(+=\)1dayray161
\(--\)1day11001
\(+\)5314001
\(*\)212171
\(/\)411
\(\%\)1261
\(n_1=8\)\(N_1=16\)\(n_2=14\)\(N_2=20\)
  1. Halstead程序词汇表长度Program vocabulary: \(n=n_1+n_2=22\)
  2. Halstead程序长度或简单长度Program length:\(N=N_1+N_2=36\)
  3. 程序的预测长度:\(N\)^\(=n_1log_2n_1+n_2log_2n_2=53.5823\)
  4. 程序的容量Volumn:\(V=Nlog_2(n)=160.54\)
  5. 程序级别Level:\(L\)^=\((2/n_1) \times (n_2/N_2)=0.175\)
  6. 程序难度Difficulty:\(D=1/L\)^\(=5.714\)
  7. 编程工作量Effort:\(E=V \times D=V/L\)^=\(917.326\)
  8. 语言级别:\(L'=L\)^\(\times L\)^\(\times V=4.917\)
  9. 编程时间(hours):\(T\)^=\(E/(S \times f)=917.326 / (60 \times 60 \times 18)=0.0141h\)
  10. 平均语句大小:\(N/语句数=36/4=9\)
  11. 程序中错误数预测值:\(B=V/3000=Nlog_2(n)/3000=0.0535\)

转载于:https://www.cnblogs.com/alva112358/p/10918486.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值