标题：软件项目计划
简介
在软件项目管理过程中一个关键的活动是制定项目计  软件项目计划划，它是软件开发工作的第一步。 项目计划的目标是为项目负责人提供一个框架，使之能合理地估算软件项目开发所需的资源 、经费和开发进度，并控制软件项目开发过程按此计划进行。 在做计划时，必须就需要的人力、项目持续时间及成本作出估算。这种估算大多是参考 以前的花费作出的。软件项目计划包括二个任务：研究和估算。即通过研究确定该软件 项目的主要功能、性能和系统界面。
软件项目计划内容
软件项目计划内容如下：范围。对该软件项目的综合描述,定义起所要做的工作  软件项目计划以及性能限制,它包括:
(1)项目目标。
(2)主要功能。
(3)性能限制。
(4)系统接口。
(5)特殊要求。
(6)开发概述。资源。
(1)人员资源。
(2)硬件资源。
(3)软件资源。
(4)其他。进度安排。
进度安排的好坏往往会影响整个项目的按期完成,因此这一环节是十分重要的。制定软件进度与其他工程没有很大的区别 ，其方法主要有：
(1)工程网络图。
(2)Gantt图。
(3)任务资源表。
(4)成本估算。
(5)培训计划。
制定软件工程规范
对软件工程管理来说，软件工程规范的制定和实施是不可少的，  软件项目计划它与软件项目计划一样重要 。软件工程规范可选用现成的各种规范，也可自己制定。目前软件工程规范可分为三级：
(1)国家标准与国际标准。
(2)行业标准与工业部门标准。
(3)企业级标准与开发小组级标准。
成本估算方法
自顶向下估算方法估算人员参照以前完成的项目所耗费的总成本，来推算将要开发的软件的总成本，然后把它们按阶段、步骤和工作单元进行 分配，这种方法称为自顶向下估算方法。
它的优点是对系统级工作的重视，所以估算中不会遗漏系统级的诸如集成、用户手册和配置管理之类的事务的成本估算，且估算工作量小、 速度快。它的缺点是往往不清楚低级别上的技术性困难问题，而往往这些困难将会使成本上升。自底向上估算方法。
自底向上估算方法是将待开发的软件细分，分别估算每一个子任务所需要的开发工作量，然后将它们加起来 ，得到软件的总开发量。这种方法的优点是对每个部分的估算工作交给负责该部分工作的人来做，所以估算 较为准确。其缺点是其估算往往缺少与软件开发有关的系统工作级工作量，所以估算往往偏低。差别估算方法。
差别估算是将开发项目与一个或多个已完成的类似项目进行比较，找到与某个相类似项目的若干 不同之处，并估算每个不同之处对成本的影响，导出开发项目的总成本。该方法的优点是可以提高估算的准确度， 缺点是不容易明确“差别”的界限。其他除上三种还有：
(1)专家估算法。
(2)类推估算法。
(3)算式估算法。
成本估算模型
COCOMO估算模型。
机构性成本模型COCOMO（Constructive Cost Mode）是最精确、最易于使用的成本估算方法之一。
该模型分为：基本COCOMO模型，是一个静态单变量模型，它是对整个软件系统进行估算；中级COCOMO模型，是一个静态多变量模型；详细COCOMO模型，将软件系统模型分为系统、子系统和模块三个层次。
①基本COCOMO模型估算公式：
E=ab(KLOC)exp(bb)
D=cb(E)exp(db)
式中E为开发所需的人力（人/月）。D为所需的开发时间（月）。KLOC为估计提交的代码行。
ab、bb、cb和db是指不同软件开发方式的值。
②中级COCOMO模型。
其估算公式为：E=ai(KLOC)exp(bi)×乘法因子，ai，biPutnam成本估算经验模型。
Putnam估算模型是一种动态多变模型，它是假设在软件开发的整个生存期中工作量的分布。如下图：
根据曲线导出关于提交的代码行数L，人力K（人/年）和时间td（年）之间估算公式：
式中Ck是技术状况有关的常数，它的典型值如下：
对于差的开发环境 Ck=2500
对于好的开发环境 Ck=10000
对于有的开发环境 Ck=12500
由上述公式可以得到所需开发工作量的公式：
风险分析
风险分析对于软件项目管理是决定性的，然而现在还是有很多项目不考虑风险就着手进行。
软件项目进度安排
软件项目的进度安排与任何一个工程的进度安排没有实质上的不同。首先识别一组项目任务，建立任务间的相互关联，然后估计各个任 务的工作量，分配人力和其他资源，指定进度时序。软件开发任务的并行性若软件项目有多人参加时，多个开发者的活动将并行进行。Gantt图Gantt图常用水平线段来描述把任务分解成子任务，以及每个子任务的进度按排，该图表示方法简单易懂， 一目了然，动态反映软件开发进度情况。如下表：
进程计划时间表工程网络图工程网络图是一种有向图，该图中用圆表示事件，有向弧或箭头表示子任务的进行，箭头上的数字称为权，该权表示此子任务的持续时间，箭头下面括号中的数字表示该任务的机动时间，图中的圆表示与某个子任务开始或结束事件的时间点。如下图：
软件质量保证　　软件质量保证是软件工程管理的重要内容，软件质量保证应作好以下几个方面的工作：
(1)采用技术手段和工具。
(2)组织正式技术评审。
(3)加强软件测试。
(4)推行软件工程规范（标准）。
(5)对软件的变更进行控制。
(6)对软件质量进行度量。
如何制定软件项目计划
软件项目计划(16张)?　项目计划详细说明了所需软件工作及如何实现。它定义了每一个主要任务，并估算其所需时间和资源，同时为管理层的评估和控制提供了一个框架。项目计划也提供了一种很有效的学习途径。如果能合理建档，它便是一个与实际运行效能比较的基准。这种比较可以使计划者看到他们的估算误差，从而提高其估算精确度。
我们着重强调对项目规模和资源的估算，是因为低质量的项目资源估算将不可避免地造成资源短缺，进度延迟和预算超支。又由于项目资源估算是从软件规模估算中直接衍生出来的，所以低质量的规模估算是造成许多软件项目问题的根本原因。
项目计划应在项目开始初期制定出，并随着工程的进展不断地加以精化。起初，由于软件需求通常是模糊而又不完整的，我们的工作重点应在于明确该项目需要哪些领域的知识，并且如何获取这些知识。如果不遵循这一指导原则，程序员们通常会积极地投入到那部分已知的工作中去，而把未知部分留滞到以后。这种工作方式通常会产生很多问题，因为未知部分具有最高的风险系数。软件项目计划的逻辑如下所述 ：
由于软件需求在初始阶段是模糊而又不完整的，质量计划只能建立在对客户需求的大致而不确切的理解之上。因此，项目计划应该从找出含糊不确切与准确恰当的软件需求间的映射关系入手。
接着建立一种概念设计。项目初始架构的建立要十分谨慎，因为它通常标定了产品模块的分割线，同时描述了这些模块所实现的功能及所有模块间的关系。这就为项目计划和项目实施提供了组织框架，因此一个低质量的概念设计是不能满足要求的。
在每一次后续的需求精化时，也应同时精化资源映射，项目规模估算和工程进度。

