项目开发计划中的软件估计规程

第一章 简介

1.1 目的
本文档的目的是为了描述对软件产品的规模、工作量、成本、关键计算机资源和进度等进行估计,描述了估计的步骤和过程。
1.2 适用范围
本文档适用于公司的所有软件项目。
1.3 术语表
无。
1.4 参考资料
无。


第二章 总体描述

2.1 概述
  每一个项目都要进行估计,并将估计的结果作为项目计划的基础。估计是项目计划的核心。目的是为项目建立合理的预算,确定合适水平的员工,并为项目承诺提供基础。一个没有建立在合理估计基础上的计划会提供一种错误的安全感,可能比根本没有计划更糟。
  估计的内容通常包括:规模、工作量/成本、外部成本、关键计算机资源、管理储备、进度表等。
  估计和计划贯穿了整个项目。在项目的早期阶段,使用自上而下(top_down)的方式进行粗略的估计和制定进度表。随着项目的进展,在每个详细的计划阶段,使用自下而上(bottom_up)的方法为子阶段进行更详细的计划。下一阶段的底层WBS元素必须定义,并在WBS中进行记录。先对WBS的底层元素进行估计,然后汇总到较高层,用来更新总的软件估计。

  本文提供了几个估计方法及相关过程,它们主要应用于公司的软件项目规模、工作量及成本、关键计算机资源等的估计。如果这些估计方法不适用于特定的项目,项目经理必须为该项目提出另外的估计方法。

2.2 参与人员
• 项目经理:组织召开估计会议,进行软件估计。
• 软件工程组:在项目经理组织下,共同完成项目的各项估计。
• 相关人员:主要是指对本项目情况较熟悉的人员。
• SCM人员:在项目经理组织下,完成SCM工作的估计。
• SQA人员:在项目经理组织下,完成SQA工作的估计。
2.3 入口准则
• 《WBS》已完成
• 《风险管理计划》已完成
2.4 输入
• 《软件需求规格说明书》
• 《WBS》
• 《风险管理计划》
2.5 出口准则
• 估计活动完成。
• 估计结果通过评审。
2.6 输出
• 《软件估计书》
2.7 资源和能力要求
  项目经理、项目成员具有类似产品开发的经验。
2.8 度量
  项目经理进行以下统计:
• 软件估计所花费的工时;
• 实际结果和软件估计结果的偏差(项目结束时统计计算)。


第三章 活动与规程

3.1 估计软件规模
  规模估计的目的是为了判断待开发软件产品的规模,规模是成本估计、进度估计的基础,为了估计成本和进度,所以必须进行规模估计。WBS是软件规模估计的基础。
  我们常用的估计整个软件产品的规模的单位是:
• 功能点(FP)。
• 代码行(LOC)。
• 其它:如交易数量、表数量等。

  有时需要估计个别软件工作产品的规模,一般采用以下单位:
• 页:用于估计技术文档规模。
• 字数:用于估计技术文档规模。
• 测试用例的个数:用于估计测试规模。

  规模度量单位的选用参照《软件规模度量单位选用规程》,且必须记录在《软件开发计划》中。
  估计软件产品的规模主要依靠过去相关的经验,估计人员应当具有相似系统的开发经验,利用自上而下(top-down)或者自下而上(bottom-up)方式进行软件规模的估计。具体步骤如下:
1.将软件工作产品拆分成能实现精确估计的较小部分。
2.分析软件产品的WBS。
3.选择合适的度量单位。
4.选择估计方法,结合选择的技术解决方案(开发工具、语言、平台等),对WBS中的产品功能进行估计。
5.估计结果可能是一个最高值和最低值的范围偏差
6.使用适当的历史数据验证估计结果。
7.在项目策划过程中,评审和修正有关软件规模估计的问题,对软件产品的估计达成一致。
8.将规模估计的结果记录到《软件估计书》中。

3.2 估计各阶段缺陷数量
  具体估计方法和步骤参见《缺陷管理规程》。

