单选题 某软件开发从详细设计到集成测试各阶段所需的工作量估计(按软件工程师人月数估计)如表5-1所示,这几个阶段分配的软件工程师和程序员人数如表5-2所示。假设编码与单元测试阶段,软件工程师的生产率是程序员的2倍。若在该项目的这几个阶段都增加一名软件工程师,并假定各个开发阶段串行工作,则这几个阶段可以缩短{{U}} (35) {{/U}}个月完成任务。

{{B}}表5-1 工作量估计表              表5-2 人员分配表{{/B}}

{{B}}开发阶段{{/B}}
{{B}}估计所需人月数{{/B}}
{{B}}开发阶段{{/B}}
{{B}}分组人数{{/B}}
详细设计
6
{{B}}软件工程师{{/B}}
{{B}}程序员{{/B}}
编码与单元测试
16
详细设计
2
0
集成测试
12
编码与单元测试
3
2
合计
34
集成测试
3
0

【正确答案】 B
【答案解析】
[要点解析] 由表5-1可知,编码与单元测试阶段所花费的时间大约是15个月,即1名软件工程师需要15个月的时间才能完成。根据题目的假设:该阶段软件工程师的生产率是程序员的2倍,则 1名程序员需要花费30个月才能完成。
根据表5-1和表5-2给出的数据,可得到如表5-12所示的开发时间。

{{B}}表5-12 开发信息表{{/B}}

{{B}}开发阶段{{/B}}
{{B}}估计所需人月数{{/B}}
{{B}}分组人数{{/B}}
{{B}}所需时间(月){{/B}}
{{B}}软件工程师{{/B}}
{{B}}程序员{{/B}}
详细设计
6
2
0
6/2=3
编码与单元测试
16
3
2
16/(3+1)=4
集成测试
12
3
0
12/3=4
合计
34
3+4+1=11

若按照表5-2的人员配置总共需要11个月才能完成这3个阶段的工作。若在每个阶段都增加1名软件工程,则得到如表5-13所示的开发时间。此时只需8.2个月就可以完成这3个阶段的工作,因此可以将工作缩短11-8.2=2.8个月。

{{B}}表5-13 人员配置表{{/B}}

{{B}}开发阶段{{/B}}
{{B}}估计所需人月数{{/B}}
{{B}}分组人数{{/B}}
{{B}}所需时间(月){{/B}}
{{B}}软件工程师{{/B}}
{{B}}程序员{{/B}}
详细设计
6
3
0
6/3=2
编码与单元测试
16
4
2
16/(4+1)=3.2
集成测试
12
4
0
12/4=3
合计
34
2+3.2+4=8.2