4.3 项目开发计划
4.3.1 项目开发计划的目的与主要内容
随着软件开发规模的不断扩张,软件项目开发已经成为需要团队协作的系统工程。编制项目开发计划的目的就是用文件的形式,把项目的各项属性、开发过程中的各项安排记录下来,以便团队根据计划开展和检查项目的开发工作。
项目开发计划最重要的内容有两项:项目定义和实施计划。项目定义对项目目的、项目范围、产出产品、验收标准、项目期限等重要内容做出界定,而实施计划是对项目开发过程的一个总规划,既是分配开发任务的指导,也是项目过程中进行进度控制的依据。
4.3.2 项目开发计划的编写方法
项目开发计划中涉及的重要部分以及相应的编写方法如下:
4.3.2.1 项目概述
1)工作内容
简要地说明在本项目的开发中须进行的各项主要工作。
2)团队组织结构
说明项目团队的组织结构。扼要说明参加项目团队各成员的基本情况和承担的角色。
图4-1是教室预订系统项目组团队组织结构的一个例子。
图4-1 项目组组织结构
再采用列表(见表4-1)的方式说明团队成员的基本情况和承担的角色。
表4-1 团队成员情况
3)产品
(1)程序:列出须移交给用户的程序的名称、所用的编程语言及存储程序的媒体形式,逐项说明其功能和能力。
(2)文件:列出须移交给用户的每种文件的名称及内容要点。
(3)服务:列出需向用户提供的各项服务,如培训安装、维护和运行支持等,应逐项规定开始日期、所提供支持的级别和服务的期限。
(4)非移交的产品:说明开发集体应向本单位交出但不必向用户移交的产品(文件甚至某些程序)。
4)验收标准
对于上述这些应交出的产品和服务,逐项说明或引用资料说明验收标准。
5)项目的计划完成时间和最迟期限
列出项目的计划完成时间和最迟提交期限。
4.3.2.2 实施计划
1)工作任务的分解与人员分工
对于项目开发中需要完成的各项工作,从需求分析、设计、实现、测试直到维护,包括文件的编制、审批、打印、分发工作,用户培训工作,软件安装工作等,按层次进行分解,用图示说明工作分解结构,并且用列表的形式列明每项任务的负责人和参加人员。
在创建工作分解结构时,首先标识完成项目所需的主要或高层的任务,然后将主要任务分解为较低层次的任务。工作任务结构是随着项目的进展而细化的结构,在项目的早期只能分解为相对高层的任务结构,当随着项目的进展,信息逐渐变得可用时,工作分解结构可以进一步开发。
图4-2是教室预订系统项目工作分解结构的一个示例。其中模块设计、模块实现和模块测试任务在模块的划分确定之后可以进一步分解为子任务。
图4-2 项目工作分解结构
任务分配示例如表4-2所示。
表4-2 任务分配
(续 表)
2)阶段计划
对于需求分析、设计、编码实现、测试、移交、培训和安装等阶段的工作任务,确定每项工作任务的预定开始日期、预定完成日期及所需资源,确定表征每项工作任务完成的标志性事件(即“里程碑”)。
用一张表(项目时间表)列出所有重要发布点、演示及其他里程碑事件的预定日期。
表4-3是项目时间表的示例。
表4-3 项目时间表
人力和时间是软件开发项目中最宝贵的资源。在对项目的各项活动所需的时间进行估计之后,需要根据项目的资源约束对活动的人员分工和时间安排做出合理的计划。甘特图是将项目活动安排可视化的有力工具。图4-3是教室预订系统开发项目活动安排的一个甘特图示例。
图4-3 项目甘特图
3)关键路径
甘特图简单直观,但不适合表达各项任务之间的依赖关系和关键路径。可使用网络图画出各工作任务之间的依赖关系并标出关键路径。
图4-4是教室预订系统开发项目关键路径的一个示例。
图4-4 项目关键路径
4)预算
逐项列出本开发项目所需要的劳务(包括人员的数量和时间)以及经费的预算(包括办公费、差旅费、机时费、资料费、通信设备和专用设备的租金等)和来源。
5)关键问题
逐项列出能够影响整个项目成败的关键问题、技术难点,指出这些问题对项目的影响。
4.3.2.3 技术流程计划
1)方法、工具和技巧
扼要列出本项目计划采用的主要技术方法、工具、技巧等。
2)技术标准
通过引用列出项目需遵循的技术标准等内容,例如:业务建模指南;用户界面指南;用例建模指南;设计指南;编程指南;测试指南;代码风格指南。
4.3.2.4 外部支持条件
说明为支持本项目的开发所需要的各种外部条件。
1)需由用户承担的工作
逐项列出需要用户承担的工作和完成期限,包括需由用户提供的条件及提供时间。
2)由外单位提供的条件
逐项列出需要外单位分合同承包者承担的工作和完成的时间,包括需要由外单位提供的条件和提供的时间。
4.3.2.5 专题计划要点
说明本项目开发中需制定的各个专题计划(如需求管理计划、进度控制计划、预算控制计划、质量控制计划、风险管理计划、配置管理计划、系统测试计划、系统验收计划、开发人员培训计划、安全保密计划、用户培训计划、系统安装计划等)的要点。