软件工程导论第5版习题十三参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3、下面叙述对一个计算机辅助设计(CAD)软件的需求:
该CAD软件接受由工程师提供的二维或三维几何图形数据。

工程师通过用户界面与CAD系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。

几何图形数据及其他支持信息都保存在一个CAD数据库中。

开发必要的分析、设计模块,以产生所需要的设计结果,这些输出将显示在各种不向的图形设备上。

应该适当地设计软件,以便与外部设备交互并控制它们。

所用的外部设备包括鼠标、数字化扫描仪和激光打印机。

要求:
(1)进一步精化上述要求,把CAD软件的功能分解成若干个子功能;
(2)用代码行技术估算每个子功能的规模;
(3)用功能点技术估算每个子功能的规模;
(4)从历史数据得知,开发这类系统的平均生产率是620LOC/PM,如果软件工程师的平均月工资是8000元,请估算开发本系统的工作量和成本;
(5)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系统的工作量和成本。

答:
(1)习题中仅对需求做了粗略描述,每项需求都应该进一步扩展,以提供细节需求和定量约束。

例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征”的具体含义,以及对“CAD数据库”的规模和复杂度的具体需求。

经过对需求的进一步精化,分解出软件的下述7个主要的子功能:
·用户界面及控制机制;
·二维几何图形分析;
·三维几何图形分析;
·数据库管理;
·计算机图形显示机制;
·外部设备控制;
·设计分析模块。

(2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3个值:乐观值(即最小规模),悲观值(即最大规模)和可能值(即最可能规模)。

然后用式(10.1)所示的加权平均法计算每个子功能的规模,结果示于表l0.4。

(3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。

表l0.5给出了对5个信息域特性的估计值。

为了计算未调整的功能点数,假设每个信息域特性的复杂度都是平均级别的。

接下来估计14个技术复杂性因素的值,并且计算Dl的值,表l0.6列出了得到的结果。

然后用下式计算技术复杂性因子:
TCF = 0.654 – 0.01×DI = 1.14
最后计算功能点数:
FP = UFP×TCF = 318×1.14 = 363
(4)用代码行技术估算,开发本系统的工作量为:
E==33200/620≈54(人月)
开发本系统的成本为:
8000×54 = 432000(元)
(5)用功能点技术估算,开发本系统的工作量为:
E = 363/6.5≈56(人月)
开发本系统的成本为:
8000×56 = 448000(元)
4、假设你被指定为项目负责人,你的任务是开发一个应用系统,该系统类似于你的小组以前做过的那些系统,只不过规模更大且更复杂一些。

客户已经写出了完整的需求文档。

你将选用哪种项目组结构?为什么?你打算采用哪种软件过程模型?为什么?
答:
由于待开发的应用系统类似于以前做过的系统,开发人员已经积累了较丰富的经验,没有多少技术难题需要攻克。

为了减少通信开销,充分发挥技术骨干的作用,统一意志统一行动,提高生产率,加快开发进度,项目组的组织结构以基于主程序员组的形式为宜。

针对待开发的系统,客户已经写出了完整的需求文档,项目组又有开发类似系统的经验,因此,可以采用广大软件工程师熟悉的瀑布模型来开发本系统。

12、CMM的基本思想是什么?为什么要把能力成熟度划分成5个等级?
答:
CMM的基本思想是,由于软件危机是因我们对软件过程管理不善而引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量,提高软件生产率和软件质量的关键,是改进对软件过程的管理。

能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。

对软件过程的改进不可能一蹴而就,只能是在完成一个又一个小的改进步骤基础上不断进行的渐进过程。

因此,CMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。

这5个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机构识别出其现有的软件过程的缺陷,指出应该做哪些改进,并且帮助他们把应做的改进工作排出优先次序。

成熟度等级是妥善定义的向成熟软件机构前进途中的平台,每个成熟度等级都为软件过程的继续改进提供了一个台阶。

补充作业:假设有一项工程任务被分解成了a,b,…,i等9个子任务,表l0.3给出了完成每个子任务所需要的时间以及子任务彼此之间的依赖关系。

请用工程网络描述表l0.3中给出的信息,并且计算每个事件的最早时刻和最迟时刻。

答:
根据表l0.3中给出的信息,可以画出如上图所示的工程网络。

由于子任务a和b都不依赖于其他子任务,所以都可以从时刻零开始。

根据最早时刻和最迟时刻的算法,可以算出每个事件的最早时刻和最迟时刻,算出的值已经标在工程网络中。

为了便于对照,在图中标注的完成任务时间后面的括弧中写出了该任务的标识。

相关文档
最新文档