STMT Assignment 4
方向:计算机应用
学号:16340227
姓名:王永杰
1 计算题
1.1 计算下列代码片段的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);
- 1> 求得n1,N1,n2,N2
operator |
Number of Occurrences |
if |
1 |
dayray |
1 |
return |
1 |
< |
1 |
+= |
1 |
- |
1 |
+ |
6 |
* |
2 |
/ |
4 |
% |
1 |
n1=10,n2=19
operand |
Number of Occurences |
month |
3 |
year |
5 |
day |
1 |
3 |
1 |
12 |
1 |
1 |
1 |
26 |
1 |
10 |
1 |
4 |
1 |
6 |
1 |
100 |
1 |
400 |
1 |
7 |
1 |
n2=13,N2=19
指标 |
值 |
程序词汇表长度 Program vocabulary |
n=n1+n2 =10+13=23 |
程序长度 Program length |
N=N1+N2 =19+19=38 |
程序的预测长度 Calculated program length |
N^=n1log2n1+n2log2n2 =10⋅log210+13⋅log213 ≈33.22+48.11=81.33 |
程序体积 Volume |
V=Nlog2n =38⋅log223≈171.90 |
程序级别 Level |
L^=n12×N2n2 =102×1913≈0.136842 |
程序难度 Difficulty |
D=L^1≈7.31 |
编程工作量 Effort |
E=V×D=L^V =1902638⋅log223≈1,256.16 |
语言级别 |
L′=L^×L^×V≈0.08471 |
编程时间 hours |
T^=S×fE,S=60×60,f=18 T^≈0.019385 |
平均语句大小 |
语句数N=438=9.5 |
程序中的错误数预测值 |
B=3000V=3000Nlog2n =300038⋅log223≈0.057298 |