软件项目计划-制订软件项目计划的方法与策略

软件项目计划编制方针
软件项目计划编制的目的是制定一个合理的实施软件工程及管理软件项目的计划。软件项目计划编制着重于对要实施的工作进行估计，建立必要的承诺并定义工作计划。
包括以下要点：
1. 将用于编制软件项目计划及跟踪软件项目的工作文档化。
2. 对于软件项目的实施采用文档化的承诺。
3. 相关的机构或个人认可他们对软件项目的承诺。
4. 指定软件项目负责人负责落实软件项目的承诺并制定项目的软件开发计划。
5. 确保软件项目存在一份文档化的、并被认可的工作陈述。
6. 软件开发计划要指定人员角色分工，明确责任。
7. 对软件项目所需要的适当的资源及资金作出计划。
8. 对软件项目负责人、软件工程师及其它与软件项目计划编制有关人员进行适合其职责范围的培训。
9. 成立相关软件项目组及相关的方案论证小组。
10. 软件项目组及相关的方案论证小组在整个项目生命期内参加全部的项目计划编制工作。
11. 按照书面流程与高级管理人员或企业外部机构软件项目的承诺进行复审。
12. 明确划分为预先定义的、规模可管理的阶段的软件生命周期。
13. 按照书面流程开发项目的软件开发计划。
14. 将软件项目计划文档化。
15. 确定软件项目需要建立及维护控制的软件产品。
16. 按照书面流程获得对软件产品规模的估计（或软件产品规模的改变）。
17. 按照书面流程获得对软件项目工作量及费用的估计。
18. 按照书面流程获得对项目所需要的关键计算机资源的估计。
19. 按照书面流程获得项目的软件开发进度。
20. 识别、评估与费用、资源、进度及项目的技术方面相关的软件风险，并文档化。
21. 准备项目的软件工程机制及支撑工具的计划。
22. 记录软件计划编制数据。
23. 制定并使用度量方法以确定软件计划活动的状态。
24. 定期与高级管理人员对软件项目计划活动进行复审。
25. 以定期及事件驱动方式与软件项目管理人员对软件项目计划活动进行复审。
26. 与软件质量保证人员对软件项目计划活动及工作产品进行回顾及审核，并将结果文档化。
软件项目计划模板
_________项目开发计划 
1. 概述 
1.1 编写目的 
本文档是__________（开发单位名称）根据__________ 项目 的初步需求，并对_______ 项目 的各项需求进行全面分析之后，做出的软件开发计划，可供支持项目组内部及信息技术部内部的研发工作。 
1.2 项目背景 
系统名称： 【 列出系统名称 】 
英文名称： 【 列出系统英文名称 】 
产品代号： 【 列出系统产品代号 】 
委托单位： 【 列出委托单位 】 
开发单位： 【 列出开发单位 】 
开发日期： 【 开始时间 ---- 预计收尾完工时间 】 
版权信息： 【Version X.X】 
1.3 定义 
【 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 】 
1.4 参考资料 
【 逐条列出所参考的文档名称与作者。 】 
2. 项目过程定义 
2 .1软件开发生命周期模型
【 列出采用的软件开发生命周期模型，并说明采用的理由。 】 
2 ．2 开发工具与平台 
【 列出采用的开发工具、操作系统及平台软件。 】 
3 ．计划 
3.3 资源计划 
【 逐项列出项目开发过程中所需的各种资源。 】 
3.4 关键计算机资源估计
【 逐条列出所需各种计算机资源的类型、配置及数量等内容。 】 
4. 项目管理 
4.1 人员与角色 
【 逐项列出项目组的角色分配及已可供调配的人员。 】 
4.2 人员计划 
【 逐条列出本项目所需各种角色人员的起始与结束时间，人数，技能方面的要求等内容。 】 
4.3 风险管理计划 
【 逐条列出各项风险的影响因素、发生概率、严重性、负责人、预期日期、预防及补救方案等内容。 】 
4.4 培训计划 
【 逐条列出主题（技能、领域、工具、方法）、人数、计划日期、提供者等内容。 】 
4.5 成本估计 
【 逐条列出成本的类型及金额，并计算估计的总本。 】 
5. 进度跟踪 
5.1 项目会议 
【 列出项目会议组织的办法。 】 
5.2 项目里程碑 
【 列出项目里程碑，即 项目进度的关键点 。 】 
5.3 进度表 
【 给出项目进度表。 】 
5.4 人员任务分配 
【 给出人员任务分配表，包括了任务内容、开始时间、完成时间、工时估计等内容。 】 
附： 
【 给出用 MS Project 制作的项目计划 MPP】