1
 软件工程
1.11.2.4 9.2.4 IEEE 1058.1软件项目管理计划标准

9.2.4 IEEE 1058.1软件项目管理计划标准

在IEEE 1058.1中给出了软件项目管理计划的框架。按照IEEE标准制订软件项目管理计划,有以下几个优点。

(1)这是由许多主要的软件开发组织的代表共同拟定的一个标准,是对他们丰富的实践经验的总结。

(2)IEEE软件项目管理计划实质上是一个结构,适用于各种类型的软件产品。

(3)所有软件人员都将逐渐熟悉IEEE软件项目管理计划的格式,采用此格式能使企业节省新雇员的培训费用。

1.软件项目管理计划的组成

一个软件项目管理计划主要由3部分组成:要做的工作,要用的资源,要花的经费。软件开发需要各种资源,主要资源有开发软件的人员、运行软件所需要的硬件和支持软件。

管理工作分成两类:一类工作贯穿于项目全过程,不与软件开发的特定阶段相关联,这类工作称为项目职责,如项目管理和质量控制;另一类工作与产品开发的特定阶段相联系,这类工作称为活动或任务。一个活动是一个大的工作单元,有其开始时间和结束时间;它消耗资源,如消耗计算机时间和人力;它产生工作产品,如预算、进度表、设计文档、源代码或用户手册。一项活动又包含一系列任务,一个任务是应该管理的最小工单元。因此,在项目管理中有三种工作,分别是项目职责、活动(大工作单元)和任务(小工作单元)。项目管理将贯穿于整个项目开发的始终。

计划中的关键内容涉及工作产品的完成情况。工作产品预定完成的日期称为“里程碑”。为了确定一件工作产品是否真正到达了一个“里程碑”,必须通过了一系列由开发成员、管理部门和用户代表进行的审查。一个典型的“里程碑”是完成概要设计并且通过了审查的日期。一旦一个工作产品经过审查并被一致通过,它就成为一个基线。

事实上,工作产品中包含的内容远远超过了产品本身。一个工作包(Work Package)不仅定义了工作产品,而且定义了人员需求、开发期限、资源、负责人姓名和验收该工作产品的标准。

资金当然是软件项目计划的一个关键组成部分,必须拟定出详细的资金预算和资金分配方案。资金分配应该针对每个项目职责和活动,它是时间的函数。

2.IEEE软件项目管理计划

1)引言

引言由5个小部分组成,它描述了要开发的项目和产品的概况。

(1)项目概览。

简要地描述项目目标、要交付的产品、有关活动及其工作产品。此外,还要列出里程碑、所需的资源、主要的进度及主要预算。

(2)项目交付。

列出所有要交付给用户的软件配置项和交付的日期。

(3)软件项目管理计划的演变。

没有什么计划能一成不变地执行。软件项目管理计划与其他计划一样,必须随着经验的积累及用户与开发方的变化而变化。在这部分描述改变计划的正式规程和机制。

(4)参考资料。

列出软件项目管理计划引用的所有参考文档。

(5)术语定义和缩写词。

这些信息确保每个人都能以同样方式理解软件项目管理计划。

2)项目组织

这部分中的4个小部分从软件过程的角度和开发人员的组织结构的角度,说明了产品是怎样开发的。

(1)过程模型。

根据活动(如产品设计或产品测试)和项目职责(如项目管理或配置管理)来确定过程模型。过程模型的关键内容有里程碑、基线、评审、工作产品及可交付性。

(2)组织结构。

描述开发组织的管理结构。在组织中划定权限和明确责任是很重要的。

(3)组织的边界和界面。

没有一个项目是在真空中完成的,项目组成员必须与用户和本组织内的其他成员打交道。此外,在大型项目中还可能牵涉到转包商。必须制订出项目本身与其他实体之间在行政上和管理上的界线。许多软件组织内部包含两种类型的组织:完成特定开发项目的开发组和起支持作用的支持组(如配置管理组和SQA组)。如果本项目有支持组介入,则必须清楚地定义项目组和支持组之间的行政、管理界线。

(4)项目责任。

针对每个项目职责(如SQA)和每项活动(如产品测试),必须明确地指定个人的责任。

3)管理过程

这部分的5个小部分描述了怎样对软件项目进行管理。

(1)管理的目标和优先级。

描述管理的原理、目标和优先级。本部分的内容可能包括提交报告的频率和机制、不同需求的相对优先级关系、项目的进度和资金预算,以及风险管理过程。

(2)假设、依赖性和约束。

列出在规格说明文档及其他文档中包含的所有假设、依赖性和约束。

(3)风险管理。

在本小节中列出项目中存在的多种风险因素和跟踪风险的机制。

(4)监督和控制机制。

详细地描述项目报告机制,包括复查和审计机制。

(5)人员计划。

项目中的有关人员是重要的资源。在本小节中列出所需人员的类型和数量,并且指明需要他们参与工作的时间。

4)技术过程

本部分包括3个部分,指明该项目的技术方面。

(1)方法、工具和技术。

详细地描述有关软件和硬件的技术方面应该覆盖的内容,包括开发产品所用的计算机系统(硬件、操作系统和软件)和产品运行的目标系统。其他需要描述的内容有所用的开发技术、测试技术、开发小组的结构、编程语言和CASE工具。此外,也应包括技术标准,如文档标准和编码标准,以及可能参考的其他文档,还有开发和修改工作产品的过程。

(2)软件文档。

描述文档需求,即文档编写标准、里程碑、基线和对软件文档的复查。

(3)项目支持功能。

给出关于支持功能(如配置管理和质量保证)的详细计划,包括测试计划。

5)工作包、进度和预算

(1)工作包。

详细说明工作包,并把与之相关的工作产品分解为活动和任务。

(2)依赖性。

模块编码是在设计之后集成测试之前进行的。一般来说,工作包之间有相互依赖性,并且依赖于外部事件。本小节着重说明依赖关系。

(3)资源需求。

完成项目需要各种各样的资源,一般来说,应该把资源需求表示为时间的函数。

(4)预算和资源分配。

描述分配给各个项目职责、活动和任务的资源和预算。

(5)进度表。

对项目的各个部分制订一个详细的进度表,然后确定主计划,以便按时完成项目。

6)附加部分

对于特定的项目,可能需要在项目计划中再增加一些内容。根据IEEE结构框架,把这些附加的内容列在一个计划的最后。附加的部分可能包括转包商管理计划、安全计划、测试计划、培训计划、硬件采购计划、安装计划和产品维护计划等。