项目规划(Project Planning)的目的是为项目的研发和管理工作制定合理的行动纲领(即《项目计划》),以便所有相关人员按照该计划有条不紊地开展工作。
为了避免词义混淆,这里把动词Planning译为规划,把名词Plan译为计划(或计划书)。
项目规划过程域是SPP模型的重要组成部分。本规范阐述了项目规划过程域的四个主要规程:
- 项目估计 [SPP-PROC-PP-ESTIMATE]
- 制定项目计划 [SPP-PROC-PP-ESTABLISH]
- 审批项目计划 [SPP-PROC-PP-APPROVE]
- 项目计划变更控制 [SPP-PROC-PP-CHANGE]
上述每个规程的“目标”、“角色与职责”、“启动准则”、“输入”、“主要步骤”、“输出”、“完成准则”和“度量”均已定义。
本规范适用于国内IT企业的软件研发项目。建议用户根据自身情况(如商业目标、研发实力等)适当地修改本规范,然后推广使用。
5.1 介绍
在立项管理过程域的项目筹备阶段(参见[SPP-PROC-PIM]),机构领导首先任命一位项目经理,之后机构领导协助项目经理筹备项目经费、人力资源、软件硬件资源等。如果必要的资金和资源已经到位,那么项目经理和核心成员即可组成一个项目规划小组,着手制定《项目计划》,并按计划执行研发和管理工作。
项目的计划书可分两类:一是全局的计划书(Overall Plan),这里称为《项目计划》;二是一些下属计划书(Subordinate Plan),例如《配置管理计划》、《质量保证计划》、一些开发计划和测试计划等。
下属计划书是对《项目计划》的补充,其内容不可与《项目计划》冲突。通常《项目计划》由项目经理负责制定,由机构领导审批。而下属计划书一般由项目成员制定,由项目经理审批即可。
项目计划过程域有4个主要规程:“项目估计”、“制定项目计划”、“审批项目计划”和“项目计划变更控制”,流程如图1所示。
一、项目估计
项目估计是否准确将直接影响《项目计划》的有效性。项目估计要尽量做到“知己知彼”。“知彼”是指了解产品的需求,“知己”是指了解本项目的实力(即本项目实际能够拥有的经费、人力资源、软件硬件资源、技术水平等)。项目估计的重点内容是“产品范围估计”、“产品规模估计”、“工作量估计”和“成本估计”等。
在项目刚开始时,人们对产品需求的了解还比较肤浅,而项目实际能够拥有经费和资源很大程度上是靠项目经理争取的,不确定因素比较多。在这种情况下人们很难作出准确的估计。但是“估计”显然比“不估计”要好,否则《项目计划》就没有依据了。
二、制定项目计划
根据项目估计得到的数据,规划小组制定《项目计划》。《项目计划》的重点内容是“人力资源计划”、“软硬件资源计划”、“开支(财务)计划”、“任务与进度计划”、“下属计划”等。
由于需求开发花费的时间比较长(一般约占整个项目开发周期的20%),人们一般不会等到需求开发完成之后才开始制定《项目计划》。否则在那么长的时间里没有《项目计划》,众人不知如何开展活动,显然有害于项目。所以通常项目规划和需求开发是并行开展的(请参见SPP 模型图)。
三、审批项目计划
规划小组将《项目计划》递交给机构领导审批。如果机构领导批准了《项目计划》,那么该计划书可以正式发布(文件状态为Released),不可以被随便修改。项目的所有成员按照《项目计划》执行研发与管理工作。
四、项目计划变更控制
在项目执行过程中如果发现《项目计划》与实际情况有比较大的偏差,应当及时更新《项目计划》。变更《项目计划》必须按照指定的规程(即变更控制)执行,防止发生混乱。
项目规划过程域产生的主要文档有:
- 《项目估计表》,模板见 [SPP-TEMP-PP-ESTIMATE]。
- 《项目计划》,模板见 [SPP-TEMP-PP-PLAN]。
- 《项目计划变更控制报告》,模板见 [SPP-TEMP-PP-CONTROL]。
5.2 项目估计
5.2.1 目的
- 估计项目的范围、产品规模、工作量、成本等,为制定《项目计划》提供依据。
5.2.2 角色与职责
- 项目规划小组由项目经理和核心成员组成,所有人员共同参与项目估计。
5.2.3 启动准则
- 机构领导已经批准立项。
- 项目规划小组已经成立。
5.2.4 输入
- 《立项建议书》和一些用户需求文档。
- 用于项目估计的一些经验数据。
5.2.5 主要步骤
[Step1] 估计项目范围
计划小组首先估计本项目的范围,可以用产品的WBS来表示。计划小组根据用户需求,分解产品的功能,制定产品的WBS,如图2所示。由于此处WBS仅用于项目估计而非用于系统设计,其细分程度由计划小组决定。
[Step2] 估计产品规模
- 产品规模的主要度量单位有:
- 代码行
- 类(对象)个数
- 文档页数
- 产品规模估计方法如下:
- 规划小组各成员根据产品的WBS,独立地估计产品的规模,填写“产品规模估计表格”(如表5-1所示)。
- 汇总每个成员的“产品规模估计表格”,进行对比分析。如果各人估计的差额小于10%,则取平均值。如果差额大于10%,则转向第I.步,规划小组各成员重新估计产品的规模,直到各人估计的差额小于10%为止。
[Step3] 估计工作量
- 项目的工作量是“项目研发工作量”、“项目管理工作量”、“机构支撑工作量”三者之和。工作量的度量单位可以是“人小时”、“人天”、“人月”或“人年”。注意单位换算:
- 1人年 = 12人月
- 1人月 ≈ 22人天
- 1人天 = 8 人小时
- 工作量估计方法如下:
- 规划小组各成员根据[Step2]产生的产品规模估计表,独立地估计工作量,填写“工作量估计表格”(如表5-2所示)。
- 汇总每个成员的“工作量估计表格”,进行对比分析。如果各人估计的差额小于10%,则取平均值。如果差额大于10%,则转向第I.步,规划小组各成员重新估计工作量,直到各人估计的差额小于10%为止。
[Step4] 估计成本
- 规划小组估计人力资源成本、软硬件资源成本、商务活动成本等。
5.2.6 输出
- 《项目估计表》
5.2.7 结束准则
- 规划小组已经按照本规程进行了项目估计,并产生了《项目估计表》。
5.2.8 度量
- 项目经理记录本规程产生的所有估计数据。
5.3 制定项目计划
5.3.1 目的
- 根据项目估计产生的数据,制定《项目计划》。
5.3.2 角色与职责
- 项目规划小组由项目经理和核心成员组成,所有人员共同制定《项目计划》。
5.3.3 启动准则
- 项目估计已经完成。
5.3.4 输入
- 《立项建议书》和一些用户需求文档
- “项目估计表”
5.3.5 主要步骤
[Step1] 确定目标与范围
- 规划小组首先确定本项目的目标与工作范围。目标必须是“可实现的”和“可验证的”。工作范围包括“做什么”和“不做什么”。
[Step2] 确定过程模型
- 规划小组根据项目的特征,确定过程模型,包括项目研发过程、项目管理过程、机构支撑过程等。例如裁剪SPP模型。
- 规划小组确定(描述)过程模型中采用的方法与工具。例如采用Rational Rose进行面向对象分析与设计,采用Visual SourceSafe进行配置管理,采用Microsoft Office制作文档等等。
[Step3] 制定人力资源计划
- 规划小组制定本项目的角色职责表,并为已知的项目成员分配角色(一个人可以兼多个角色),如表5-3所示。
[Step4] 制定软硬件资源计划
- 规划小组分析项目开发、测试以及用户使用产品所需的软硬件资源,制定软硬件资源计划,如表5-4所示。主要内容包括:
- 资源级别(分为“关键”、“普通”两种)
- 详细配置
- 获取方式(如“已经存在”、“可以借用”或“需要购买”等)与获取时间
- 用途(如“谁”在“什么”时候使用)
[Step5] 制定财务计划
- 规划小组制定财务计划,如表5-5所示。
[Step6] 分配任务并制定进度表
- 规划小组分配任务并制定进度表,建议采用Microsoft Project制作Gantt 图,附在《项目计划》中。
[Step7] 确定下属计划
- 规划小组确定本《项目计划》主要的下属计划,如表5-6所示。
5.3.6 输出
- 《项目计划》
5.3.7 结束准则
- 规划小组已经按照指定的模版撰写了《项目计划》,并做了内部审查(消除拼写、排版等错误)。
5.3.8 度量
- 项目经理统计工作量以及文档规模。
5.4 审批项目计划
5.4.1 目的
- 机构领导审批《项目计划》,确保该计划是合理的、符合机构现实的。
5.4.2 角色与职责
- 机构领导审批《项目计划》。
- 如果《项目计划》有不合理之处,规划小组应根据机构领导的意见修正《项目计划》。
5.4.3 启动准则
- 规划小组已经制定了《项目计划》。
5.4.4 输入
- 《项目计划》
5.4.5 主要步骤
[Step1] 申请审批
- 项目经理将《项目计划》提交给机构领导,申请审批。申请书可以采用电子邮件或书面报告等形式。
补充说明:如果是合同项目,可能还要请客户审批,视具体情况而定。
[Step2] 审批与修正
- 机构领导根据“项目计划检查表”认真审批《项目计划》。
- 如果《项目计划》有不合理之处,规划小组应根据机构领导的意见及时修正《项目计划》。
[Step3] 批准生效
- 机构领导签字批准后,该《项目计划》正式生效,此后规划小组不能随意修改《项目计划》。
5.4.6 输出
- 机构领导的审批意见(见 《项目计划》的附录)。
- 按评审意见修正后的《项目计划》。
5.4.7 结束准则
- 机构领导签字批准了该《项目计划》。
5.4.8 度量
- 项目经理统计工作量。
5.5 项目计划变更控制
5.5.1 目的
- 修改原《项目计划》中不合理的内容,产生新的《项目计划》。
- 控制《项目计划》的变更,防止发生混乱。
5.5.2 角色与职责
- 机构领导审批变更申请。
- 项目经理更新《项目计划》。
5.5.3 启动准则
若下列之一发生,应当变更原《项目计划》:
- 进度偏差超过了容许的误差,如20%;
- 费用偏差超过了容许的误差,如20%;
- 项目过程模型发生了显著的变化;
- 用户需求发生了重大的变化;
- 发生了对项目小组而言不可抗拒的变化,例如公司裁员、机构调整、产品发展战略调整等。
5.5.4 输入
- 原《项目计划》
5.5.5 主要步骤
[Step1] 变更申请
- 项目经理向机构领导申请变更《项目计划》。变更申请书中应当说明:
- 变更原因
- 变更的内容
- 此变更对项目造成的影响
补充说明:如果是合同项目,可能还要向客户提出变更申请,视具体情况而定。
[Step2] 审批变更申请
- 机构领导审批变更申请:
- 如果不同意变更,则退回变更请求,项目按照原计划执行。
- 如果同意变更,转向 [Step3]。
[Step3] 修改项目计划
- 项目经理修改原《项目计划》,产生新的《项目计划》。
[Step4] 审批新的项目计划
- 机构领导审批新的《项目计划》,参见规程 [SPP-PROC-PP-APPROVE]。
5.4.6 输出
- 《项目计划变更控制报告》
- 新的《项目计划书》
5.4.7 结束准则
- 变更申请以及新的《项目计划》都得到了机构领导的批准。
5.4.8 度量
- 项目经理统计工作量。
5.5 实施建议
- 对项目规划过程域产生的所有有价值的文档进行配置管理。
- 《项目计划》被机构领导批准之后,有关人员即可撰写下属计划如《配置管理计划》、《质量保证计划》、一些开发计划和测试计划等。
- 选用合适的软件工具,尽量减少项目规划过程域的工作量。
- 对于客户委托开发的项目,客户在项目规划过程域的介入程度视具体情况而定。