【答案解析】(4)

(5)

(6) (7)

(8)

这是一道要求读者应用数学(逻辑或概率)知识估计软件代码错误总数的计算分析题,本题的主要解答思路如下。
1)题目中已给出了关键信息“将A、B两个测试小组发现的错误数分别看成是两个独立事件”,设N为每个被测程序模块故障总数,N
A为A组检测到的错误数,P(A)为A组检测到的错误数在被测程序模块故障总数中发生的概率,N
B为B组检测到的错误数,P(B)为B组检测到的错误数在被测程序模块故障总数中发生的概率,N
AB为A、B两组发现的相同错误数,P(A∩B)为A、B两组发现的相同错误数发生的概率。根据事件A、B相互独立的充分必要条件P(A∩B)=P(A)P(B),即独立事件的Bayes概率计算公式,得:

2)根据以上计算公式,可将表8-6所提供的每个程序模块的统计数据以图8-20所示的思路进行理解,即表8-6中“两组检测相同的错误数”是指A、B两个测试小组独立发现的错误数的交集。因此可得出,每个被测程序模块故障总数N=(A组检测到的错误数N
A×B组检测到的错误数N
B)/A、B两组发现的相同错误数N
AB。

3)利月计算公式

,结合表8-6给出的前5天测试数据计算出每一个程序模块中故障总数的估算值,并计算出每一个程序模块平均每一故障所对应的代码长度,计算过程及结果见表8-10。
{{B}}表8-10
每个程序模块测试前故障总数及平均每一故障所对应的代码长度{{/B}}
|
模 块 |
本模块测试前故障总数估算 |
平均每一故障对应的代码行长度(行数) |
|
模块1 |
20×18/15=24 |
1320/24=55 |
|
模块2 |
28×30/24=35 |
1540/35=44 |
|
模块3 |
25×28/20=35 |
1820/35=52 |
|
模块4 |
32×30/24=40 |
2240/40=56 |
|
模块5 |
40×33/30=44 |
2332/44=53 |
4)接着计算出前5天平均每个故障对应的代码行行数,即

行/每个故障。
5)依题意“前5天测试的5个程序模块在NanOs程序中具有相当好的代表性”,从而推算出在正式进行测试前,NanOs程序所具有的软件错误总数,即。
6)顺便指出,由于目前所进行的仅仅是模块测试,即部件级测试,还没有考虑到集成测试和系统测试中将必然会出现的NanOs程序错误数量。可以预知总的NanOs程序错误数必然是大于600个,这是相当高的错误率。
