4.2 工作流程
说明项目采用什么样的工作流程进行。如瀑布法工作流程,原型法工作流程、螺旋型工作流程、迭代法工作流程,也可以是自己创建的工作流程。不同的流程将影响后面的工作计划的制定。必要时画出本项目采用的工作流程图及适当的文字说明。
4.3 总体进度计划
这里所说的总体进度计划为高层计划。作为补充,应当分阶段制定项目的阶段计划,这些阶段计划不在这份文档中,当要以这份总体计划为依据。
总体进度计划要依据确定的项目规模,列表项目阶段划分、阶段进度安排及每阶段应提交的阶段成果,在阶段时间安排中要考虑项目阶段成果完成、提交评审、修改的时间。
对于项目计划、项目准备、需求调研、需求分析、构架设计或概要设计、编码实现、测试、移交、内部培训、用户培训、安装部署、试运行、验收等工作,给出每项工作任务的预定开始日期、完成日期及所需的资源,规定各项工作任务完成的先后顺序以及表征每项工作任务完成的标志性事件(里程碑)。
例如
需求评审
设计评审
表格中检查点/里程碑等阶段划分为举例,实际作业阶段划分、阶段成果等请根据项目需要确定。
制定软件项目进度计划可以使用一些专门的工具,常用的是Microsoft的Project作为辅助工具,功能比较强大,比较适合于规模较大的项目,但无法完全代替项目计划书,特别是一些主要由文字来说明的部分。小规模的项目可简便地使用EXCEL作为辅助工具。关于如何使用这些工具不在此作详细说明。
制定软件项目进度计划应当考虑以下一些因素:
1)对于系统需求和项目目标的掌握程度。如开始时对于系统需求和项目目标只有比较数的了解,只能制定出比较粗的进度计划,等到需求阶段或设计阶段结束,应该进一步细化进度计划。
2)软件系统规模和项目规模,这两个不是一个概念。软件系统规模往往是从功能点的估算或其他估算方式得来的,而项目规模还要考虑对文档数量与质量的要求,使用的开发工具、新技术、多少复用、沟通的方便程度、客户方的情况、需要遵守的标准规范等等等等。例如,完成一个大型的系统,在一定的时间内一个人或几个人的智力和体力是承受不了的。由于软件是逻辑、智力产品,盲目增加软件开发人员并不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理方面的问题将更为严重。
3)软件系统复杂程度和项目复杂程度:和软件系统规模和项目规模一样,软件系统的复杂程度主要是考虑软件系统本身的功能、架构的复杂程度,而项目的复杂程度主要是指项目团队成员的构成、项目任务的复杂程度、项目干系人的复杂程度、需求调研的难易程度,多项目情况下资源保障的情况,等等等等。软件系统的规模与软件系统的复杂程度未必是成比例的关系;同样项目的规模与项目的复杂程度未必是成比例的关系。
4)项目的工期要求,是项目的紧急程度。有些项目规模大,却因为与顾客签订了合同,或者为了抢先占领市场,工期压缩得很紧,这时要考虑如何更好地合理安排进度,多增加人选多采用加班的方式是一种万不得已的选择。增加人选除了增加人的成本外必定会增加沟通的成本(熟悉项目任务所需要的时间);加班如果处理不好会造成情绪上的问题,也可能会因为过于忙碌而无法顾及质量,造成质量的下滑。
5)项目成员的能力。这些能力包括项目经理的管理能力,系统分析员的分析能力、系统设计人员的设计能力、程序员的编码能力、测试人员的测试能力,以及企业或项目团队激发出这些能力的能力。从另外一个角度看还有总体上对客户行业业务的熟悉程度;对于建模工具、开发工具、测试工具等技术的掌握程度;企业内部对行业业务知识和主要技术的知识积累。