3.3 估计难度等级
  估计人员估计任务的难度等级,可以根据以下几个方面:
• 数据通讯(Data Communications)
• 分布式数据处理(Distributed Data Processing)
• 性能(Performance)
• 使用强度高的配置(Heavily Used Configuration)
• 交易速度(Transaction Rate)
• 在线数据输入(Online Data Entry)
• 最终用户的效率(End-User Efficiency)
• 在线更新(Online Update)
• 复杂的处理(Complex Processing)
• 可重用性(Reusability)
• 安装的简易性(Installation Ease)
• 运行的简易性(Operational Ease)
• 多场地(Multiple Sites)
• 允许变更(Facilitate Change)
  对于难度,我们现阶段采取较主观的方式去估计。

3.4 估计工作量
  完成项目规模估计后,应该确定完成这些工作需要的时间(以工时为单位),项目经理应该使用模型、历史数据和软件工作产品大小来确定项目工作量。
  工作量估计的内容应当包含以下内容:
1.软件开发工作量,包括需求分析、设计、编码、测试、其它技术文档。
2.项目支持活动的工作量,包括:配置管理的工作量,质量保证活动的工作量。
3.项目管理活动的工作量。
4.工作量的估计可以按以下步骤进行:
• 选择估计方法,目前建议使用Delphi方法。
• 对WBS中的每个任务分别进行估计。
• 估计项目支持活动的工作量,使用下面公式分别估计SCM、SQA的工作量:
SCM工作量 = 软件的工作量* 5%
SQA工作量 = 软件的工作量* 5%
• 软件工程组应和SCM人员、SQA人员讨论对配置管理、质量保证活动建立总体的估计。对于在最初使用该估计的项目,其估计大约为开发工作量的5%,然后将此工作量分配到各自WBS的具体活动中。随着历史数据的不断积累,可重新定义其占有开发工作量的比例,也可先对具体WBS活动进行估计,此时可采用Delphi方法及类比法。
• 估计出培训的工作量,大概是软件工作量的3%。
• 估计出项目管理活动的工作量,近似于软件工作量的15%~20%,。
• 将估计的结果记录到《软件估计书》中。

3.5 估计成本
  估计出工作量后,应根据公司的财务要求,进行成本的估算。估算的内容有:
• 人力成本:人力成本(按日)*(工作量/8)。
• 直接费用:直接可以报销的费用,如饭费、车费、活动费用等。

3.6 估计关键计算机资源
  项目经理应该明确完成项目所需的关键计算机资源,并进行关键计算机资源估计。关键计算机资源可以是服务器环境、测试环境、目标环境等。
  估计关键计算机资源的步骤如下:
1.关键计算机资源是在软件开发和操作中受到约束的硬件资源,如:计算机内存、磁盘容量、网络容量、处理器性能。项目经理根据《软件需求规格说明书》中对关键计算机资源的描述,确定关键计算机资源的约束。
2.如果有关键计算机资源,则要估计软件开发或运行中的资源状况。
3.与估计的软件规模、计划的处理负载、预计的数据量、或其他因素相联系,来估计所需的资源的总量,作初始估计。
4.当初始估计做好后,应对每一项资源建立一定的储备。
5.设计或者选用资源的限度作为跟踪的目标,确定跟踪的方法。
6.与有资格的人员讨论估计,并使他们批准达成一致的估计内容。
7.将估计的结果写入到《软件估计书》中。

3.7 估计软件工程设备和支持工具
  软件工程设备和支持工具的估计是以软件工作产品和特性的规模估计为基础的。包括设备资源、设施和支持工具,获得或升级软件开发工具,提高网络容量,明确需要的许可证数量,以及关键设备等。项目经理负责详细说明所需的资源,并且协调影响项目进度和成本等的资源。

3.8 估计关键路径和关键依赖关系
  项目经理和软件工程组的相关人员、SQA负责人、SCM负责人、相关组负责人根据各活动间的关系确定关键路径和关键依赖关系。

