1、17.1 7.1 管理文档概述管理文档概述 工程化的软件生产方式是软件业界始终在不懈追求的目标。工程化的软件生产方式是软件业界始终在不懈追求的目标。软件项目管理方法适用与否,对软件项目的成败有着举足轻重软件项目管理方法适用与否,对软件项目的成败有着举足轻重的作用。而软件项目管理方法改进的途径之一,就是建立行之的作用。而软件项目管理方法改进的途径之一,就是建立行之有效、可操作性强的软件管理文档。有效、可操作性强的软件管理文档。软件管理文档软件管理文档项目开发计划项目开发计划测试计划测试计划测试分析报告测试分析报告开发进度报告开发进度报告开发总结报告开发总结报告管理文档的组成:管理文档的组成:管理
2、文档有以下几个方面的作用:管理文档有以下几个方面的作用:维护人员维护人员软件开发软件开发管理人员管理人员软件开发人员软件开发人员软件操作软件操作人员人员用户用户软件管软件管理文档理文档 管理文档的作用主要体现在管理文档的作用主要体现在3 3个方面:个方面:是软件开发各阶段工作成果的体现;是软件开发各阶段工作成果的体现;把软件开发过程中的一些把软件开发过程中的一些“不可见不可见”的事物转换成的事物转换成“可见可见”的文字资料;的文字资料;提供了管理人员、开发人员、操作人提供了管理人员、开发人员、操作人员和用户之间相互沟通、协调的窗口。员和用户之间相互沟通、协调的窗口。27.2 7.2 项目开发计
3、划项目开发计划 项目开发计划又称软件定义文档,是和软件本身一样重要的项目开发计划又称软件定义文档,是和软件本身一样重要的知识资产,是项目启动后第一件最重要的工作。知识资产,是项目启动后第一件最重要的工作。项目开发计划一般包括资源需求、工作分解、工作目标、开项目开发计划一般包括资源需求、工作分解、工作目标、开发团队及人员安排、进度安排、内外接口约定、风险分析以及软发团队及人员安排、进度安排、内外接口约定、风险分析以及软件质量控制机制等。件质量控制机制等。1.1.项目开发计划书项目开发计划书 项目开发计划书的具体内容随着项目和开发机构类型的不同而不同,一项目开发计划书的具体内容随着项目和开发机构类
4、型的不同而不同,一般都会包括以下几个部分:般都会包括以下几个部分:项目目标项目目标。简述项目目标,并列出影响管理的约束条件,如预算、时间。简述项目目标,并列出影响管理的约束条件,如预算、时间 开发团队及人员安排开发团队及人员安排。阐述团队组织方式、人员构成及分工。阐述团队组织方式、人员构成及分工 软硬件资源需求软硬件资源需求。分析和列出所需资源,注明估算的资源需要时间及价格。分析和列出所需资源,注明估算的资源需要时间及价格 工作分解工作分解。分解项目为一系列活动,确定项目里程碑及可交付文档。分解项目为一系列活动,确定项目里程碑及可交付文档 项目进度项目进度。描述项目各活动之间的依赖关系、到达里
5、程碑的时间等。描述项目各活动之间的依赖关系、到达里程碑的时间等 风险分析风险分析。分析项目可能存在的风险、发生的可能性及应对风险的策略。分析项目可能存在的风险、发生的可能性及应对风险的策略 监控机制监控机制。制定详细、可操作的项目监控机制,明确管理报告的递交时间。制定详细、可操作的项目监控机制,明确管理报告的递交时间 开发估算开发估算。包括规模、工作量、成本等的估算,要求依据并积累历史数据。包括规模、工作量、成本等的估算,要求依据并积累历史数据 制定项目开发计划的过程被称为项目策划。制定项目开发计划的过程被称为项目策划。由于计划所具有的在时间上的提前性,项目开由于计划所具有的在时间上的提前性,
6、项目开发计划通常会经常性的修正,有些部分甚至会频繁发计划通常会经常性的修正,有些部分甚至会频繁的改变!的改变!而部分内容的变化,会影响开发计划的正确性而部分内容的变化,会影响开发计划的正确性和符合性,使其越来越偏离项目实际,最后变得没和符合性,使其越来越偏离项目实际,最后变得没有价值。如随着项目需求的逐渐明确引起的项目计有价值。如随着项目需求的逐渐明确引起的项目计划细化、项目可提供资源变化引起的项目计划的变划细化、项目可提供资源变化引起的项目计划的变化等。化等。所以,在实际工作中,需要有明确的责任人和所以,在实际工作中,需要有明确的责任人和操作原则,来对项目计划实施维护,并对项目计划操作原则,
7、来对项目计划实施维护,并对项目计划的变更实施必要的控制。的变更实施必要的控制。另一个重要的方面是,在组织文档时,就要考另一个重要的方面是,在组织文档时,就要考虑到这种频繁变更的需要,使得当变更发生时,文虑到这种频繁变更的需要,使得当变更发生时,文档的相应部分能够容易替换。档的相应部分能够容易替换。32.2.工作分解结构工作分解结构 工作分解结构工作分解结构(work breakdown structure,WBS)(work breakdown structure,WBS)是对整个是对整个项目工作的分级描述,是项目计划开发的第一步。分解示意如项目工作的分级描述,是项目计划开发的第一步。分解示意
8、如下图所示。下图所示。目标目标活动活动活动活动活动活动活动活动活动活动活动活动1 1级级2 2级级m m级级工作包工作包任务任务1 1任务任务2 2任务任务3 3 任务任务n n活动活动 工作分解结构设工作分解结构设计一般可以采用计一般可以采用2 2种方种方法:法:-自上而下自上而下的方法。的方法。从项目的目标开始,从项目的目标开始,逐步分解,直到具逐步分解,直到具体任务;体任务;-自下而上自下而上的方法。的方法。也称集思广益法。也称集思广益法。即从底层开始,逐即从底层开始,逐层集成,最后汇合层集成,最后汇合后完成目标。后完成目标。工作分解工作分解结构主要有结构主要有4 4个用途个用途:1.1
9、.思路工具思路工具:可以描述项目的整体思路,是一个计:可以描述项目的整体思路,是一个计划和设计的工具;划和设计的工具;2.2.结构设计工具结构设计工具:是项目工作的结构图,可以清晰:是项目工作的结构图,可以清晰表达项目各项工作间的相互关系;表达项目各项工作间的相互关系;3.3.计划工具计划工具:能够展示项目全貌,说明为完成项目:能够展示项目全貌,说明为完成项目所需完成的各项活动;所需完成的各项活动;4.4.项目状态报告工具项目状态报告工具:可以作为项目状态报告的框:可以作为项目状态报告的框架。随着低一级项目活动的完成,项目由下而上架。随着低一级项目活动的完成,项目由下而上不断整合,某一项工作的
10、完成将成为里程碑,所不断整合,某一项工作的完成将成为里程碑,所以,工作分解结构就定义了里程碑事件。以,工作分解结构就定义了里程碑事件。43.3.项目里程碑与阶段性文档项目里程碑与阶段性文档 由于软件产品是无形的,因此,管理者需要通过文档的形由于软件产品是无形的,因此,管理者需要通过文档的形式获得信息,了解软件的开发状况,以作出管理的决定。式获得信息,了解软件的开发状况,以作出管理的决定。里程碑的建立,可以描述软件开发活动一个过程的终结。里程碑的建立,可以描述软件开发活动一个过程的终结。在每个里程碑,都有一个正式的可以提交给管理层的阶段性结在每个里程碑,都有一个正式的可以提交给管理层的阶段性结果
11、。比如,一份报告。果。比如,一份报告。里程碑报告的内容不拘,以能清楚说明阶段性结果为标准,里程碑报告的内容不拘,以能清楚说明阶段性结果为标准,应能代表项目中一个特定逻辑意义上的阶段的终结。应能代表项目中一个特定逻辑意义上的阶段的终结。要建立里程碑,软件过程就一定要分解成一系列相关的基要建立里程碑,软件过程就一定要分解成一系列相关的基本活动,而每个基本活动都要有相应的输出结果。如下图,是本活动,而每个基本活动都要有相应的输出结果。如下图,是一个需求描述中的活动,其中每个活动都有主要输出。一个需求描述中的活动,其中每个活动都有主要输出。可行性研究可行性研究可行性研究可行性研究可行性研究可行性研究可
12、行性研究可行性研究可行性研究可行性研究可行性报告可行性报告用户需求用户需求估算报告估算报告体系结果设计体系结果设计系统需求系统需求54.4.项目进度项目进度 项目管理者要求估算完成各项活动所需的时间和资源,并将项目管理者要求估算完成各项活动所需的时间和资源,并将它们严密的组织起来,以安排项目进度。不同的项目,具有不同它们严密的组织起来,以安排项目进度。不同的项目,具有不同的项目开发进度。的项目开发进度。初始的项目进度安排往往是不精确的,但随着项目进展信息初始的项目进度安排往往是不精确的,但随着项目进展信息的不断增多,进度安排也会越来越接近项目实际进度,因此,必的不断增多,进度安排也会越来越接近
13、项目实际进度,因此,必须不断更新项目进度。须不断更新项目进度。项目进度包括将一个项目分解为若干独立的活动,以及判断项目进度包括将一个项目分解为若干独立的活动,以及判断完成这些活动所需的时间。通常,有些活动是可以并行的,项目完成这些活动所需的时间。通常,有些活动是可以并行的,项目管理者应组织并协调这些并行的工作。项目进度过程见下图:管理者应组织并协调这些并行的工作。项目进度过程见下图:识别活动识别活动识别活动识别活动依赖关系依赖关系估算活动估算活动的资源的资源为活动分为活动分配资源配资源创建项目创建项目图表图表软件需求软件需求活动图表及条形图活动图表及条形图 在在进度估算时,管理者需要有一定的余
14、量。进度估算时,管理者需要有一定的余量。如如项目难度大,则花费的时间也会较多。又如,项项目难度大,则花费的时间也会较多。又如,项目个别开发人员可能发生的变动,硬件环境的变化等,目个别开发人员可能发生的变动,硬件环境的变化等,都是在估算项目进度时必须考虑的因素。都是在估算项目进度时必须考虑的因素。除了时间和人员、环境的变化,资源除了时间和人员、环境的变化,资源和预算也需要和预算也需要考虑适当的余量。考虑适当的余量。恰当的估算方法是采用恰当的估算方法是采用“理想实际理想实际”方式。即先方式。即先估算理想值,然后逐步加入预计出现的状况、偶然因素估算理想值,然后逐步加入预计出现的状况、偶然因素致成的状
15、况、项目开发人员的素质和经验致成的状况、项目开发人员的素质和经验 作为经验数据,一般在最初估算的基础上增加作为经验数据,一般在最初估算的基础上增加30%30%作作为实际可能发生的状况值,再预留为实际可能发生的状况值,再预留20%20%的估算值给所谓不的估算值给所谓不可预见的其它问题,则进度估算的结果会较符合实际。可预见的其它问题,则进度估算的结果会较符合实际。65.5.运用图和表描述项目进度运用图和表描述项目进度 项目进度可以采用图表工具更直观的表示任务分解、活动依项目进度可以采用图表工具更直观的表示任务分解、活动依赖关系和人员分配情况等。赖关系和人员分配情况等。下下表是一个表是一个“任务的持
16、续时间及其依赖关系任务的持续时间及其依赖关系”的例子。的例子。任任 务务持续时间持续时间(天数天数)依依 赖赖 关关 系系T1T18 8T2T21515T3T31515T1(M1)T1(M1)T4T41010T5T51010T2T2,T4(M2)T4(M2)T6T65 5T1T1,T2(M3)T2(M3)T7T72020T1(M1)T1(M1)T8T82525T4(M5)T4(M5)T9T91515T3T3,T6(M4)T6(M4)T10T101515T5T5,T7(M7)T7(M7)T11T117 7T9(M6)T9(M6)T12T121010T11(M8)T11(M8)7甘特图法甘特图法(
17、Gantt Chart)(Gantt Chart)的例的例tw12345678ABCD当前进度当前进度优点:简单,能动态地反优点:简单,能动态地反映开发进程。映开发进程。缺点:难以反映多个任务缺点:难以反映多个任务间的逻辑关系。间的逻辑关系。条形图和活动网络图是表示项目进度的两种图形表示法。条形图和活动网络图是表示项目进度的两种图形表示法。(1)(1)条形图条形图。又称甘特图法。又称甘特图法(Gantt Chart)(Gantt Chart),可以表示面向活动,可以表示面向活动的负责人是谁,以及活动的开始和结束时间。如下图所示的例的负责人是谁,以及活动的开始和结束时间。如下图所示的例子。子。8
18、012345678 codingA testingA debuggingAB coding understandingC modifyingC testingB testingC debuggingB debuggingC testingABC012356789 codingA testingA debuggingA understandingC modifyingC testingB testingC debuggingB debuggingC testingABC4 debuggingAB coding例例:开发三个模块:开发三个模块A A、B B、C C。A A为公用模块,为公用模块,B
19、 B、C C的测试须等的测试须等A A的调试完成后进行。的调试完成后进行。A A的编的编码需码需6 6天,测试天,测试8 8天,调试天,调试6 6天。天。B B的编码需的编码需7 7天,测试天,测试8 8天,调试天,调试6 6天。天。C C利用已有的模块,须先理解原模块利用已有的模块,须先理解原模块8 8天,再修改天,再修改8 8天,测试天,测试9 9天,调试天,调试7 7天。天。最后三模块集成测试最后三模块集成测试需需5 5天完成。天完成。(2)(2)活动网络图活动网络图。又称网络计划法。又称网络计划法 表示构成一个项目的不同活动之间的依赖关系。是用网状表示构成一个项目的不同活动之间的依赖关
20、系。是用网状图表安排与控制各项活动的方法。最适合反映多个工作之间的图表安排与控制各项活动的方法。最适合反映多个工作之间的逻辑关系。逻辑关系。9持续时间持续时间Lasting Time机动时间机动时间Slack Time编编号号EarliestStart TimeLatestStart Time012345678941363029222014126006142082028293641(0)(0)(15)(4)(2)(4)(0)(2)(0)(2)(0)(0)686678886975(1)标出标出 Lasting Time(2)标出标出 EST:=从起点始,所有进从起点始,所有进入事件的入事件的 E
21、ST+LT 中最大的中最大的(3)标出标出 LST:=从终点从终点(EST=LST)始,所有离开事件的始,所有离开事件的 LST LT 中最小的中最小的(4)标出标出 ST:=终点终点LST 起点起点EST LT(5)标出标出Key Path:即即EST=LST的的所有事件组成的路径所有事件组成的路径 通常,通常,甘特图甘特图适合按开发阶段安排,以作项目总体进度控制。适合按开发阶段安排,以作项目总体进度控制。网络计划网络计划便于在细节上安排人力,适合按开发阶段或子项目的工便于在细节上安排人力,适合按开发阶段或子项目的工作步骤安排。作步骤安排。106.6.风险管理风险管理 由于绝大多数软件项目都
22、存在不确定性,因此,风险管理由于绝大多数软件项目都存在不确定性,因此,风险管理对软件项目而言就尤为重要。对软件项目而言就尤为重要。根据产生的影响不同,一般将风险分为三类:根据产生的影响不同,一般将风险分为三类:项目风险项目风险、产品风险产品风险和和业务风险业务风险。下表给出了一些典型风险:。下表给出了一些典型风险:风风 险险风险类型风险类型风风 险险 描描 述述职员跳槽职员跳槽项目项目有经验的职员未完成项目就跳槽有经验的职员未完成项目就跳槽管理层变更管理层变更项目项目不同的管理层考虑、关注的事情会不同不同的管理层考虑、关注的事情会不同硬件缺乏硬件缺乏项目项目项目所需的基础硬件没有按期交付项目所
23、需的基础硬件没有按期交付需求变更需求变更项目和产品项目和产品软件需求与预期的相比,将会有较大变化软件需求与预期的相比,将会有较大变化描述延迟描述延迟项目和产品项目和产品有关主要接口的描述未按期完成有关主要接口的描述未按期完成低估了系统规模低估了系统规模项目和产品项目和产品过低估计了系统的规模过低估计了系统的规模CASECASE工具性能较差工具性能较差产品产品支持项目的支持项目的CASECASE工具达不到要求工具达不到要求技术变更技术变更业务业务系统的基础技术被新技术取代系统的基础技术被新技术取代产品竞争产品竞争业务业务系统还未完成,其它有竞争力的产品就已经上市了系统还未完成,其它有竞争力的产品
24、就已经上市了11 下下图是风险管理过程示意图。图是风险管理过程示意图。风险识别风险识别风险分析风险分析风险规划风险规划风险监控风险监控潜在的风险潜在的风险列表列表优先级高的优先级高的风险列表风险列表风险规避和风险规避和应急计划应急计划风险评估风险评估(1)(1)风险识别风险识别 风险识别是风险风险识别是风险管理的第一阶段,其管理的第一阶段,其目的是发现可能的风目的是发现可能的风险。右表给出了可能险。右表给出了可能的风险及风险类型的的风险及风险类型的实例。实例。这些风险将可能这些风险将可能影响到软件产品、过影响到软件产品、过程或业务。程或业务。风险类型风险类型可可 能能 的的 风风 险险技术技术
25、系统使用的数据库的处理速度不够快系统使用的数据库的处理速度不够快要复用的软件组件有缺陷,限制了项目的性能要复用的软件组件有缺陷,限制了项目的性能人员人员招聘不到符合项目技术要求的职员招聘不到符合项目技术要求的职员在项目的非常时刻,关键职员生病,无法发挥作用在项目的非常时刻,关键职员生病,无法发挥作用职员所需的培训跟不上职员所需的培训跟不上机构机构重新进行机构调整,由不同的管理层负责这个项目重新进行机构调整,由不同的管理层负责这个项目开发机构的财务出现问题,必须削减项目预算开发机构的财务出现问题,必须削减项目预算工具工具CASE工具产生的编码效率低工具产生的编码效率低CASE工具不能被集成工具不
26、能被集成需求需求需求发生变化,主体设计要返工需求发生变化,主体设计要返工客户不了解需求变更对项目造成的影响客户不了解需求变更对项目造成的影响估算估算低估了软件开发所需要的时间低估了软件开发所需要的时间低估了缺陷的修补率低估了缺陷的修补率低估了软件的规模低估了软件的规模12(2)(2)风险分析风险分析 风险分析就是对每一个已经识别的风险,对其出现的可能性和影响的严风险分析就是对每一个已经识别的风险,对其出现的可能性和影响的严重性作出判断。重性作出判断。风险风险出现出现可能性的评估大致可以有:非常小可能性的评估大致可以有:非常小(10%)(75%)(75%)。风风 险险出现的可能性出现的可能性后果
27、后果开发机构的财务出现问题,必须削减项目预算开发机构的财务出现问题,必须削减项目预算小小灾难性灾难性招聘不到符合项目技术要求的职员招聘不到符合项目技术要求的职员大大灾难性灾难性在项目的非常时刻,关键职员生病在项目的非常时刻,关键职员生病中等中等严重严重要复用的软件组件有缺陷,限制了项目的性能要复用的软件组件有缺陷,限制了项目的性能中等中等严重严重需求发生变化,主体设计要返工需求发生变化,主体设计要返工中等中等严重严重开发机构调整,由不同的管理层负责这个项目开发机构调整,由不同的管理层负责这个项目大大严重严重系统使用的数据库的处理速度不够快系统使用的数据库的处理速度不够快中等中等严重严重低估了软
28、件开发所需要的时间低估了软件开发所需要的时间大大严重严重CASE工具不能被集成工具不能被集成大大可容忍可容忍客户不了解需求变更对项目造成的影响客户不了解需求变更对项目造成的影响中等中等可容忍可容忍职员所需的培训跟不上职员所需的培训跟不上中等中等可容忍可容忍低估了缺陷的修补率低估了缺陷的修补率中等中等可容忍可容忍低估了软件的规模低估了软件的规模大大可容忍可容忍CASE工具产生的编码效率低工具产生的编码效率低中等中等可忽略可忽略 风险风险影响影响大小的评大小的评估,可能的结果有:灾估,可能的结果有:灾难性的、严重的、可以难性的、严重的、可以容忍的和可以忽略的。容忍的和可以忽略的。右表是对上表已识右
29、表是对上表已识别风险分析后得出的结别风险分析后得出的结果作成的表格:果作成的表格:这个表格的内容应这个表格的内容应随着项目的进展而更新。随着项目的进展而更新。经过风险分析和排经过风险分析和排序,就可以判断哪些风序,就可以判断哪些风险是最重要需要优先关险是最重要需要优先关注的,以有利于项目的注的,以有利于项目的顺利开展。顺利开展。13(3)(3)风险规划风险规划 风险规划过程就是对已识别的每一个重大风险,确定相应的处理策略。制风险规划过程就是对已识别的每一个重大风险,确定相应的处理策略。制定风险管理计划同样需要项目管理者的判断和经验。定风险管理计划同样需要项目管理者的判断和经验。下表给出了处理上
30、表中严重和灾难性风险的可能的策略。下表给出了处理上表中严重和灾难性风险的可能的策略。风风 险险策策 略略机构的财务风险机构的财务风险拟一份简短报告,提交高层管理者,说明这个项目将对业务目标有重大贡献拟一份简短报告,提交高层管理者,说明这个项目将对业务目标有重大贡献职员招聘风险职员招聘风险稳定已有职员,加紧招聘工作,加紧已有低层职员的培训、培养稳定已有职员,加紧招聘工作,加紧已有低层职员的培训、培养职员生病风险职员生病风险重新对团队进行组织,使更多工作可以并发和重叠,员工可以了解他人工作重新对团队进行组织,使更多工作可以并发和重叠,员工可以了解他人工作有缺陷的组件有缺陷的组件购买更可靠、稳定的组
31、件,替代有潜在缺陷的组件购买更可靠、稳定的组件,替代有潜在缺陷的组件需求变更需求变更导出可追溯信息来评估需求变更带来的影响,把隐藏在设计中的信息扩大化导出可追溯信息来评估需求变更带来的影响,把隐藏在设计中的信息扩大化机构调整机构调整拟一份简短报告,提交高层管理者,说明这个项目将对业务目标有重大贡献拟一份简短报告,提交高层管理者,说明这个项目将对业务目标有重大贡献数据库的性能数据库的性能研究购买高性能数据库的可能性研究购买高性能数据库的可能性低估开发时间低估开发时间再次估算开发时间,对要使用的组件、开发环境的效用进行检查,明确资源再次估算开发时间,对要使用的组件、开发环境的效用进行检查,明确资源
32、 风险规划的策略有三类:风险规划的策略有三类:-规避策略规避策略:采用这些策略会降低风险出现的概率。如:采用这些策略会降低风险出现的概率。如“有缺陷的组件有缺陷的组件”-最低风险策略最低风险策略:采用这些策略会减少风险影响。如:采用这些策略会减少风险影响。如“职员生病风险职员生病风险”-应急计划应急计划:用以应对最严重的情形出现,以防万一。如:用以应对最严重的情形出现,以防万一。如“机构财务问题机构财务问题”14(4)(4)风险监控风险监控 风险监控就是要对每一个识别的风险及其策略执行情况进行定期评估,风险监控就是要对每一个识别的风险及其策略执行情况进行定期评估,从而确定风险出现可能性的变化趋
33、势以及风险影响的后果是否有所改变。通从而确定风险出现可能性的变化趋势以及风险影响的后果是否有所改变。通常,这类信息是不可能直接观察到的,需要综合其它因素。常,这类信息是不可能直接观察到的,需要综合其它因素。应该指出的是,风险监控应该是一个持续不断的过程,在每一次对风险应该指出的是,风险监控应该是一个持续不断的过程,在每一次对风险管理进行评估时,每一个重大的风险都应该进行单独的讨论和评估。管理进行评估时,每一个重大的风险都应该进行单独的讨论和评估。下表列举了一些典型因素的例子,可能会对评这些估风险类型有帮助。下表列举了一些典型因素的例子,可能会对评这些估风险类型有帮助。风险类型风险类型潜在的特征
34、潜在的特征技术技术硬件或支持软件延迟交付,暴露出现许多技术问题硬件或支持软件延迟交付,暴露出现许多技术问题人员人员职员工作士气低靡,团队成员之间关系不协调,工作分配不当职员工作士气低靡,团队成员之间关系不协调,工作分配不当机构机构机构内说三道四,缺乏资深管理人员机构内说三道四,缺乏资深管理人员工具工具团队成员不愿使用工具,抱怨团队成员不愿使用工具,抱怨CASE工具,需要更强大的工作站工具,需要更强大的工作站需求需求很多需求变更请求以及客户怨言很多需求变更请求以及客户怨言估算估算跟不上双方协商的进度,无法除掉暴露出来的缺陷跟不上双方协商的进度,无法除掉暴露出来的缺陷 下下面,一起看几个面,一起看几个例子例子。