软件项目时间管理demy.ppt
软件项目管理1 1软件项目管理软件项目管理第六章第六章 软件项目时间管理软件项目时间管理Software Project TimeSoftware Project Timemanagementmanagement清华大学计算机系清华大学计算机系 殷人昆殷人昆软件项目管理2 26.1 项目时间管理的概念项目时间管理的概念6.2 项目活动定义项目活动定义6.3 项目活动顺序安排项目活动顺序安排6.4 活动时间估计活动时间估计6.5 制定进度计划制定进度计划6.6 进度控制进度控制6.7 网络图技术网络图技术软件项目管理3 36.16.1 项目时间管理的概念项目时间管理的概念项目时间管理是项目时间管理是指使项目能够及时完成的必需过指使项目能够及时完成的必需过程程。进度安排的准确程度可能比成本估算的准确程度进度安排的准确程度可能比成本估算的准确程度更重要。对于成本估算的偏差,可以通过重新定更重要。对于成本估算的偏差,可以通过重新定价或大量的销售来弥补成本的增加;但价或大量的销售来弥补成本的增加;但如果进度如果进度计划不能得到实施则会导致市场机会的丧失或用计划不能得到实施则会导致市场机会的丧失或用户不满意,也会导致成本的增加户不满意,也会导致成本的增加。因此,在考虑进度安排时,要把时间与人员花费因此,在考虑进度安排时,要把时间与人员花费的工作量联系起来,合理估算工作量,安排时间,的工作量联系起来,合理估算工作量,安排时间,并利用进度安排的有效分析方法监督项目的进展并利用进度安排的有效分析方法监督项目的进展情况,使得项目进度不致被拖延。情况,使得项目进度不致被拖延。软件项目管理4 4当参加同一软件工程项目的人数不止一人的时候,当参加同一软件工程项目的人数不止一人的时候,开发工作就会出现并行情形。开发工作就会出现并行情形。软件工程项目的并行性提出了一系列的进度要求。软件工程项目的并行性提出了一系列的进度要求。因为并行任务是同时发生的,所以进度计划必须因为并行任务是同时发生的,所以进度计划必须决定任务之间的从属关系决定任务之间的从属关系,确定,确定各个任务的先后各个任务的先后次序和衔接次序和衔接,确定,确定各个任务完成的持续时间各个任务完成的持续时间。项目负责人应注意构成关键路径的任务,即若要项目负责人应注意构成关键路径的任务,即若要保证整个项目能按进度要求完成,就必须保证这保证整个项目能按进度要求完成,就必须保证这些任务要按进度要求完成。这样就可以确定在进些任务要按进度要求完成。这样就可以确定在进度安排中应当保证的重点。度安排中应当保证的重点。常用的进度安排方法有常用的进度安排方法有甘特图甘特图法和法和网络图网络图法。法。软件项目管理5 5需求分析需求分析需求评审需求评审概要设计概要设计概要设计评审概要设计评审详细设计详细设计设计走查设计走查编程编程代码走查代码走查单元测试单元测试测试计划测试计划测试过程测试过程测试评审测试评审集成测试集成测试确认测试确认测试软件项目管理6 66.26.2 项目活动定义项目活动定义项目时间管理主要由项目时间管理主要由项目活动定义项目活动定义,活动排序活动排序,活动时间估计活动时间估计,制定进度计划制定进度计划和和进度控制进度控制等等 5 个个过程组成,下图给出这些过程的主要框架。过程组成,下图给出这些过程的主要框架。项目活动定义是时间管理的第一步,是项目活动定义是时间管理的第一步,是对工作分对工作分解结构中规定的可交付成果或阶段产品的产生所解结构中规定的可交付成果或阶段产品的产生所需执行具体活动进行定义,并形成文档需执行具体活动进行定义,并形成文档。项目可交付成果是指工作分解结构中各项工作任项目可交付成果是指工作分解结构中各项工作任务完成后的输出结果。务完成后的输出结果。在制定项目开发进度计划时,具体定义分解出的在制定项目开发进度计划时,具体定义分解出的各项活动,能够使项目的目标更加具体、明确。各项活动,能够使项目的目标更加具体、明确。软件项目管理7 71.1.输入输入输入输入 工作分解结构工作分解结构工作分解结构工作分解结构 范围说明范围说明范围说明范围说明 历史信息历史信息历史信息历史信息 约束条件约束条件约束条件约束条件 假设条件假设条件假设条件假设条件2.2.工具与技术工具与技术工具与技术工具与技术 分解分解分解分解 模板模板模板模板3.3.输出输出输出输出 活动列表活动列表活动列表活动列表 详细依据详细依据详细依据详细依据 更新的工作分解更新的工作分解更新的工作分解更新的工作分解结构结构结构结构活动定义活动定义1 1.输入输入输入输入 活动列表活动列表活动列表活动列表 产品描述产品描述产品描述产品描述 强制性依赖关系强制性依赖关系强制性依赖关系强制性依赖关系 自由依赖关系自由依赖关系自由依赖关系自由依赖关系 外部依赖关系外部依赖关系外部依赖关系外部依赖关系 约束条件约束条件约束条件约束条件 假设条件假设条件假设条件假设条件2.2.工具与技术工具与技术工具与技术工具与技术 前驱图前驱图前驱图前驱图(PDM)(PDM)箭头图箭头图箭头图箭头图(ADM)(ADM)3.3.输出输出输出输出 项目网络图项目网络图项目网络图项目网络图 活动列表更新活动列表更新活动列表更新活动列表更新活动排序活动排序1.1.输入输入输入输入 活动列表活动列表活动列表活动列表 约束条件约束条件约束条件约束条件 假设条件假设条件假设条件假设条件 资源需求资源需求资源需求资源需求 资源能力资源能力资源能力资源能力 2.2.工具与技术工具与技术工具与技术工具与技术 专家判断专家判断专家判断专家判断 类比估计类比估计类比估计类比估计 基于数量的历时基于数量的历时基于数量的历时基于数量的历时3.3.输出输出输出输出 活动时间估计活动时间估计活动时间估计活动时间估计 估计的基础估计的基础估计的基础估计的基础 活动列表更新活动列表更新活动列表更新活动列表更新活动时间估计活动时间估计项目时间管理项目时间管理软件项目管理8 8制定进度计划制定进度计划项目时间管理项目时间管理1.1.输入输入输入输入 项目进度项目进度项目进度项目进度 执行报告执行报告执行报告执行报告 变更要求变更要求变更要求变更要求 进度管理计划进度管理计划进度管理计划进度管理计划 2.2.工具与技术工具与技术工具与技术工具与技术 进度变更控制系统进度变更控制系统进度变更控制系统进度变更控制系统 执行情况测量执行情况测量执行情况测量执行情况测量 另外的计划另外的计划另外的计划另外的计划 项目管理软件项目管理软件项目管理软件项目管理软件3.3.输出输出输出输出 进度更新进度更新进度更新进度更新 纠正措施纠正措施纠正措施纠正措施 经验与教训经验与教训经验与教训经验与教训进度控制进度控制1.输入输入 2.工具与技术工具与技术 项目网络图项目网络图 数量分析数量分析 活动时间估计活动时间估计 时间压缩时间压缩 资源需求资源需求 模拟模拟 资源库描述资源库描述 资源调整法资源调整法 日历日历 项目管理软件项目管理软件 约束条件约束条件 3.输出输出 假设条件假设条件 项目进度项目进度 超前和滞后超前和滞后 详细依据详细依据时间时间 进度管理计划进度管理计划 资源需求更新资源需求更新软件项目管理9 96.2.16.2.1 项目活动定义的依据项目活动定义的依据1.工作分解结构工作分解结构是活动定义的基本依据,它包含了项目的所有工是活动定义的基本依据,它包含了项目的所有工作及活动。通过分解将项目所有工作的从属关系作及活动。通过分解将项目所有工作的从属关系表达得清清楚楚。表达得清清楚楚。2.范围说明范围说明对项目分解后的各项具体工作的具体内容进行详对项目分解后的各项具体工作的具体内容进行详细的描述,以便在工作实施过程中更好地实施各细的描述,以便在工作实施过程中更好地实施各项具体活动所包含的内容。项具体活动所包含的内容。3.历史信息历史信息参照历史信息定义项目具体工作内容。参照历史信息定义项目具体工作内容。软件项目管理10104.约束条件约束条件对任何一个项目都会有各种约束条件,对项目活对任何一个项目都会有各种约束条件,对项目活动也有一定的约束条件。例如,一个研究项目缺动也有一定的约束条件。例如,一个研究项目缺少某种专门人才,或缺少某种专门设备,或资金少某种专门人才,或缺少某种专门设备,或资金不足,这些都是必须考虑的约束条件。不足,这些都是必须考虑的约束条件。5.假定假定项目的实施总是依赖于一定的未来环境,因此许项目的实施总是依赖于一定的未来环境,因此许多项目工作的具体实施所遇到的许多因素通常都多项目工作的具体实施所遇到的许多因素通常都被假定为真实的、确定的。被假定为真实的、确定的。6.专家评论专家评论汇集本领域专家对项目具体工作定义的意见,以汇集本领域专家对项目具体工作定义的意见,以得到更明确、风险更小的定义结果。得到更明确、风险更小的定义结果。软件项目管理11 116.2.26.2.2 活动定义的方法活动定义的方法1.分解分解将项目活动逐步细分为更小、更容易管理的单元,将项目活动逐步细分为更小、更容易管理的单元,以便更好地管理和控制。以便更好地管理和控制。依次开发工作分解结构和活动列表。依次开发工作分解结构和活动列表。2.模板模板可将以往类似项目的活动列表或部分活动列表作可将以往类似项目的活动列表或部分活动列表作为新项目的活动列表的模板。模板中的活动也可为新项目的活动列表的模板。模板中的活动也可包括技术资源及所需工作量、风险识别及其它描包括技术资源及所需工作量、风险识别及其它描述信息。述信息。软件项目管理12126.2.36.2.3 项目活动定义的结果项目活动定义的结果1.项目活动列表项目活动列表在项目活动列表中要列出项目所需开展的全部活在项目活动列表中要列出项目所需开展的全部活动。活动列表作为工作分解结构的扩充,包括了动。活动列表作为工作分解结构的扩充,包括了每一个活动的说明,以帮助项目团队成员明确自每一个活动的说明,以帮助项目团队成员明确自己的工作和责任(工作内容、目标、结果、责任己的工作和责任(工作内容、目标、结果、责任者、日期)。者、日期)。2.详细依据详细依据是对项目活动列表的解释性文件,包括项目的约是对项目活动列表的解释性文件,包括项目的约束条件和假定条件。束条件和假定条件。3.更新的工作分解结构更新的工作分解结构补充或修订其中的一些可交付成果。补充或修订其中的一些可交付成果。软件项目管理13136.36.3 项目活动顺序安排项目活动顺序安排活动顺序安排也称为活动排序。活动顺序安排也称为活动排序。一般来讲,项目由一般来讲,项目由一组相关的活动一组相关的活动构成。项目在构成。项目在至少有一个活动准备开始时才开始,而只有当项至少有一个活动准备开始时才开始,而只有当项目中所有的活动结束项目才结束。目中所有的活动结束项目才结束。项目的活动必须有一个清晰的项目的活动必须有一个清晰的起始点起始点和清晰的和清晰的结结束点束点,一般以产生一个可交付物为标志。,一般以产生一个可交付物为标志。活动需要资源,并假定在活动中资源的需求水平活动需要资源,并假定在活动中资源的需求水平保持一致。活动的持续时间必须可预测。保持一致。活动的持续时间必须可预测。活动之间有优先顺序,任何工作的执行必须依赖活动之间有优先顺序,任何工作的执行必须依赖于一定工作的完成。于一定工作的完成。软件项目管理1414工作排序的步骤:工作排序的步骤:(1)分析分析工作之间本身存在的逻辑关系工作之间本身存在的逻辑关系(顺序的、(顺序的、并行的、迭代的、嵌套的);并行的、迭代的、嵌套的);(2)在逻辑关系的基础上再加以充分分析,确定在逻辑关系的基础上再加以充分分析,确定各工作之间的组织关系各工作之间的组织关系。工作排序的目的是确定各项活动之间的依赖关工作排序的目的是确定各项活动之间的依赖关系,并形成文档。系,并形成文档。工作排序可以利用计算机进行,也可以用手工工作排序可以利用计算机进行,也可以用手工来完成。在较小的项目中,或在大型项目的早来完成。在较小的项目中,或在大型项目的早期阶段,手工技术更为有效。期阶段,手工技术更为有效。手工技术和计算机技术可以结合起来使用。手工技术和计算机技术可以结合起来使用。软件项目管理15156.3.16.3.1 工作排序的依据工作排序的依据1.活动列表活动列表即活动定义过程中得到的结果。即活动定义过程中得到的结果。2.产品描述产品描述描述待开发产品或服务的特性(功能、性能、约描述待开发产品或服务的特性(功能、性能、约束、质量指标等),它们可能影响工作排序。束、质量指标等),它们可能影响工作排序。3.强制性依赖关系强制性依赖关系这是工作之间固有的依赖关系,是工作之间本身这是工作之间固有的依赖关系,是工作之间本身存在的,无法改变的逻辑关系。例如,必须先编存在的,无法改变的逻辑关系。例如,必须先编写出代码,再对它进行检验。写出代码,再对它进行检验。4.可自由处理的依赖关系可自由处理的依赖关系软件项目管理1616这种依赖关系是人为确定的,即两项工作可先可这种依赖关系是人为确定的,即两项工作可先可后的组织关系。活动之间因组织安排或资源调配后的组织关系。活动之间因组织安排或资源调配需要而规定的先后次序关系叫做组织关系。需要而规定的先后次序关系叫做组织关系。这种依赖关系是项目管理人员决定的,可能会限这种依赖关系是项目管理人员决定的,可能会限制以后的进度安排选择。制以后的进度安排选择。5.外部依赖关系外部依赖关系这种关系涉及项目与非项目活动之间的关系。例这种关系涉及项目与非项目活动之间的关系。例如,与外部供应商对新硬件的交货。如,与外部供应商对新硬件的交货。逻辑关系分为逻辑关系分为并行并行、顺序顺序、搭接搭接等三种形式。等三种形式。v两项活动同时开始即为两项活动同时开始即为并行并行关系。关系。v两项活动先后进行即为两项活动先后进行即为顺序顺序关系。如果前一项关系。如果前一项活动结束,后一项活动马上开始,就叫做活动结束,后一项活动马上开始,就叫做紧连紧连软件项目管理1717顺序关系顺序关系;如果后一项活动在前一项活动结束;如果后一项活动在前一项活动结束之后一段时间才开始,就叫做之后一段时间才开始,就叫做间隔顺序关系间隔顺序关系。如果两项活动之间是紧连顺序关系,中间没有如果两项活动之间是紧连顺序关系,中间没有插入其他活动,则相对而言,前一项活动是前插入其他活动,则相对而言,前一项活动是前驱活动,后一项活动是后继活动。驱活动,后一项活动是后继活动。v两项活动之间只有一段时间是并行的则为两项活动之间只有一段时间是并行的则为搭接搭接关系关系。6.里程碑计划里程碑计划v里程碑是项目中的重大事件,通常指一个主要里程碑是项目中的重大事件,通常指一个主要可支付成果的完成。例如,需求规格说明、概可支付成果的完成。例如,需求规格说明、概要设计规格说明、源代码清单等。要设计规格说明、源代码清单等。v里程碑计划是一个战略计划或项目的框架,它里程碑计划是一个战略计划或项目的框架,它软件项目管理1818明了项目为达到最终目标必须经历的一系列条明了项目为达到最终目标必须经历的一系列条件或状态,描述了在每一阶段要达到的状态。件或状态,描述了在每一阶段要达到的状态。v一个项目必须有几个用作里程碑的关键事件。一个项目必须有几个用作里程碑的关键事件。一个好的里程碑应当得到项目干系人的一致认一个好的里程碑应当得到项目干系人的一致认可。可。v里程碑计划的编制从达成最后一个里程碑,即里程碑计划的编制从达成最后一个里程碑,即项目结束点开始,反向进行。其编制过程参看项目结束点开始,反向进行。其编制过程参看下图。下图。软件项目管理1919最后一个目标最后一个目标反向依次确定反向依次确定各个里程碑各个里程碑界定明确?界定明确?增加或删除,改增加或删除,改变因果路径定义变因果路径定义不重叠?不重叠?符合因果符合因果路径?路径?成图成图否否否否否否是是是是是是软件项目管理20206.3.26.3.2 工作排序的方法工作排序的方法1.前导图法前导图法(Precedence Diagramming Method)这是一种利用结点表示工作活动,用箭头表示这是一种利用结点表示工作活动,用箭头表示工作排序的编制项目网络图的方法。工作排序的编制项目网络图的方法。这种方法也叫做这种方法也叫做AON(Active On the Node)。每一个结点有唯一的活动编号,并注明了预计每一个结点有唯一的活动编号,并注明了预计工期:工期:9310活动编号活动编号最早开始时间最早开始时间最迟开始时间最迟开始时间93103最早开始时间最早开始时间最迟开始时间最迟开始时间真实开工时间真实开工时间活动编号活动编号软件项目管理2121每个结点的活动有几个时间点:最早开始时间每个结点的活动有几个时间点:最早开始时间(ES),最迟开始时间最迟开始时间(LS),最早结束时间最早结束时间(EF),最迟结束最迟结束时间时间(LF)。前导图中存在前导图中存在 4 种工作排序关系:种工作排序关系:结束到开始结束到开始(FS型型),结束到结束结束到结束(FF型型),开始到开始开始到开始(SS型型),开开始到结束始到结束(SF型型)。FS型型SS型型FF型型SF型型软件项目管理2222前导图例前导图例10003473491126131302682510100F=10A=6B=4C=3D=4E=3G=3H=2软件项目管理23232.箭线图法箭线图法(Arrow Diagramming Method)这是一种用箭线表示工作活动,结点表示工作排这是一种用箭线表示工作活动,结点表示工作排序(中的事件)的网络图法。序(中的事件)的网络图法。这种网络图又称为这种网络图又称为 AOA(Active On Arrow)。在图中,活动的开始(箭尾)事件叫做该活动的在图中,活动的开始(箭尾)事件叫做该活动的紧前事件;活动的结束(箭头)事件叫做该活动紧前事件;活动的结束(箭头)事件叫做该活动的紧随事件。的紧随事件。在箭线图中要明确的事项:在箭线图中要明确的事项:(1)网络图中每一事件必须有唯一的一个事件号码。网络图中每一事件必须有唯一的一个事件号码。(2)任何两个活动的紧前事件与紧随事件号码至少任何两个活动的紧前事件与紧随事件号码至少有一个不同。有一个不同。软件项目管理2424(3)流入流出同一结点的活动,均有共同的后继流入流出同一结点的活动,均有共同的后继活动前驱活动。活动前驱活动。此外在网络图中有一种特殊的活动此外在网络图中有一种特殊的活动 虚活动,用虚活动,用虚箭线表示。它不消耗时间。借助虚活动,改造虚箭线表示。它不消耗时间。借助虚活动,改造复杂的网络图,使得活动之间的关系更清楚。复杂的网络图,使得活动之间的关系更清楚。AB4132CD65ACB61523D活动活动A、B可以同时开始,只有可以同时开始,只有A、B都完成后,都完成后,C、D才能开始。用虚箭线表明才能开始。用虚箭线表明A完成后完成后B就可开始。就可开始。软件项目管理2525在复杂的网络图上,为避免多个起点或终点引起在复杂的网络图上,为避免多个起点或终点引起的混淆,可以用虚箭线来区别,用虚活动与所有的混淆,可以用虚箭线来区别,用虚活动与所有能立即开始的结点连接。能立即开始的结点连接。箭线图的画法箭线图的画法(1)查找所有从结点查找所有从结点 1 开始的活动,画出它们的终开始的活动,画出它们的终止结点和从开始结点到这些终止结点之间的箭止结点和从开始结点到这些终止结点之间的箭线,在这些箭线上附加上活动的名字和持续时线,在这些箭线上附加上活动的名字和持续时间的估计值。间的估计值。AB4132CD650软件项目管理2626(2)然后从左向右继续画网络图。寻找分支和会合然后从左向右继续画网络图。寻找分支和会合点:分支是有两个以上的紧随活动的结点,而点:分支是有两个以上的紧随活动的结点,而会合是两个以上紧前活动汇聚的结点。会合是两个以上紧前活动汇聚的结点。(3)继续画项目的网络图,直到图中包括了所有的继续画项目的网络图,直到图中包括了所有的活动和它们之间的依赖关系。活动和它们之间的依赖关系。(4)要求所有箭头都应从左向右,并且没有横穿要求所有箭头都应从左向右,并且没有横穿AOA网络的箭线。网络的箭线。3.条件箭线图法条件箭线图法允许工作序列有迭代和反馈。因此在绘制网络图允许工作序列有迭代和反馈。因此在绘制网络图的过程中会出现许多条件分支和循环,而在的过程中会出现许多条件分支和循环,而在 PDM 和和 ADM 中这种条件分支是不存在的。中这种条件分支是不存在的。软件项目管理27274.网络图模板网络图模板可以用一些标准的网络图作为项目网络图的准备可以用一些标准的网络图作为项目网络图的准备和绘制的样板,加快项目网络图的绘制。和绘制的样板,加快项目网络图的绘制。这些标准网络图可以包括整个项目,也可以是其这些标准网络图可以包括整个项目,也可以是其中的一部分子网络。中的一部分子网络。1.项目网络图项目网络图2.该网络图包括整个项目的全部细节,还包括一该网络图包括整个项目的全部细节,还包括一个或多个概括性的活动。图中还应附有简要的说个或多个概括性的活动。图中还应附有简要的说明和描述工作排序的基本方法。明和描述工作排序的基本方法。2.活动列表更新活动列表更新6.3.36.3.3 工作排序的结果工作排序的结果软件项目管理28286.46.4 活动时间估计活动时间估计活动时间估计关系到各事项、各工作网络时间活动时间估计关系到各事项、各工作网络时间的计算和完成整个项目任务所需要的总时间。的计算和完成整个项目任务所需要的总时间。可以依据可以依据Pareto原则,即原则,即402040规则:规则:v在整个软件开发过程中,编码工作量仅占在整个软件开发过程中,编码工作量仅占 20,编码前工作量占,编码前工作量占40,编码后工作量占,编码后工作量占 40。v402040 规则只应用来做为规则只应用来做为 一个指南。实一个指南。实际的工作量分配比例必须按照各项目的特点际的工作量分配比例必须按照各项目的特点来决定。来决定。一般地,在做活动历时估计时要依据的信息:一般地,在做活动历时估计时要依据的信息:软件项目管理2929(1)工作量工作量:指完成一个活动需要投入的人工。:指完成一个活动需要投入的人工。在确定工作量时,一是考虑在确定工作量时,一是考虑系统的规模系统的规模、功功能点能点或或对象点数对象点数,二是考虑,二是考虑生产率生产率。这三者。这三者的关系是:的关系是:工作量工作量=规模规模/生产率生产率。(2)资源资源:指完成一项活动能够投入的人员。人:指完成一项活动能够投入的人员。人员投入的数量应与项目的规模合理匹配,且员投入的数量应与项目的规模合理匹配,且与项目总的时间要求、费用支出有关。与项目总的时间要求、费用支出有关。(3)活动工期活动工期:理论上,在工作量一定的情况下,:理论上,在工作量一定的情况下,投入的人员越多,则活动的工期就越短:活投入的人员越多,则活动的工期就越短:活动工期动工期=工作量工作量/人数。人数。在做活动历时估计时,还要考虑开发人员的能在做活动历时估计时,还要考虑开发人员的能力差异、对项目了解的差异等。力差异、对项目了解的差异等。软件项目管理30306.4.16.4.1 活动时间估计的依据活动时间估计的依据除了上面提到的活动列表、项目约束条件等外,除了上面提到的活动列表、项目约束条件等外,活动时间估计的依据还包括:活动时间估计的依据还包括:1.资源需求资源需求说明工作分解结构中各组成部分需要资源的类型说明工作分解结构中各组成部分需要资源的类型和数量。大多数活动的完成所需要的时间在很大和数量。大多数活动的完成所需要的时间在很大程度上受到分配给它们的资源的制约。程度上受到分配给它们的资源的制约。2.资源能力资源能力大多数活动的完成也受到分配给它们的人员或其大多数活动的完成也受到分配给它们的人员或其他物力资源的能力的影响。一个有经验的成员比他物力资源的能力的影响。一个有经验的成员比经验少的成员完成制定活动的时间短。经验少的成员完成制定活动的时间短。软件项目管理31313.历史信息历史信息类似项目的工作资料对项目工作时间的估计会有类似项目的工作资料对项目工作时间的估计会有很大帮助。这些资源包括:项目文件、项目工作很大帮助。这些资源包括:项目文件、项目工作的知识、有关工作时间估计的数据库。的知识、有关工作时间估计的数据库。4.已识别的风险已识别的风险风险对项目时间估计有重要影响。在项目管理人风险对项目时间估计有重要影响。在项目管理人员估算工作的完成时间时,需要考虑有关已识别员估算工作的完成时间时,需要考虑有关已识别奉献的相关信息。奉献的相关信息。软件项目管理32326.4.26.4.2 时间估计的方法时间估计的方法1.专家判断法专家判断法专家判断是行之有效的时间估计方法,他们主要专家判断是行之有效的时间估计方法,他们主要依赖历史经验和信息。依赖历史经验和信息。2.类比估算法类比估算法用以前类似项目工作的完成时间来估计当前工作用以前类似项目工作的完成时间来估计当前工作的完成时间。当很难获得项目工作的详细信息时,的完成时间。当很难获得项目工作的详细信息时,常用这种方法来估计项目工作的完成时间。常用这种方法来估计项目工作的完成时间。3.基于数量的历时估计基于数量的历时估计确定每一特定类型工作所需完成的工作量,再根确定每一特定类型工作所需完成的工作量,再根根据根据 COCOMO 模型中开发进度模型中开发进度TDEV与工作量与工作量软件项目管理3333MM的关系:的关系:TDEV a(MM)b 用所得结果估算活动时间。用所得结果估算活动时间。例如,按例如,按Boehm在软件工程经济学的叙述:在软件工程经济学的叙述:开发开发模式模式阶阶 段段 分分 配配规模(规模(KDSI)微型微型 2小型小型8中型中型32大型大型128特大型特大型512组织组织型型计划与需求计划与需求设设 计计编码与单元测试编码与单元测试集成与测试集成与测试10196318111959221219552613195130软件项目管理3434开发开发模式模式阶阶 段段 分分 配配规模(规模(KDSI)微型微型 2小型小型8中型中型32大型大型128特大型特大型512半独半独立型立型计划与需求计划与需求设设 计计编码与单元测试编码与单元测试集成与测试集成与测试1624562018255223202648262227442924284032嵌入嵌入型型计划与需求计划与需求设设 计计编码与单元测试编码与单元测试集成与测试集成与测试2430482228324424323440263636362840383230续一续一软件项目管理3535按此比例确定各个阶段工作量的分配和所需的开按此比例确定各个阶段工作量的分配和所需的开发时间,然后在每个阶段进行任务分解,对各个发时间,然后在每个阶段进行任务分解,对各个任务再进行工作量和开发时间的分配。任务再进行工作量和开发时间的分配。4.预留时间预留时间不管用什么方法估计出的项目活动完成时间都是不管用什么方法估计出的项目活动完成时间都是预估的结果,出于谨慎的考虑,可以按照估计出预估的结果,出于谨慎的考虑,可以按照估计出的时间的一定百分比,再预留出一些时间作为对的时间的一定百分比,再预留出一些时间作为对紧急情况发生时的一种应急措施。紧急情况发生时的一种应急措施。1.活动时间估计结果活动时间估计结果它是完成某一活动可能需要多少时间的定量估它是完成某一活动可能需要多少时间的定量估6.4.36.4.3 活动时间估计的结果活动时间估计的结果软件项目管理3636计。活动所需时间估计值用某一范围表示:例如计。活动所需时间估计值用某一范围表示:例如“2 周周2天天”表示该活动至少需表示该活动至少需 8 天和不超过天和不超过12 天。天。“超过超过 3 周的概率为周的概率为 15%”表示表示 85%概率的概率的活动将用活动将用 3 周或更短时间。周或更短时间。2.估计的基础估计的基础必须确认在进行时间估计时所用的假设是合理可必须确认在进行时间估计时所用的假设是合理可信的,并将其写入文档。信的,并将其写入文档。3.活动列表更新活动列表更新估算时间的大小可能差别较大,当把历时过大或估算时间的大小可能差别较大,当把历时过大或过小的活动重新分解或合并后,必须更新活动列过小的活动重新分解或合并后,必须更新活动列表。表。软件项目管理37376.56.5 制定进度计划制定进度计划制定进度计划就是决定各项活动的开始和完成时间,制定进度计划就是决定各项活动的开始和完成时间,安排好进度,其目的是提供对项目进展情况的监督安排好进度,其目的是提供对项目进展情况的监督和控制。和控制。如果没有制定现实可能的日程,项目就不可能如期如果没有制定现实可能的日程,项目就不可能如期完成。随着较多数据的获得,对日常活动过程不断完成。随着较多数据的获得,对日常活动过程不断改进,进度计划也将不断更新。改进,进度计划也将不断更新。除了上面提到的项目网络图、活动时间估计、资源除了上面提到的项目网络图、活动时间估计、资源需求、约束条件和假定条件之外,制定进度计划的需求、约束条件和假定条件之外,制定进度计划的依据还有:依据还有:6.5.1 6.5.1 制定进度计划的依据制定进度计划的依据软件项目管理38381.可用资源描述可用资源描述制定项目计划时,必须明确:制定项目计划时,必须明确:(1)什么资源在什么时候可用;什么资源在什么时候可用;(2)在项目执行过程中每一时刻需要什么资源。在项目执行过程中每一时刻需要什么资源。从而知道在何时以何种形式取得何种资源。从而知道在何时以何种形式取得何种资源。2.日历日历日历标明了项目进展过程中可以利用各种资源的日历标明了项目进展过程中可以利用各种资源的时间。项目日历影响所有资源,资源日历影响特时间。项目日历影响所有资源,资源日历影响特定的资源库或个人。定的资源库或个人。3.约束条件约束条件这是一些可能制约项目组织的方案选择、人员这是一些可能制约项目组织的方案选择、人员软件项目管理3939组成、时间限制等因素。例如,一些强制性的项组成、时间限制等因素。例如,一些强制性的项目日期、关键事件或里程碑事件等。目日期、关键事件或里程碑事件等。4.假设假设在制定项目计划时,必须假设一些前提条件能够在制定项目计划时,必须假设一些前提条件能够按时发生。当然,这种假设包含一定风险。按时发生。当然,这种假设包含一定风险。5.提前或滞后的要求提前或滞后的要求项目中活动允许提前或延后的时间量。对一些非项目中活动允许提前或延后的时间量。对一些非关键活动的进度安排是有益的,可以根据资源情关键活动的进度安排是有益的,可以根据资源情况适当向前或向后调整。况适当向前或向后调整。6.风险管理计划风险管理计划整个项目期间的用于管理风险的各种措施,也是整个项目期间的用于管理风险的各种措施,也是进度计划制定的依据之一。进度计划制定的依据之一。软件项目管理40406.5.26.5.2 制定进度计划的方法制定进度计划的方法1.数学分析法数学分析法是在不考虑资源的情况下,通过计算所有项目活是在不考虑资源的情况下,通过计算所有项目活动在理论上的动在理论上的最早和最迟开始时间最早和最迟开始时间与与最早和最迟最早和最迟完成时间完成时间,求得项目的所有关键活动,并以此来,求得项目的所有关键活动,并以此来安排各项活动的进度计划。安排各项活动的进度计划。这种方法的问题是没有考虑资源的供应情况和其这种方法的问题是没有考虑资源的供应情况和其他约束条件,制定出的进度计划不一定是可行的,他约束条件,制定出的进度计划不一定是可行的,还需要调整。还需要调整。常用的技术有关键路径法常用的技术有关键路径法CPM、图形评审技术、图形评审技术GERT和计划评审技术和计划评审技术PERT等。等。软件项目管理41412.历时压缩法历时压缩法寻找在不改变项目范围的条件下缩短项目活动进寻找在不改变项目范围的条件下缩短项目活动进度的方法,主要用于当一些特别的限制与其他进度的方法,主要用于当一些特别的限制与其他进度目标的要求发生冲突时。主要的方法:度目标的要求发生冲突时。主要的方法:(1)费用转换费用转换:是指对成本和进度进行权衡后,确:是指对成本和进度进行权衡后,确定如何以最小的成本代价最大限度地压缩活动定如何以最小的成本代价最大限度地压缩活动的持续时间。例如增加成本费用以换取工期的的持续时间。例如增加成本费用以换取工期的缩短。缩短。(2)并行处理并行处理:将通常情况需要串行顺序执行的多:将通常情况需要串行顺序执行的多项活动改为并行。这种方式尽管可以缩短工期,项活动改为并行。这种方式尽管可以缩短工期,但也面临返工的危险,反而可能延长工期。但也面临返工的危险,反而可能延长工期。软件项目管理4242(3)其他历时压缩的技术有:其他历时压缩的技术有:加强控制加强控制、资源优化资源优化(增加资源数量)、(增加资源数量)、提高资源利用率提高资源利用率(提高资(提高资源质量)、源质量)、改变工艺或流程改变工艺或流程、加强沟通加强沟通、加班加班、外包外包和和缩小范围缩小范围等。等。3.模拟法模拟法根据某些约束或假设条件,运用蒙特卡洛分析方根据某些约束或假设条件,运用蒙特卡洛分析方法,首先确定每项活动持续时间的一个统计分布,法,首先确定每项活动持续时间的一个统计分布,再计算整个项目工期的统计分布,制定出项目的再计算整个项目工期的统计分布,制定出项目的进度计划。进度计划。4.资源平衡的启发式方法资源平衡的启发式方法通过数学分析法得到的进度计划通常是一个最早通过数学分析法得到的进度计划通常是一个最早开始进度计划,在某些时段内需求的资源超开始进度计划,在某些时段内需求的资源超软件项目管理4343出了实际可利用的资源,或者资源的水平发生变出了实际可利用的资源,或者资源的水平发生变化时无法适时监控,因此产生许多启发式方法。化时无法适时监控,因此产生许多启发式方法。例如,例如,(1)在资源限定的情况下,如何寻求工期最短的实在资源限定的情况下,如何寻求工期最短的实施方案施方案 资源有限的合理分配法资源有限的合理分配法;(2)在工期限定的情况下,如何合理利用资源,以在工期限定的情况下,如何合理利用资源,以保证资源需求的均衡保证资源需求的均衡 资源的均衡利用法资源的均衡利用法。5.项目管理软件项目管理软件根据项目的资源和工期,自动计算和分析最佳工根据项目的资源和工期,自动计算和分析最佳工期及计划安排,同时以多种图表输出。期及计划安排,同时以多种图表输出。软件项目管理4444vProject SchedulerScitor公司的基于公司的基于Windows的项目管理软件包,的项目管理软件包,获电脑杂志的获电脑杂志的“编辑选择奖编辑选择奖”。vSureTrak Project ManagementPrimavera Systems公司的产品。公司的产品。vPrimavera Project Planner Primavera Systems公司的工程项目管理软件,公司的工程项目管理软件,用于工程计划、资源、成本管理。用于工程计划、资源、成本管理。vMicrosoft Project微软公司的产品,目前已经占领通用项目管理微软公司的产品,目前已经占领通用项目管理软件包市场的大部分份额。软件包市场的大部分份额。软件项目管理45456.5.36.5.3 制定进度计划的结果制定进度计划的结果1.项目进度计划项目进度计划该计划包括了每项活动的计划开始时间和预期结该计划包括了每项活动的计划开始时间和预期结束时间。这时的项目进度计划还是初步的,只有束时间。这时的项目进度计划还是初步的,只有在资源分配得到确认后才能成为正式的项目进度在资源分配得到确认后才能成为正式的项目进度计划。计划。项目进度计划的主要表达形式有:带有日历的项项目进度计划的主要表达形式有:带有日历的项目网络图,甘特图,里程碑图等。目网络图,甘特图,里程碑图等。2.详细依据说明详细依据说明包括制定进度计划时的所有约束条件和假定条件包括