软件项目计划

Trackback: http://tb.blog.csdn.net/TrackBack.aspxostId=2249551

软件项目计划(Software Project Planning)是一个软件项目进入系统实施的启动阶段,主要进行的工作包括:确定详细的项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等。

在软件项目管理过程中一个关键的活动是制定项目计划,它是软件开发工作的第一步。 项目计划的目标是为项目负责人提供一个框架,使之能合理地估算软件项目开发所需的资源 、经费和开发进度,并控制软件项目开发过程按此计划进行。 在做计划时,必须就需要的人力、项目持续时间及成本作出估算。这种估算大多是参考 以前的花费作出的。软件项目计划包括二个任务:研究和估算。即通过研究确定该软件 项目的主要功能、性能和系统界面。

一、软件项目计划内容

软件项目计划内容如下:

 1.范围。对该软件项目的综合描述,定义起所要做的工作以及性能限制,它包括:

 (1)项目目标。

 (2)主要功能。

 (3)性能限制。

 (4)系统接口。

 (5)特殊要求。

 (6)开发概述。

 2.资源。

 (1)人员资源。

 (2)硬件资源。

 (3)软件资源。

 (4)其他。

 3.进度安排。

 进度安排的好坏往往会影响整个项目的按期完成,因此这一环节是十分重要的。制定软件进度与其他工程没有很大的区别 ,其方法主要有:

 (1)工程 络图。

 (2)Gantt图。

 (3)任务资源表。

 (4)成本估算。

 (5)培训计划。

二、制定软件工程规范

对软件工程管理来说,软件工程规范的制定和实施是不可少的,它与软件项目计划一样重要 。软件工程规范可选用现成的各种规范,也可自己制定。目前软件工程规范可分为三级:

(1)国家标准与国际标准。

(2)行业标准与工业部门标准。

(3)企业级标准与开发小组级标准。

三、软件开发成本估算

为了使开发项目能在规定的时间内完成,而且不超过预算,成本预算和管理控制是关键。

 1.成本估算方法

 (1)自顶向下估算方法。

 估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行 分配,这种方法称为自顶向下估算方法。

 

 它的优点是对系统级工作的重视,所以估算中不会遗漏系统级的诸如集成、用户手册和配置管理之类的事务的成本估算,且估算工作量小、 速度快。它的缺点是往往不清楚低级别上的技术性困难问题,而往往这些困难将会使成本上升。

 (2)自底向上估算方法。

  自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来 ,得到软件的总开发量。这种方法的优点是对每个部分的估算工作交给负责该部分工作的人来做,所以估算 较为准确。其缺点是其估算往往缺少与软件开发有关的系统工作级工作量,所以估算往往偏低。

 (3)差别估算方法。

 差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找到与某个相类似项目的若干 不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。该方法的优点是可以提高估算的准确度, 缺点是不容易明确“差别”的界限。

 

 除上三种还有:

 (1)专家估算法。

 (2)类推估算法。

 (3)算式估算法。

 2.成本估算模型

 (1)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,bi

 (2)Putnam成本估算经验模型。

 Putnam估算模型是一种动态多变模型,它是假设在软件开发的整个生存期中工作量的分布。如下图:

3.工程 络图

 工程 络图是一种有向图,该图中用圆表示事件,有向弧或箭头表示子任务的进行,箭头上的数字称为权,该权表示此子任务的持续时间,箭头下面括 中的数字表示该任务的机动时间,图中的圆表示与某个子任务开始或结束事件的时间点。如下图:

项目计划详细说明了所需软件工作及如何实现。它定义了每一个主要任务,并估算其所需时间和资源,同时为管理层的评 估和控制提供了一个框架。项目计划也提供了一种很有效的学习途径。如果能合理建档,它便是一个与实际运行效能比较的基准。这种比较可以使计划者看到他们的 估算误差,从而提高其估算精确度。

我们着重强调对项目规模和资源的估算,是因为低质量的项目资源估算将不可避免地造成资源短缺,进度延迟和预算超支。又由于项目资源估算是从软件规模估算中直接衍生出来的,所以低质量的规模估算是造成许多软件项目问题的根本原因。

项目计划应在项目开始初期制定出,并随着工程的进展不断地加以精化。起初,由于软件需求通常是模糊而又不完整的, 我们的工作重点应在于明确该项目需要哪些领域的知识,并且如何获取这些知识。如果不遵循这一指导原则,程序员们通常会积极地投入到那部分已知的工作中去, 而把未知部分留滞到以后。这种工作方式通常会产生很多问题,因为未知部分具有最高的风险系数。软件项目计划的逻辑如下所述 :

由于软件需求在初始阶段是模糊而又不完整的,质量计划只能建立在对客户需求的大致而不确切的理解之上。因此,项目计划应该从找出含糊不确切与准确恰当的软件需求间的映射关系入手。

接着建立一种概念设计。项目初始架构的建立要十分谨慎,因为它通常标定了产品模块的分割线,同时描述了这些模块所实现的功能及所有模块间的关系。这就为项目计划和项目实施提供了组织框架,因此一个低质量的概念设计是不能满足要求的。

