|
软件项目计划(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估算模型是一种动态多变模型,它是假设在软件开发的整个生存期中工作量的分布。如下图:
 根据曲线导出关于提交的代码行数L,人力K(人/年)和时间td(年)之间估算公式:
式中Ck是技术状况有关的常数,它的典型值如下: 对于差的开发环境 Ck=2500 对于好的开发环境 Ck=10000 对于有的开发环境 Ck=12500 由上述公式可以得到所需开发工作量的公式:
四、风险分析
风险分析对于软件项目管理是决定性的,然而现在还是有很多姓名不考虑风险就着手进行。
五、软件项目进度安排
软件项目的进度安排与任何一个工程的进度安排没有实质上的不同。首先识别一组项目任务,建立任务间的相互关联,然后估计各个任 务的工作量,分配人力和其他资源,指定进度时序。
1.软件开发任务的并行性 若软件项目有多人参加时,多个开发者的活动将并行进行。
2.Gantt图 Gantt图常用水平线段来描述把任务分解成子任务,以及每个子任务的进度按排,该图表示方法简单易懂, 一目了然,动态反映软件开发进度情况。如下表:
进程计划时间表

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

六、软件质量保证
软件质量保证是软件工程管理的重要内容,软件质量保证应作好以下几个方面的工作: (1)采用技术手段和工具。 (2)组织正式技术评审。 (3)加强软件测试。 (4)推行软件工程规范(标准)。 (5)对软件的变更进行控制。 (6)对软件质量进行度量。
七、如何制定软件项目计划

项目计划详细说明了所需软件工作及如何实现。它定义了每一个主要任务,并估算其所需时间和资源,同时为管理层的评估和控制提供了一个框架。项目计划也提供了一种很有效的学习途径。如果能合理建档,它便是一个与实际运行效能比较的基准。这种比较可以使计划者看到他们的估算误差,从而提高其估算精确度。
我们着重强调对项目规模和资源的估算,是因为低质量的项目资源估算将不可避免地造成资源短缺,进度延迟和预算超支。又由于项目资源估算是从软件规模估算中直接衍生出来的,所以低质量的规模估算是造成许多软件项目问题的根本原因。
项目计划应在项目开始初期制定出,并随着工程的进展不断地加以精化。起初,由于软件需求通常是模糊而又不完整的,我们的工作重点应在于明确该项目需要哪些领域的知识,并且如何获取这些知识。如果不遵循这一指导原则,程序员们通常会积极地投入到那部分已知的工作中去,而把未知部分留滞到以后。这种工作方式通常会产生很多问题,因为未知部分具有最高的风险系数。软件项目计划的逻辑如下所述 :
由于软件需求在初始阶段是模糊而又不完整的,质量计划只能建立在对客户需求的大致而不确切的理解之上。因此,项目计划应该从找出含糊不确切与准确恰当的软件需求间的映射关系入手。
接着建立一种概念设计。项目初始架构的建立要十分谨慎,因为它通常标定了产品模块的分割线,同时描述了这些模块所实现的功能及所有模块间的关系。这就为项目计划和项目实施提供了组织框架,因此一个低质量的概念设计是不能满足要求的。
在每一次后续的需求精化时,也应同时精化资源映射,项目规模估算和工程进度。
共2页: 上一页 1 [2] 下一页
|