软件开发项目计划书编写说明
2 项目概述
2.1 项目目标
设定项目目标就是把项目要完成的工作用清晰的语言描述出来,让项目团队每一个成员都有明确的概念。注意,不要简单地说成在什么什么时间完成
项目目标应当符合SMART原则:
l S Specific 明确的陈述
l M Measurable 可以衡量的结果
l A Attainable 可以达成的目标
l R Realistic 合理的,现实的或者说是能和实际
l T Trackable 可以跟踪的
项目目标可以进行横向的分解也可以进行纵向的分解。横向分解一般按照系统的功能或按照建设单位的不同业务要求,如分解为第一目标、第二目标等等;纵向的分解一般是指按照阶段,如分解为第一阶段目标、第二阶段目标等等,或近期目标、中期目标、远期目标等等。阶段目标一般应当说明目标实现的较为明确的时间。一般要在说明了总目标的基础上再说明分解目标,可加上“为实现项目的总目标,必须实现以下三个阶段目标······”
2.2 产品目标与范围
根据项目输入(如合同、立项建议书、项目技术方案、标书等)说明此项目要实现的软件系统产品的目的与目标及简要的软件功能需求。对项目成果(软件系统)范围进行准确清晰的界定与说明是
2.3 假设与约束
对于项目必须遵守的各种约束(时间、人员、预算、设备等)进行说明。这些内容将限制你实现什么、怎样实现、什么时候实现、成本范围等种种制约条件。
假设是通过努力可以直接解决的问题,而这些问题是一定要解决才能保证项目按计划完成。如:“系统分析员必须在3天内到位”或“用户必须在8月8日前确定对需求文档进行确认”
约束一般是难以解决的问题,但可以通过其他途径回避或弥补、取舍,如人力资源的约束限制,就必须牺牲进度或质量等等。
假设与约束是针对比较明确会出现的情况,如果问题的出现具有不确定性,则应该在风险分析中列出,分析其出现的可能性(概率)、造成的影响、应当采取的相应措施。
2.4 项目工作范围
说明为实现项目的目标需要进行那些工作。在必要时,可描述与合作单位和用户的工作分工。
注意产品范围与项目工作范围的不同含义。
产品范围界定:软件系统产品本身范围的特征和功能范围。
工作范围界定:为了能够按时保质交付一个有特殊的特征和功能的软件系统产品所要完成的那些工作任务。
产品范围的完成情况是参照客户的需求来衡量的,而项目范围的完成情况则是参照计划来检验的。这两个范围管理模型间必须要有较好的统一性,以确保项目的具体工作成果,能按特定的产品要求准时交付。
2.5 应交付成果
2.5.1 需完成的软件
列出需要完成的程序的名称、所用的编程语言及存储程序的媒体形式。其中软件对象可能包括:源程序、数据库对象创建语句、可执行程序、支撑系统的数据库数据、配置文件、第三方模块、界面文件、界面原稿文件、声音文件、安装软件、安装软件源程序文件等等。
2.5.2 需提交用户的文档
列出需要移交给用户的每种文档的名称、内容要点及存储形式,如需求规格说明书、帮助手册等。此处需要移交用户的文档可参考合同中的规定。
2.5.3 须提交内部的文档
可根据《GB8567-88计算机软件产品开发文件编制指南》附录O:“文件编制实施规定的实例(参考件)”结合各企业实际情况调整制定《软件开发文档编制裁减衡量因素表》。根据《因素表》确定项目对应的项目衡量因素取值,以确定本项目应完成的阶段成果。将不适用于本项目的内容裁减,以减少不必要的项目任务和资源。
根据因素取值列出本项目应完成的阶段成果,说明本项目取值所在的区间,将其他因素值区间删除。
2.5.4 应当提供的服务
根据合同或某重点建设工作需要,列出将向用户或委托单位提供的各种服务,例如
2.6 项目开发环境
说明开发本软件项目所需要的软硬件环境和版本、如操作系统、开发工具、数据库系统、配置管理工具、网络环境。环境可能不止一种,如开发工具可能需要针对Java的,也需要针对C++的。有些环境可能无法确定,需要在需求分析完成或设计完成后才能确定所需要的环境。
2.7 项目验收方式与依据
说明项目内部验收和用户验收的方式,如验收包括交付前验收、交付后验收、试运行(初步)验收、最终验收、第三方验收、
3 项目团队组织
3.1 组织结构
说明项目团队的组织结构。项目的组织结构可以从所需角色和项目成员两个方面描述。所需角色主要说明为了完成本项目任务,项目团队需要哪些角色构成,如项目经理、计划经理、系统分析员(或小组)、构架
注意虽然有一些通用的结构可以套用,但各种不同规模、不同形式的项目组织结构是不一样的。如产品研发项目可能就不需要实施人员(小组),但需要知识转移方面的人员(小组)。而软件编码外包的项目则不需要程序员,测试人员也可以适当地减少。
3.2 人员分工
确定项目团队的的每个成员属于组织结构中的什么角色,他们的技术水平、项目中的分工与配置,可以用列表方式说明,具体编制时按照项目实际组织结构编写。以下是一个示例。
3.3 协作与沟通
项目的沟通与协作首先应当确定协作与沟通的对象,就是与谁协作、沟通。沟通对象应该包括所有项目干系人,而项目干系人包括了所有项目团队成员、项目接口人员、项目团队外部相关人员等等。
其次应当确定协作模式与沟通方式。沟通方式如会议、使用电话、QQ、内部邮件、外部邮件、QuickPlace、聊天室等等。其中邮件沟通应当说明主送人、抄送人,聊天室沟通方式应当约定时间周期。而协作模式主要说明在出现什么状况的时候各个角色应当(主动)采取什么措施,包括沟通,如何互相配合来共同完成某项任务。定期的沟通一般要包括项目阶段报告、项目阶段计划、阶段会议等
3.3.1 项目团队内部协作
本节说明在项目开发过程中项目团队内部的协作模式和沟通方式、频次、沟通成果记录办法等内容。
3.3.2 项目接口人员
应当说明接口工作的人员即他们的职责、联系方式、沟通方式、协作模式,包括:
a、负责本项目同用户的接口人员;
b、负责本项目同本企业各管理机构,如计划管理部门、合同管理部门、采购部门、质量管理部门、财务部门等的接口人员;
c、负责本项目同分包方的接口人员。
3.3.3 项目团队外部沟通与协作模式
项目团队外部包括企业内部管理协助部门、项目委托单位、客户等等。本节说明在项目开发过程中项目团队内部与接口人员、客户沟通的方式、频次、沟通成果记录办法等内容。明确最终用户、直接用户及其所在本企业/部门名称和联系电话。明确协作开发的有关部门的名称、经理姓名、承担的工作内容以及工作实施责任人的姓名、联系电话。确定有关的合作单位的名称、负责人姓名、承担的工作内容以及实施人的姓名、联系电话。
4 实施计划
4.1 风险评估及对策
识别或预估项目进行过程中可能出现的风险。应该分析风险出现的可能性(概率)、造成的影响、根据影响应该采取的对策,采取的措施。风险识别包括识别内在风险及外在风险。内在风险是指项目工作组能加以控制和影响的风险,如人事任免和成本估计等。外在风险指超出项目工作组等控制力和影响力之外的风险,如市场转向或政府行为等
风险的对策包括:避免:排除特定危胁往往靠排除危险起源;减缓:减少风险事件的预期资金投入来减低风险发生的概率,以及减少风险事件的风险系数;吸纳:接受一切后果,可以是积极的(如制定预防性计划来防备风险事件的发生),也可以是消极的(如某些费用超支则接受低于预期的利润)。
对于软件开发项目而言,在分析、识别和管理风险上投入足够的时间和人力可以使项目进展过程更加平稳,提高项目跟踪和控制的能力,由于在问题发生之前已经做了周密计划,因而对项目的成功产生更加充分的信心。
软件开发项目常见预估的风险:
1)
规模大,规模估算不精确甚至误差很大;就规模而言,用户要求交付期、费用很紧;预料外的工作(测试未完时的现场对应等);
2) 技术上的风险
使用新的开发技术、新设备等,或是新的应用组合,没有经验;是新的行业或业务,没有经验;性能上的要求很严;
3) 用户体制上的问题
用户管理不严,恐怕功能决定、验收不能顺利地完成(或者出现了延迟);或者恐怕功能会多次变更;与用户分担开发,恐怕工程会拖延(或者出现了延迟);用户或其他相关单位承担的工作有可能延误;
4) 其它:应该包含此处没有、但据推测有风险的项目。
4.2 工作流程
说明项目采用什么样的工作流程进行。如瀑布法工作流程,原型法工作流程、螺旋型工作流程、迭代法工作流程,也可以是自己创建的工作流程。不同的流程将影响后面的工作计划的制定。必要时画出本项目采用的工作流程图及适当的文字说明。
4.3 总体进度计划
这里所说的总体进度计划为高层计划。作为补充,应当分阶段制定项目的阶段计划,这些阶段计划不在这份文档中,当要以这份总体计划为依据。
总体进度计划要依据确定的项目规模,列表项目阶段划分、阶段进度安排及每阶段应提交的阶段成果,在阶段时间安排中要考虑项目阶段成果完成、提交评审、修改的时间。
对于项目计划、项目准备、需求调研、需求分析、构架设计或概要设计、编码实现、测试、移交、内部培训、用户培训、安装部署、试运行、验收等工作,给出每项工作任务的预定开始日期、完成日期及所需的资源,规定各项工作任务完成的先后顺序以及表征每项工作任务完成的标志性事件(里程碑)。
例如
`
需求评审
设计评审
表格中检查点/里程碑等阶段划分为举例,实际作业阶段划分、阶段成果等请根据项目需要确定。
制定软件项目进度计划可以使用一些专门的工具,最常用的是Microsoft的Project作为辅助工具,功能比较强大,比较适合于规模较大的项目,但无法完全代替项目计划书,特别是一些主要由文字来说明的部分。小规模的项目可简便地使用EXCEL作为辅助工具。关于如何使用这些工具不在此作详细说明。
制定软件项目进度计划应当考虑以下一些因素:
1)对于系统需求和项目目标的掌握程度。如开始时对于系统需求和项目目标只有比较数的了解,就只能制定出比较粗的进度计划,等到需求阶段或设计阶段结束,就应该进一步细化进度计划。
2)软件系统规模和项目规模,这两个不是一个概念。软件系统规模往往是从功能点的估算或其他估算方式得来的,而项目规模还要考虑对文档数量与质量的要求,使用的开发工具、新技术、多少复用、沟通的方便程度、客户方的情况、需要遵守的标准规范等等等等。例如,完成一个大型的系统,在一定的时间内一个人或几个人的智力和体力是承受不了的。由于软件是逻辑、智力产品,盲目增加软件开发人员并不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理方面的问题将更为严重。
3)软件系统复杂程度和项目复杂程度:和软件系统规模和项目规模一样,软件系统的复杂程度主要是考虑软件系统本身的功能、架构的复杂程度,而项目的复杂程度主要是指项目团队成员的构成、项目任务的复杂程度、项目干系人的复杂程度、需求调研的难易程度,多项目情况下资源保障的情况,等等等等。软件系统的规模与软件系统的复杂程度未必是成比例的关系;同样项目的规模与项目的复杂程度未必是成比例的关系。
4)项目的工期要求,就是项目的紧急程度。有些项目规模大,却因为与顾客签订了合同,或者为了抢先占领市场,工期压缩得很紧,这时就要考虑如何更好地合理安排进度,多增加人选多采用加班的方式是一种万不得已的选择。增加人选除了增加人的成本外必定会增加沟通的成本(熟悉项目任务所需要的时间);加班如果处理不好会造成情绪上的问题,也可能会因为过于忙碌而无法顾及质量,造成质量的下滑。
5)项目成员的能力。这些能力包括项目经理的管理能力,系统分析员的分析能力、系统设计人员的设计能力、程序员的编码能力、测试人员的测试能力,以及企业或项目团队激发出这些能力的能力。从另外一个角度看还有总体上对客户行业业务的熟悉程度;对于建模工具、开发工具、测试工具等技术的掌握程度;企业内部对行业业务知识和主要技术的知识积累。
4.4 项目控制计划
4.4.1 质量保证计划
执行质量评审活动,对过程质量进行控制。规模较大的项目应当单独编写《软件开发项目质量计划》。根据GB/T 12504 计算机软件质量保证计划规范,内容包括:
l 引言(本章节包括质量计划的目的、定义、参考资料)
l 管理(描述负责软件质量管理的机构、任务及其相关的职责)
l 文档(列出在该软件的开发、验证与确认以及使用与维护等阶段中需要编制的文档,并描述对文档进行评审与检查的准则)
l 标准、条例和约定(列出软件开发过程中要用到的标准、条例和约定,并列出监督和保证执行的措施)
l 评审和检查(规定所要进行的技术和管理两个方面的评审和检查工作,并编制或引用有关的评审和检查规程,以及通过与否的技术准则。至少要进行软件需求评审、概要设计评审、软件验证与确认评审、软件系统功能检查、程序和文档物理检查)
l 软件配置管理(编制有关配置管理条款,或在“4.4.4 配置管理计划”中说明,或引用按照《GB/T 12505 计算机软件配置管理计划规范》单独制定的文档)
l 工具、技术和方法(指明用于支持特定软件项目质量管理工作的工具、技术和方法,指出它们的目的和用途)
l 媒体控制(说明保护计算机程序物理媒体的方法和设施,以免非法存取、意外损坏或自然老化)
l 对供货单位的控制(供货单位包括项目承办单位、软件销售单位、软件开发单位。规定对这些供货单位进行控制的规程,从而保证项目承办单位从软件销售单位购买的、其他开发单位开发的或从开发单位现存软件库中选用的软件能满足规定的需求。)
l 记录的收集、维护和保存(指明需要保存的软件质量保证活动的记录,并指出用于汇总、保护和维护这些记录的方法和设施,并指明要保存的期限)
4.4.2 进度控制计划
(可直接引用以下描述或根据项目情况制定本节内容)
本项目的进度监控执行本企业《项目管理规范》,由本企业过程控制部门如质量管理部统一进行监控,并保留在监控过程中产生的日常检查记录。
4.4.3 预算监控计划
说明如何检查项目预算的使用情况。根据项目情况需要制定。
4.4.4 配置管理计划
编制有关软件配置管理的条款,或引用按照GB/T 12505单独制订《配置管理计划》文档。在这些条款或文档中,必须规定用于标识软件产品、控制和实现软件的修改、记录和报告修改实现的状态以及评审和检查配置管理工作等四方面的活动。还必须规定用以维护和存储软件受控版本的方法和设施;必须规定对所发现的软件问题进行报告、追踪和解决的步骤,并指出实现报告、追踪和解决软件问题的机构及其职责。
根据《GB/T 12505 计算机软件配置管理计划规范》,软件配置管理计划内容如下:
l 引言(本章节包括质量计划的目的、定义、参考资料)
l 管理(描述负责软件配置管理的机构、任务、职责及其有关的接口控制。)
l 软件配置管理活动(描述配置标识、配置控制、配置状态记录与报告以及配置检查与评审等到四方面的软件配置管理活动的需求。)
l 工具、技术和方法(指明为支持特定项目的软件配置管理所使用的软件工具、技术和方法,指明它们的目的,并在开发者所有权的范围内描述其用法)
l 对供货单位的控制(供货单位是指软件销售单位、软件开发单位或软件子开发单位。必须规定对这些供货单位进行控制的管理规程,从而使从软件销售单位购买的、其他开发单位开发的或从开发单位现存软件库中选用的软件能满足规定的软件配置管理需求)
l 记录的收集、维护和保存(指明要保存的软件配置管理文档,指明用于汇总、保护和维护这些文档的方法和设施,并指明要保存的期限)