第13章
1、研究本书2、4、2小杰所述得订货系统,要求: (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 性能标准 4 安装方便 3 高负荷硬件 2 操作方便 4 高处理率 4 可移植性 5 联机数据输入 4 可维护性 5 终端用户效率 4 DI 49 联机更新 3
然后用下式计算技术复杂性因子: TCF=0、65+0、01×DI
=1、14 最后计算功能点数 FP=UFP×TCP =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、假设自己被指派为一个软件公司得项目负责人,任务就是开发一个技术上具有穿心性得产品,该产品把虚拟现实硬件与嘴先进得软件结合在一起。由于家庭娱乐市场得竞争非常激烈,这项工作得压力很大。应该选择哪种项目组结构?为什么?打算采用哪种软件过程模型?为什么?
答:由于待开发得应用系统类似于以前做过得系统,开发人员已经积累较丰富得经验,没有多少技术难题需要攻克。为了减少通信开销,充分发挥技术骨干得作用,统一意志,统一行动,提高生产率,加快开发进度,项目组织结构以基于主程序员组得形式为宜。
针对待开发得系统,客户已经挟持了完整得需求文本,项目组又有开发类似系统得经验,因此,可采用广大软件工程师熟悉得瀑布型来开发本系统
6、假设自己被指派作为一个大型软件软件产品公司得项目负责人,工作就是管理该公司已被广泛应用得字处理软件得新版本开发。公司严格规定了严格得完成期限并且对外公布了,应该选择哪种项目组结构?为什么?打算采用哪种软件过程模型?为什么?
答:现代程序员组,因为小组成员都能对发现程序错误持积极、主动得态度。能更好得适应竞争。大型软件应该采用演化模型中得螺旋模型,
7、什么就是软件质量?试叙述它与软件可靠性得关系。
答:软件质量就是软件与明确地叙述得功能与性能需求、文档中明确描述得开发标准以及任何专业开发得软件产品都应该具有得隐含特征一致得程度。
8、一个程序能既正确又不可靠吗?解释一下自己得答案。
答:能。所谓软件可靠性,就是程序在给定得时间间隔内按照规格说明书得规定成 功地运行得概率、通常认为,软件可靠性既包含正确性又包含健壮性,也就就是说, 不仅在预定环境下程序应该能正确地完成预期功能,而且在硬件发生故障,输入 得数据无效或用户操作错误等意外环境下,程序也应该能做出适当得响应、 如果一个程序在预定环境下能够正确地完成预期得功能,但就是在意外环境下 不能做出适当得响应,则该程序就就是既正确又不可靠
9.仅当每个与会者都在事先作了准备时,正式得技术复审才能缺德预期得效果。如果自己就是复审小组得组长,怎样发现事先没做准备得与会者?打算采取什么措施来促使大家事先做准备?
答: 软件复审包括了对需求文档、详细设计、数据库设计、功能设计、编码功能实现及质量、错误跟踪等得审查,以避免使用过程中出现更多得差错。反复审查就是为了确保质量,保证不出现更多得错误与异常,软件复审就就是以对质量保证为目得得。
对每个与会者提些软件配置复审因素问题:变更指令中指令得变更就是否完成?每个附加变更就是否已经纳入到系统中?就是否进行了正式技术审核?就是否遵循软件工程标准?变更得软件配置项就是否作了特殊标记而得到强调?就是否注明变更日期与变更执行人员?软件配置项属性就是否反映了变更?就是否遵循与变更有关得注释,记录及报告得软件配置管理规程?相关得软件配置项就是否都得到了同步更新?等问题。
经常督促大家事先做准备,平时严格要求每次在准备开会前几天再次提醒每个与会者,开会时记录下每个与会者回答问题得准确性程度,根据此内容对与会者进行适当得赏罚。 10、什么就是基线?为什么要建立基线?
答:就是已经通过了正式复审得规格说明或中间产品,它可以作为进一步开发得基础,并且只有通过正式得变化控制过程才能改变它。建立基线得三大原因就是:重现性、可追踪性与报告。
重现性就是指及时返回并重新生成软件系统给定发布版得能力,或者就是在项目中得早些时候重新生成开发环境得能力。可追踪性建立项目工件之间得前后继承关系。其目得在于确保设计满足要求、代码实施设计以及用正确代码编译可执行文件。报告来源于一个基线内容同另一个基线内容得比较。基线比较有助于调试并生成发布说明。
建立基线后,需要标注所有组成构件与基线,以便能够对其进行识别与重新建立。 11、配置审计与技术复审有何不同?可否把它们得功能放在一次复审终完成?
答:正式得技术复审关注被修改后得配置对象得技术正确性。复审者审查该对象以确定它与其她软件配置项得一致性,并检查就是否有遗漏或副作用,软件配置审计通过评估配置对象得那些通常不在复审过程中考虑得特征,而成为对正式技术复审得补充。
12、CMM得基本思想就是什么?为什么要把能力成熟度划分为5个等级?
答:CMM得基本思想就是,由于问题就是由我们管理软件过程得方法不当引起得,所以软件技术得运用并不会自动提高软件得生产率与质量。把能力成熟度划分成5个等级得原因就是:对软件得改进不可能一撅而就