第三章软件项目进度管理软件项目管理本章内容提要软件项目进度管理概述软件项目任务分解活动定义和排序活动历时估计制定进度计划进度控制(项目跟踪)第四节活动历时估计估计项目活动的持续时间•每个活动的历时估计•项目的总历时估计活动历时估计的基本方法定额估算法工程评价技术(PERT)基于进度表的历时估计Jones的一阶估算准则其它方法定额估算法T=Q/(R*S)T:活动持续时间(小时、日、周、月)Q:活动的工作量(人月、人天)R:人力或设备的数量S:开发效率,以单位时间完成的工作量表示例如:Q=6人月,R=2人,S=1则:T=6/(2*1)=3月Q=6人月,R=2人,S=1.5则:T=6/(2*1.5)=2月定额估算法方法比较简单,容易计算。适合规模比较小的项目,比如说小于10000LOC或者说小于6个人月工作量的项目。活动历时估计的基本方法定额估算法工程评价技术(PERT)基于进度表的历时估计Jones的一阶估算准则其它方法工程评价技术(PERT)PERT(ProgramEvaluationandReviewTechnique)最初产生于1958年,是美国海军部开发北极星潜艇系统时为协调3000多个承包商和研究机构开发的。PERT是利用网络图逻辑关系和加权历时估算来计算项目历时的技术。PERT假设项目持续时间是随机的。当项目中的活动存在很大的不确定性时适于采用此法。在估计项目活动的持续时间时,PERT采用三点估计法,即乐观值、悲观值和最可能值。采用加权平均得到持续时间的期望值:E=(O+4M+P)/6•O是最小估算值:乐观(Optimistic),•P是最大估算值:悲观(Pessimistic),•M是最可能估算值(MostLikely)。工程评价技术(PERT)例如:某活动持续时间的乐观值O=8workdays最可能值M=10workdays悲观值P=24workdays则活动持续时间的期望值为E=(8+4*10+24)/6=12workdays工程评价技术(PERT)PERT的保证率保证率指活动在估计的时间内完成的概率。保证率8天24天100%10天PERT历时估计的可信度标准差σ=(悲观值-乐观值)/6方差σ2=[(悲观值-乐观值)/6]2例如:σ=(24-8)/6=2.67PERT评估存在多个活动的一条路径历时期望值E=E1+E2+….En方差σ2=(σ1)2+(σ2)2+….+(σn)2标准差σ=((σ1)2+(σ2)2+….+(σn)2)1/212345ACBDPERT举例21432,3,64,6,83,4,6JKL项活动O,M,PEδδ2J2,3,63.334/616/36K4,6,864/616/36L3,4,64.173/69/36估计路径总历时13.51.0741/36标准差与保证率68.3%95.5%99.7%E=(O+4M+P)/6PERT举例历时估计期望E=13.5,σ=1.07范围概率从到T1±σ68.3%12.4314.57T2±2σ95.5%11.415.6T3±3σ99.7%10.316.7项目在14.57天内完成的概率是多少?项目在10.3天内完成的概率是多少?PERT举例-2σ+2σ-3σ-1σ+1σ+3σ68.3%95.5%99.7%EP=50%+34.2%=84.2%68.3%/2=34.2%50%T=E+σ=13.5+1.07=14.57PERT举例-2σ+2σ-3σ-1σ+1σ+3σ68.3%95.5%99.7%EP=50%-49.9%=0.1%99.7%/2=49.9%50%T=E-3σ=13.5-3.21=10.3活动历时估计的基本方法定额估算法工程评价技术(PERT)基于进度表的历时估计Jones的一阶估算准则其它方法基于进度表的历时估计通过查给定的进度表来估计项目的历时。可能的最短进度表有效进度表普通进度表为企业提供了一个项目历时估计的参照,尤其对没有任何历史项目记录的企业有很大帮助。可能的最短进度表-人员人才库中前10%的最拔尖的人才。有几年应用编程语言和编程环境的工作经验。开发人员掌握了应用领域的详细知识。目标明确,努力工作。分享成果,团队和谐。不存在人员调整。可能的最短进度表-管理具有理想的项目管理开发人员可以专注于本职的工作采用矩阵管理模式配备员工尽可能地压缩项目进度,直到不能压缩。有先进的软件开发工具开发人员可以无限制地使用资源工作环境理想,在集中的工作区域开发交流工具使用便利可能的最短进度表-工具支持可能的最短进度表-开发方法使用最时效的开发方法和开发工具设计阶段开始的时候已经完全了解需求需求不变更可能的最短进度表可能的最短进度表基于进度表的估算可能的最短进度表有效进度表普通进度表有效进度表-人员人才库中前25%的最拔尖的人才。有1年应用编程语言和编程环境的工作经验。开发人员对目标有共同的看法,相互之间没有严重冲突。采用有效的人员管理模式。每年人员调整少于6%。采用有效的编程工具主动的风险管理优良的物理环境沟通工具使用方便有效进度表-其它有效进度表有效进度表基于进度表的估算可能的最短进度表有效进度表普通进度表普通进度表—人员人才库中中等以上的人作为开发团队成员。开发人员对编程语言和编程环境较熟悉。开发人员对应用领域有一定的经验,但不丰富。团队不是很有凝聚力,但解决冲突时有一定的经验。每年人员调整10-12%。风险管理不像理想情况那样得力。交流工具容易使用。工作环境一般,不是很理想。进度压缩一般。普通进度表—其它普通进度表活动历时估计的基本方法定额估算法工程评价技术(PERT)基于进度表的历时估计Jones的一阶估算准则其它方法Jones的一阶估算准则取得功能点的总和,从幂次表中选择合适的幂次将它升幂,得到软件项目的进度。软件类型最优级平均最差级系统软件0.430.450.48商业软件0.410.430.46封装商品软件0.390.420.45Jones的一阶估算准则举例某软件项目的功能点FP=350软件类型是商业软件承担这个项目的是平均水平的软件公司则:粗略的进度=350exp(0.43)=12月活动历时估计的基本方法定额估算法工程评价技术(PERT)基于进度表的历时估计Jones的一阶估算准则其它方法活动历时估计的其它方法专家估算方法通过专家根据过去项目的资料信息进行判断,以估算项目历时。类推估计利用先前类似活动的实际时间作为估计未来活动时间的基础。模拟估算用不同的假设试验一些情形,在计算机上进行一个项目的模拟,从而计算相应的时间。估计结果的不确定性交付日期按期或者提前交付的概率4月5日5%5月5日50%6月5日90%本章内容提要软件项目进度管理概述软件项目任务分解活动定义和排序活动历时估计制定进度计划进度控制(项目跟踪)第五节:制定项目进度计划确定项目中所有活动的开始和结束时间。计划是三维的,考虑时间,费用和资源。项目进度计划是监控项目实施的基础,它是项目管理的基准。所以有时也称项目核心计划。制定项目进度计划的主要活动1.进度编制2.资源调整进度编制的基本方法关键路径法•正推法•逆推法时间压缩法•赶工(Crash)•快速跟进(Fasttracking:搭接)根据指定的网络图逻辑关系和活动的历时估计,计算每一个活动的最早和最迟开始和完成时间。计算活动的浮动时间。计算网络图中最长的路径(关键路径)。确定项目完成时间。关键路径法(CPM:CriticalPathMethod)活动时间参数说明最早开始时间(EarlyStart)最晚开始时间(LateStart)最早完成时间(EarlyFinish)最晚完成时间(LateFinish)浮动时间(Float)是一个活动的机动性,它是一个活动在不影响其它活动或者项目完成的情况下可以延迟的时间量。•自由浮动(FreeFloat):在不影响后置活动最早开始时间的情况下本活动可以延迟的时间。•总浮动(TotalFloat):在不影响项目最早完成时间的情况下本活动可以延迟的时间。活动时间参数说明开始A:30天B:10天结束活动时间参数说明A:ES=0,LS=0,EF=30,LF=30B:ES=0,LS=20,EF=10,LF=30TF=20=LS-ES=LF-EF公式:EF=ES+durationLS=LF-durationTF=LS-ES=LF-EF超前(Lead):两个活动的逻辑关系所允许的提前后置活动的时间。滞后(Lag):两个活动的逻辑关系所允许的推迟后置活动的时间。活动时间参数说明活动A活动B结束--开始(FS)前置活动后置活动活动时间参数说明开始A:10B:5C:10D:6结束Lag=3Lead=2ES(A)=0,EF(A)=10,ES(B)=13FF(A)=0=ES(B)-EF(A)-LagES(C)=0,EF(C)=10,ES(D)=8=EF(C)-lead公式:ES=EF(P)+LagLF=LS(S)–LagFF=ES(S)-EF-Lag关键路径(CriticalPath)关键路径决定了项目完成的最短时间。是时间浮动为0(Float=0)的路径。网络图中最长的路径。关键路径上的任何活动延迟,都会导致整个项目完成时间的延迟。关键路径上的活动称为关键活动。关键路径的简单示例关键路径的其它说明明确关键路径后,可以合理安排进度。关键路径可能不止一条,在项目的进行过程中,关键路径可能会改变。正推法(Forwardpass)按照时间顺序来计算路径中每项活动的最早开始时间和最早完成时间。建立项目的开始时间。项目的开始时间就是网络图中第一个活动的最早开始时间。按网络图从左到右,从上到下的顺序进行计算。所用公式为:•ES+Duration=EF•EF+Lag=ESs或EF-Lead=ESs当一个活动有多个前置时,选择其中最大的最早完成时间作为其后置任务的最早开始时间。正推法举例StartLFLSEFESDuration=7TaskA18LFLSEFESDuration=3TaskB14LFLSEFESDuration=6TaskC814LFLSEFESDuration=3TaskD47LFLSEFESDuration=3TaskG1417LFLSEFESDuration=3TaskE710LFLSEFESDuration=2TaskH1719LFLSEFESDuration=2TaskF46Finish逆推法(Backwardpass)按照逆时间顺序计算路径中每项活动的最晚开始时间和最晚完成时间。首先建立项目的结束时间。项目的结束时间就是网络图中最后一个活动的最晚结束时间。从右到左,从上到下进行计算。所用公式为:•LF-Duration=LS•LS-Lag=LFp当一个任务有多个后置任务时,选择其中最小的最晚开始时间作为其前置任务的最晚完成时间。逆推法举例StartLFLSEFESDuration=7TaskA1818LFLSEFESDuration=3TaskB14811LFLSEFESDuration=6TaskC814814LFLSEFESDuration=3TaskD471114LFLSEFESDuration=3TaskG14171417LFLSEFESDuration=3TaskE7101417LFLSEFESDuration=2TaskH17191719LFLSEFESDuration=2TaskF461214FinishCP:A-C-G-HCpPath:18进度编制的基本方法关键路径法•正推法•逆推法时间压缩法时间压缩法时间压缩法是在不改变项目范围和目标的前提下缩短项目工期的方法。应急法--赶工(Crash)平行作业法--快速跟进(Fasttracking:搭接)应急法-赶工(Crash)赶工也称为时间-成本平衡方法。