3.9 建立管理储备
  建立管理储备是为了适应那些在项目中不可避免出现的变更。它代表了为用于批准的项目变更而保留的部分项目资金,动用管理储备必须经过高层经理批准。
  管理储备的估计由项目经理负责完成。
  管理储备的总额(在整个项目预算中的百分比)应基于预计的需求稳定性和评估的风险,一个有较高风险和不稳定需求的项目应比一个有较低风险和稳定需求的项目有较高的管理储备。对大多数项目来说,管理储备为项目预算的20%,管理储备应包括内部和外部的成本。下图说明了被批准的项目预算和管理储备是如何组成总的项目预算的。

  项目的管理储备估计结果写入到《软件估计书》。

3.10 评审估计
  《软件估计书》作为项目计划的一部分,在项目计划完成后或者每次估计变更后,项目经理应召集有类似项目经验的人对《软件估计书》的估计部分内容进行评审,内容包括:
1.确认规模、工作量和成本、进度估计所采用的方法是恰当的
2.确定估计的每个步骤的输入是正确的
3.确定软件估计结果是合理和正确的
4.确定估计的内容是完整的

3.11 制定进度表
  进度表的制定可以按以下流程进行:
1.项目经理和各负责人根据估计的工作量和关键路径确定每个活动的起止日期。
2.根据第2步的结果,结合项目人员的具体情况,项目经理和各负责人调整任务的起始日期、终止日期,甚至是调整某些任务的负责人和关键路径。(如:通过第2步的结果,发现某些项目人员在某个时间段内工作超负荷,而有些人员在某些时间段内工作量不足,这样就需要调整。若实在调整不了,就有可能会调整关键路径)。
3.项目经理在项目进度表中要安排里程碑点(里程碑点一般选在有特定意义的阶段点,如重要阶段的开始或结束),并形成进度表的草稿。
4.将草稿提交给项目组的成员或负责人,得到他们的承诺或根据他们的意见进行修改,直至达成一致。
5.SCM人员和SQA人员根据达成一致的进度表,确定自己的日程安排。
注意:
• 返工的问题:软件项目中的返工工作量是较大的,即在发现工作产品缺陷时的修改工作。一般来说,应在每个阶段为返工的工作留出统一使用的储备时间。
• 有些项目较紧急,要求项目成员加班进行工作。对于这种情况,制定进度表一定要小心。因为若有特殊情况或某项关键任务估计得过于乐观,会导致项目进度拖延,而无法再用加班的方式进行弥补。
• 管理活动的时间占用问题:项目经理根据软件估计中的管理估计和一些技术方面的LOE活动的估计,确定项目各成员在各个阶段可以真正用于完成技术任务的时间。如:在编码阶段,某项目成员每周工作40小时,但评审、SCM工作、项目会议以及一些技术方面的交流、培训就占去了18个小时,那么在安排该项目成员的技术任务时,只能按照他每周工作22(40-18)个小时去安排。

3.12 建立项目挣值基线
1.挣值基线,也叫做计划工作的预算成本(PV)。是通过把每个任务的预算成本和计划完成的指定时间段相联系建立起来的。(可参见《EV规程》)
2.在项目的跟踪与监控过程中,通过获得挣值图对成本进行度量,具体参见《项目跟踪与监控过程》。
3.在《软件估计书》的“挣值基线”页绘制挣值基线。

3.13 阶段详细估计
1.在项目每个阶段开始前,要作阶段详细估计(工作量和时间表)。估计的步骤同上述的过程相同。
2.把详细估计累计起来,确定项目和阶段的总估计。
3.完成后更新总体的软件估计和项目计划。

3.14 形成《软件估计书》
将上述估计的结果记录到《软件估计书》中。(可参见《软件估计书模版》)
软件估计要在项目的不同阶段进行,一般是在本阶段完成时进行下一阶段的详细估计。《软件估计书》作为项目计划的一部分一起评审。

3.15 评审《软件估计书》
• 软件工程组内部评审《软件估计书》。

你可能感兴趣的:(工作,活动,配置管理,软件测试,项目管理)