软件工程导论第六版 张海藩 牟永敏课后习题答案 下载本文

背的部分。然后重构有问题的代码(此项可以工作可自动化进行)。最后,复审和测试生成的重构代码(以保证没有引入异常)并更新代码文档。

三: 答:对储蓄系统:一般大型软件的维护成本远远高于开发成本若干倍,所以在设计时就应该考虑到软件维护成本,而且在开发过程中应该使用标准的程序设计语言和标准的操作系统接口,可以大大提高软件的可维护性,也可以减少软件存在的错误;

对机票预订系统:往往人一多系统瘫痪几率就大,在开发人员不在场的情况下,很容易出现系统错误,维护软件也是很困难的,也会给很多人带来不便,所以,在设计过程中应该严格科学的管理规划还有合理设计模块,是各个模块的独立性越高,这样对软件的改进越方便,也便于快速纠错;

对患者监护系统:应该要考虑它的完善性和预防性,要能满足用户在使用过程中的增加和修改工作,还要为了改善未来的可维护性或可靠性而修改软件。更要考虑系统数据的隐秘及安全,随时备份。

第13章

1

(1)用代码行技术估算本系统的规模; (2)用功能点技术估算本系统的规模;

(3)用静态单变量模型估算开发本系统所需的工作量; (4)假设由一个人开发本系统,试制定进度计划;

(5)假设由两个人开发本系统,试制定进度计划;(不会做) 2.研究本书习题2第2题中描述的储蓄系统,要求: (1)用代码行技术估算本系统的规模; (2)用功能点技术估算本系统的规模;

(3)用静态单变量模型估算开发本系统所需的工作量; (4)假设由一个人开发本系统,试制定进度计划;

(5)假设由两个人开发本系统,试制定进度计划;(不会做)

3.下面叙述对一个计算机辅助设计(CAD)软件的需求:该CAD软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与CAD系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。几何图形数据及其他支持信息都保存在一个CAD数据库中。开发必要的分析、设计模块,以产生所需要的设计结果,这些输出将显示在各种不同的图形设备上。应该适当地设计软件,

以便与外部设备交互并控制它们。所用的外部设备包括鼠标、数字化扫描仪和激光打印机。要求:

(1)进一步精化上述要求,把CAD软件的功能分解成若干个子功能; (2)用代码行技术估算每个子功能的规模; (3)用功能点技术估算每个子功能的规模;

(4)从历史数据得知,开发这类系统的平均生产率是620LOC/PM,如果软件工程师的平均月工资是8000元,请估算开发本系统的工作量和成本。 (5)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系统的工作量和成本

答: (1)习题中仅对需求做出了粗略描述,每项都都应该进一步扩展,以提供细节需求和定量约束。例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征”的具体含义,以及对“CAD数据库”的规模和复杂度的具体需求。

经过对需求的进一步精化,分解出软件的下述7 个主要的子功能: ? 用户界面及控制机制; ? 二维几何图形分析; ? 三维几何图形分析; ? 数据库管理;

? 计算机图形显示机制; ? 外部设备控制; ? 设计分析模块。 (2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3 个值:乐观值(即最小规模a),悲观值(即最大规模b)和可能值(即最可能规模m)。分别算出这3种规模的平均值,然后用下式的加权平均法计算每个子功能规模,结果示于表10.4

表10.4 代码行技术的估算表

功能 乐观值 可能值 悲观值 估计值 用户界面及控制机制 1500 2200 3500 2300 二维几何图形分析 3800 5400 6400 5300 三维几何图形分析 4600 6900 8600 6800 数据库管理 1850 3200 5450 3350 计算机图形显示机制 3100 4900 7000 4950 外部设备控制 1400 2150 2600 2100 设计分析模块 6200 8500 10200 8400 估算出的总代码行数 33200 (3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。表10.5给出了对5个信息域特征的估计值。为了计算未调整的功能点数,假设每个信息域都是平均级的。

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

表10.5 估算调整的功能点数

功能 乐观值 可能值 悲观值 估计值 特性系数 UFP数

输入数 20 24 30 24 4 96

输出数 12 15 22 16 5 80

查询数 16 22 28 2 4 88

文件数 4 4 5 4 10 10

外部接口数 2 2 3 2 7 14

总计

值 38

表10.6 估算复杂性因素

因 素 估计值 因 值

数据通信 2 复杂的计算 5 分布式数据处理 0 可重用性性能标准 4 安装方便高负荷硬件 2 操作方便高处理率 4 可移植性联机数据输入 4 可维护性 5 终端用户效率 4 DI 49 联机更新 3 然后用下式计算技术复杂性因子:

TCF=0.65+0.01×DI =1.14 最后计算功能点数

FP=UFP×TCP

素 数

估计 4 3 4 5 =31×1.14 =363

(4) 用代码行估算,开发本系统的工件量为 E=33200/620 ≈54(人月) 开发本系统的成本为

8000×54=432000(元) (5) 用功能点技术估算,开发本系统的工作量为 E=363/6.5 ≈56(人月) 开发本系统的成本为

8000×56=448000(元)

4.假设自己被指定为项目负责人,任务是开发一个应用系统,该系统类似于自己的小组以前做过的那些系统,但是规模更大且更复杂一些。客户已经写出了完整的需求文档。应选用哪些项目组结构?为什么?打算采用哪种(些)软件过程模型?为什么?

答:根据上述,应该主程序员组的项目组结构。因为项目小组已经开发过类似的系统,开发人员已经具备了一定的经验。这个时候开发过程遇到的难题不会很多,所以应该减少通信开销,充分发挥技术骨干的作用,统一意志统一行动,提高生产率,加快开发进度。 应该采用“已定义级”的软件过程模型。因为客户已经写出了完整的需求文档,而且项

3 / 3 目小组已经有过类似的开发经验。软件过程已经文档化和标准化。这种过程模型是基于在软件机构中对已定义的过程模型的活动、人员和职责都有共同的理解。

5.假设自己被指派为一个软件公司的项目负责人,任务是开发一个技术上具有穿心性的产品,该产品把虚拟现实硬件和嘴先进的软件结合在一起。由于家庭娱乐市场的竞争非常激烈,这项工作的压力很大。应该选择哪种项目组结构?为什么?打算采用哪种软件过程模型?为什么?

答:由于待开发的应用系统类似于以前做过的系统,开发人员已经积累较丰富的经验,没有多少技术难题需要攻克。为了减少通信开销,充分发挥技术骨干的作用,统一意志,统一行动,提高生产率,加快开发进度,项目组织结构以基于主程序员组的形式为宜。

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