在每一次后续的需求精化时,也应同时精化资源映射,项目规模估算和工程进度。

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

 制订软件项目计划的目的在于建立并维护软件项目各项活动的计划,软件项目计划其实就是一个用来协调软件项目中其它所有计划,指导项目组对项目进行执行和监控的文件。一个好的软件项目计划可为项目的成功实施打下坚实的基础。

软件项目有其特殊性,不确定因素多,工作量估计困难,项目初期难于制定一个科学、合理的项目计划。我曾主持和参与过大大小小的软件项目十余项,下面我将把我制订软件项目计划的经验分享给大家。

1.注重项目计划的层次性

软件项目计划的层次及其关系如下图所示。

 项目的工作安排一定要责任到人,这点是要详细的。如果是多个人共同完成的任务也要指定一位主要负责人,否则开发人员会操作不便,甚至互相推卸责任。

4.制订的项目计划要现实

软件项目中的项目经理和系统分析员大都是从程序员成长起来的,我亦是如此,担任项目经理之前我写了五年的VB、Java和数据库SQL代码。项目经理和系统分析员做出来的项目计划最终要能够被项目组成员所实现。

制订项目计划仅靠“个人经验”是不够的,不可能面面俱到,不要期希望于“个人经验”。解决的办法有两个方面。

一是充分鼓励、积极接纳项目干系人(包括客户、公司高层领导、项目组成员)来参与项目计划的制定。

可以邀请客户和公司高层领导来共同讨论高级计划的制订。客户会乐意参与的,因为追求项目的成功是大家的共同目标。 公司高层领导的支持是项目组的坚强后盾,项目组需要获取必要的资源,需要及时获取对项目特殊要的审批,需要在领导事务上得到适当的指导和帮助,有些事项有 时是需要公司高层领导加入才能解决的,如合同款项的按期支付。

制订二级、三级项目计划要与项目组成员互动。当规划由一个人做出而由另一个人实施时,如果项目没有按时完成,会使 得他们怀疑项目计划的可行性,也会影响开发人员的士气。与项目组内部人员的沟通亦很重要。软件程序员平时通常表现得内向、清高,作为项目经理应当学会调节 工作中的气氛,在轻松的氛围中去融合开发人员的意见。

可以让开发人员对自己职责范围内的事提出建议的时间和资源,再作讨论约定。这样开发人员在主观上会更加投入工作。 客观上,开发人员的能力很难用时间及工作量来衡量,一名熟练的Java程序员比一名初学Java的程序员开发效率可能快上四五倍,因而安排的时间周期、任 务量当然要不一样。我比较倾向于召开一次专题讨论会,事先写出一个初稿,再各抒已见,最后作出结论。

二是要充分利用一些历史数据。历史数据是宝贵的财富,是可复用的资源。不仅要注意积累这些数据,也要学会从中提炼出可以为我所用的数据。如,项目计划的模板,计划的资源数据等。

5.运用过程化的思想指导开发

软件项目计划是CMM2级的一个KPA。可用软件过程化的思想指导计划的编制与实施。

CMM2共有6个KPA,它们是:需求管理、软件项目计划、项目跟踪和监控、软件转包合同管理、软件质量保证、软件配置管理。一个软件组织如果达到了CMM2的各个过程方面的全部目标,就表明这个组织的软件能力达到了第2级成熟度等级。

这也可以是针对一个项目而言。通常需要根据项目的进展情况对项目计划进行修改,以便应付需求和承诺的变更、不够准确的估计、纠正措施和过程更改等。在策划和重新策划中涉及的活动,都包含在这个过程方面里。

6.利用成熟的项目管理工具

Microsoft Project 2000(或更高的版本)是一款公认的功能强大、操作方便的项目管理工具软件。它自带了一个叫做“软件开发”的模板,可以用它来生成大体的框架,再作细节方面的改动,也可以自己制作一个符合自己公司软件项目运作流程的模板。

Microsoft Project 2000的操作面版中可以安排任务,并设置开始时间、结束时间、前置任务、资源名称等参数,它能自动生成Gantt图、Pert图,找出项目中的关键路径。

7.结束语

软件项目计划分为高级计划、二次计划、三级计划和低级计划,制订软件项目计划应注意及时与客户沟通,该详细的详 细,该简略的就简略,制出来的计划要是现实的,可以运用CMM2的思想指导计划的制订,Microsoft Project是倍受推荐的项目计划软件工具。愿我们多做出高质量的软件计划,从而打造软件精品。

[参考文献]

 [1](美)凯西.施瓦贝乐 著,王金玉 时郴 译,《IT项目管理》,机械工业出版 ,2002年1月第1版。

 [2]韩万江 姜立新 著,《软件开发项目管理》,机械工业出版 ,2004年1月第1版。

九、软件项目计划编制方针

软件项目计划编制的目的是制定一个合理的实施软件工程及管理软件项目的计划。软件项目计划编制着重于对要实施的工作进行估计,建立必要的承诺并定义工作计划。

包括以下要点:

 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. 以定期及事件驱动方式与软件项目管理人员对软件项目计划活动进行复审。

十、软件项目计划模板

_________项目开发计划

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 人员任务分配

 [ 给出人员任务分配表,包括了任务内容、开始时间、完成时间、工时估计等内容。  

5.4 人员任务分配
 [ 给出人员任务分配表,包括了任务内容、开始时间、完成时间、工时估计等内容。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年4月22日
下一篇 2013年4月22日

相关推荐