软件项目管理第六章软件项目时间管理SoftwareProjectTimemanagement清华大学计算机系殷人昆软件项目管理26.1项目时间管理的概念6.2项目活动定义6.3项目活动顺序安排6.4活动时间估计6.5制定进度计划6.6进度控制6.7网络图技术软件项目管理36.1项目时间管理的概念项目时间管理是指使项目能够及时完成的必需过程。进度安排的准确程度可能比成本估算的准确程度更重要。对于成本估算的偏差,可以通过重新定价或大量的销售来弥补成本的增加;但如果进度计划不能得到实施则会导致市场机会的丧失或用户不满意,也会导致成本的增加。因此,在考虑进度安排时,要把时间与人员花费的工作量联系起来,合理估算工作量,安排时间,并利用进度安排的有效分析方法监督项目的进展情况,使得项目进度不致被拖延。软件项目管理4当参加同一软件工程项目的人数不止一人的时候,开发工作就会出现并行情形。软件工程项目的并行性提出了一系列的进度要求。因为并行任务是同时发生的,所以进度计划必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间。项目负责人应注意构成关键路径的任务,即若要保证整个项目能按进度要求完成,就必须保证这些任务要按进度要求完成。这样就可以确定在进度安排中应当保证的重点。常用的进度安排方法有甘特图法和网络图法。软件项目管理5需求分析需求评审概要设计概要设计评审详细设计设计走查编程代码走查单元测试测试计划测试过程测试评审集成测试确认测试软件项目管理66.2项目活动定义项目时间管理主要由项目活动定义,活动排序,活动时间估计,制定进度计划和进度控制等5个过程组成,下图给出这些过程的主要框架。项目活动定义是时间管理的第一步,是对工作分解结构中规定的可交付成果或阶段产品的产生所需执行具体活动进行定义,并形成文档。项目可交付成果是指工作分解结构中各项工作任务完成后的输出结果。在制定项目开发进度计划时,具体定义分解出的各项活动,能够使项目的目标更加具体、明确。软件项目管理71.输入•工作分解结构•范围说明•历史信息•约束条件•假设条件2.工具与技术•分解•模板3.输出•活动列表•详细依据•更新的工作分解结构活动定义1.输入•活动列表•产品描述•强制性依赖关系•自由依赖关系•外部依赖关系•约束条件•假设条件2.工具与技术•前驱图(PDM)•箭头图(ADM)3.输出•项目网络图•活动列表更新活动排序1.输入•活动列表•约束条件•假设条件•资源需求•资源能力2.工具与技术•专家判断•类比估计•基于数量的历时3.输出•活动时间估计•估计的基础•活动列表更新活动时间估计项目时间管理软件项目管理8制定进度计划项目时间管理1.输入•项目进度•执行报告•变更要求•进度管理计划2.工具与技术•进度变更控制系统•执行情况测量•另外的计划•项目管理软件3.输出•进度更新•纠正措施•经验与教训进度控制1.输入2.工具与技术•项目网络图•数量分析•活动时间估计•时间压缩•资源需求•模拟•资源库描述•资源调整法•日历•项目管理软件•约束条件3.输出•假设条件•项目进度•超前和滞后•详细依据时间•进度管理计划•资源需求更新软件项目管理96.2.1项目活动定义的依据1.工作分解结构是活动定义的基本依据,它包含了项目的所有工作及活动。通过分解将项目所有工作的从属关系表达得清清楚楚。2.范围说明对项目分解后的各项具体工作的具体内容进行详细的描述,以便在工作实施过程中更好地实施各项具体活动所包含的内容。3.历史信息参照历史信息定义项目具体工作内容。软件项目管理104.约束条件对任何一个项目都会有各种约束条件,对项目活动也有一定的约束条件。例如,一个研究项目缺少某种专门人才,或缺少某种专门设备,或资金不足,这些都是必须考虑的约束条件。5.假定项目的实施总是依赖于一定的未来环境,因此许多项目工作的具体实施所遇到的许多因素通常都被假定为真实的、确定的。6.专家评论汇集本领域专家对项目具体工作定义的意见,以得到更明确、风险更小的定义结果。软件项目管理116.2.2活动定义的方法1.分解将项目活动逐步细分为更小、更容易管理的单元,以便更好地管理和控制。依次开发工作分解结构和活动列表。2.模板可将以往类似项目的活动列表或部分活动列表作为新项目的活动列表的模板。模板中的活动也可包括技术资源及所需工作量、风险识别及其它描述信息。软件项目管理126.2.3项目活动定义的结果1.项目活动列表在项目活动列表中要列出项目所需开展的全部活动。活动列表作为工作分解结构的扩充,包括了每一个活动的说明,以帮助项目团队成员明确自己的工作和责任(工作内容、目标、结果、责任者、日期)。2.详细依据是对项目活动列表的解释性文件,包括项目的约束条件和假定条件。3.更新的工作分解结构补充或修订其中的一些可交付成果。软件项目管理136.3项目活动顺序安排活动顺序安排也称为活动排序。一般来讲,项目由一组相关的活动构成。项目在至少有一个活动准备开始时才开始,而只有当项目中所有的活动结束项目才结束。项目的活动必须有一个清晰的起始点和清晰的结束点,一般以产生一个可交付物为标志。活动需要资源,并假定在活动中资源的需求水平保持一致。活动的持续时间必须可预测。活动之间有优先顺序,任何工作的执行必须依赖于一定工作的完成。软件项目管理14工作排序的步骤:(1)分析工作之间本身存在的逻辑关系(顺序的、并行的、迭代的、嵌套的);(2)在逻辑关系的基础上再加以充分分析,确定各工作之间的组织关系。工作排序的目的是确定各项活动之间的依赖关系,并形成文档。工作排序可以利用计算机进行,也可以用手工来完成。在较小的项目中,或在大型项目的早期阶段,手工技术更为有效。手工技术和计算机技术可以结合起来使用。软件项目管理156.3.1工作排序的依据1.活动列表即活动定义过程中得到的结果。2.产品描述描述待开发产品或服务的特性(功能、性能、约束、质量指标等),它们可能影响工作排序。3.强制性依赖关系这是工作之间固有的依赖关系,是工作之间本身存在的,无法改变的逻辑关系。例如,必须先编写出代码,再对它进行检验。4.可自由处理的依赖关系软件项目管理16这种依赖关系是人为确定的,即两项工作可先可后的组织关系。活动之间因组织安排或资源调配需要而规定的先后次序关系叫做组织关系。这种依赖关系是项目管理人员决定的,可能会限制以后的进度安排选择。5.外部依赖关系这种关系涉及项目与非项目活动之间的关系。例如,与外部供应商对新硬件的交货。逻辑关系分为并行、顺序、搭接等三种形式。两项活动同时开始即为并行关系。两项活动先后进行即为顺序关系。如果前一项活动结束,后一项活动马上开始,就叫做紧连软件项目管理17顺序关系;如果后一项活动在前一项活动结束之后一段时间才开始,就叫做间隔顺序关系。如果两项活动之间是紧连顺序关系,中间没有插入其他活动,则相对而言,前一项活动是前驱活动,后一项活动是后继活动。两项活动之间只有一段时间是并行的则为搭接关系。6.里程碑计划里程碑是项目中的重大事件,通常指一个主要可支付成果的完成。例如,需求规格说明、概要设计规格说明、源代码清单等。里程碑计划是一个战略计划或项目的框架,它软件项目管理18明了项目为达到最终目标必须经历的一系列条件或状态,描述了在每一阶段要达到的状态。一个项目必须有几个用作里程碑的关键事件。一个好的里程碑应当得到项目干系人的一致认可。里程碑计划的编制从达成最后一个里程碑,即项目结束点开始,反向进行。其编制过程参看下图。软件项目管理19最后一个目标反向依次确定各个里程碑界定明确?增加或删除,改变因果路径定义不重叠?符合因果路径?成图否否否是是是软件项目管理206.3.2工作排序的方法1.前导图法(PrecedenceDiagrammingMethod)这是一种利用结点表示工作活动,用箭头表示工作排序的编制项目网络图的方法。这种方法也叫做AON(ActiveOntheNode)。每一个结点有唯一的活动编号,并注明了预计工期:9310活动编号最早开始时间最迟开始时间93103最早开始时间最迟开始时间真实开工时间活动编号软件项目管理21每个结点的活动有几个时间点:最早开始时间(ES),最迟开始时间(LS),最早结束时间(EF),最迟结束时间(LF)。前导图中存在4种工作排序关系:结束到开始(FS型),结束到结束(FF型),开始到开始(SS型),开始到结束(SF型)。FS型SS型FF型SF型软件项目管理22前导图例10003473491126131302682510100F=10A=6B=4C=3D=4E=3G=3H=2软件项目管理232.箭线图法(ArrowDiagrammingMethod)这是一种用箭线表示工作活动,结点表示工作排序(中的事件)的网络图法。这种网络图又称为AOA(ActiveOnArrow)。在图中,活动的开始(箭尾)事件叫做该活动的紧前事件;活动的结束(箭头)事件叫做该活动的紧随事件。在箭线图中要明确的事项:(1)网络图中每一事件必须有唯一的一个事件号码。(2)任何两个活动的紧前事件与紧随事件号码至少有一个不同。软件项目管理24(3)流入/流出同一结点的活动,均有共同的后继活动/前驱活动。此外在网络图中有一种特殊的活动—虚活动,用虚箭线表示。它不消耗时间。借助虚活动,改造复杂的网络图,使得活动之间的关系更清楚。AB4132CD65ACB61523D活动A、B可以同时开始,只有A、B都完成后,C、D才能开始。用虚箭线表明A完成后B就可开始。软件项目管理25在复杂的网络图上,为避免多个起点或终点引起的混淆,可以用虚箭线来区别,用虚活动与所有能立即开始的结点连接。箭线图的画法(1)查找所有从结点1开始的活动,画出它们的终止结点和从开始结点到这些终止结点之间的箭线,在这些箭线上附加上活动的名字和持续时间的估计值。AB4132CD650软件项目管理26(2)然后从左向右继续画网络图。寻找分支和会合点:分支是有两个以上的紧随活动的结点,而会合是两个以上紧前活动汇聚的结点。(3)继续画项目的网络图,直到图中包括了所有的活动和它们之间的依赖关系。(4)要求所有箭头都应从左向右,并且没有横穿AOA网络的箭线。3.条件箭线图法允许工作序列有迭代和反馈。因此在绘制网络图的过程中会出现许多条件分支和循环,而在PDM和ADM中这种条件分支是不存在的。软件项目管理274.网络图模板可以用一些标准的网络图作为项目网络图的准备和绘制的样板,加快项目网络图的绘制。这些标准网络图可以包括整个项目,也可以是其中的一部分子网络。1.项目网络图该网络图包括整个项目的全部细节,还包括一个或多个概括性的活动。图中还应附有简要的说明和描述工作排序的基本方法。2.活动列表更新6.3.3工作排序的结果软件项目管理286.4活动时间估计活动时间估计关系到各事项、各工作网络时间的计算和完成整个项目任务所需要的总时间。可以依据Pareto原则,即40-20-40规则:在整个软件开发过程中,编码工作量仅占20%,编码前工作量占40%,编码后工作量占40%。40-20-40规则只应用来做为一个指南。实际的工作量分配比例必须按照各项目的特点来决定。一般地,在做活动历时估计时要依据的信息:软件项目管理29(1)工作量:指完成一个活动需要投入的人工。在确定工作量时,一是考虑系统的规模、功能点或对象点数,二是考虑生产率。这三者的关系是:工作量=规模/生产率。(2)资源:指完成一项活动能够投入的人员。人员投入的数量应与项目的规模合理匹配,且与项目总的时间要求、费用支出有关。(3)活动工期:理论上,在工作量一定的情况下,投入的人员越多,则活动的工期就越短:活动工期=工作量/人数。在做活动历时估计时,还要考虑开发人员的能力差异、对项目了解的差异等。软件项目管理306.4.1活动时间估计的依据除了上面提到的活动列表、项目约束条件等外,活动时间估计的依据还包括:1.资源需求说明工作分解结构中各组