第十三章 软件项目管理

发表于 2022-08-20 18:12:12 阅读 (52) 分类:软件工程

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个等级的原因是:对软件的改进不可能一撅而就