上海交通大学计算机系1讲座9软件项目监控曹健教授博士上海交通大学计算机系2内容项目监控的内容项目监控框架项目监控方法与工具变更控制项目修复上海交通大学计算机系3项目监控的内容监控项目的进展比较实际进度与计划的差别修改计划使项目能够返回预定“轨道”上海交通大学计算机系4项目监控框架:过程上海交通大学计算机系5项目监控框架:责任(1)项目指导委员会(ProjectSteeringCommittee,ProjectBoard)负责整个项目进度报告项目情况的组织结构上海交通大学计算机系6项目监控框架:责任(2)项目情况报告的内容上海交通大学计算机系7项目监控框架:进度评估基础:定期信息收集或者发生的特定事件这些信息必须是客观的和可度量的但是并非每一次都能够得到符合要求的信息,因而通常需要项目成员进行主观判断上海交通大学计算机系8项目进度监控:检查点设置检查点(Checkpoints)包括:定期的(如一星期一次,一月一次)与特定的事件绑定的,如生成一份报告或者交付部分产品上海交通大学计算机系9项目监控框架:监测频率监测的频率依赖于项目的大小和风险情况团队领导,可能需要每天都了解一下进度项目经理需要每星期或每月了解情况管理层次越高,频率越低,信息越抽象许多公司利用星期一早晨的短会来激励员工实现短期目标上海交通大学计算机系10数据收集尽管整个过程被分成了容易管理的活动,但是项目执行中仍然需要在活动中对任务完成的比例进行评估,这种评估通常是困难的。思考:某一软件开发者完成了一个需要500行代码的软件的250行,请解释一下为什么不能认为他的工作已经完成了一半?上海交通大学计算机系11答案许多因素决定了不能用完成的代码行的比例来衡量进度:对整个软件的代码行的估计可能不准确写完的代码可能相对容易,或者相对容易一个软件如果没有通过测试就不能算完成,因而即使代码全部写完了,如果没有测试也不能算完成。对所需完成内容的深入的了解有助于判断进度,如将整个工作细分为子任务,如设计,编码,单元测试等。上海交通大学计算机系12部分完成报告许多组织采用财务系统中的每周时刻表来记录每个职员在每项工作中花费的时间,但是该表无法告诉项目经理目前产出了什么,进度是否满足要求。因而可以对每周时刻表进行扩展,以包含完成的工作内容上海交通大学计算机系13风险报告询问小组成员完成计划的可能性交通灯方法:识别评价某项工作中的关键元素将这些关键元素分解为组成元素对于每一元素:如果符合计划要求:绿灯目前已经拖后,但是可以恢复,黄灯已经拖后,恢复很困难,红灯上海交通大学计算机系14进度可视化Gantt图上海交通大学计算机系15进度可视化滑动图(slipchart)弯曲的越厉害,说明偏离计划越明显上海交通大学计算机系16进度可视化球图:计划开始,计划结束作为两个球,每次计划改变后,日期添加到球中,如果时间是按计划的,球被填为绿色,否则被填为红色。每次更新后,图不需重画。上海交通大学计算机系17进度可视化前面的方法不能表示出项目生命周期中偏离计划的情况。对计划偏离的趋势分析能够避免将来的项目偏离。时间线图(timeline)上海交通大学计算机系18进度可视化实际的时间计划的时间第二个星期评估时发现,任务2需要延期,其它任务也相应延期第四个星期评估时发现,任务4需要延期,任务5也相应延期第五个星期评估时发现,任务3需要延期上海交通大学计算机系19成本监控监控的意义成本本身是项目中的重要元素成本监控也能展示已经花费了多少劳力简单的监控方法:累积消耗图不能说明项目进展情况上海交通大学计算机系20累积消耗图对普通的累积消耗图上加上项目时间信息上海交通大学计算机系21盈余量盈余量(EarnedValue):建立在对每个任务或工作包的消耗预测的基础上。对每一项内容的原始预算成本被称为预算基线或计划工作的预算成本(budgetedcostofworkscheduled,BCWS)。未开始的任务被赋予值0,当它被完成后,将被赋值。在项目中的一点上,全部的值将被成为盈余量或完成工作的预算成本(budgetedcostofworkperformed,BCWP)上海交通大学计算机系22盈余量当任务未完成时,需要分配一个盈余量给该任务,方法为:0/100技术:任务被分配值0直到任务完成后,被分配预算值的100%50/50技术:任务一开始后,就赋予50%,直到项目结束后赋值100%里程碑方法:对任务中的一系列里程碑赋予特定值。建议用0/100方法,因为50/50方法由于活动开始后报告的值过高,容易给人一种错误的安全感,而里程碑方法最好将该任务细分为多个子任务。上海交通大学计算机系23预算基线建立盈余量分析的第一步是为项目建立一个预算基线(baselinebudget)预算基线是建立在项目计划的基础上的,它是根据时间对盈余量值的预测。盈余量可以用货币单位来衡量,也可以用人员工作量来衡量。上海交通大学计算机系24例子采用了0/100方法上海交通大学计算机系25盈余量监控随着项目的进行,可以不断进行盈余量监控,判断项目的进度。?通过分析该图是否可以判定项目中发生的情况上海交通大学计算机系26盈余量监控每一项任务的真正成本消耗为(ActualCostworkperformed,ACWP)预算变动调度变动(成本)调度变动(时间)成本变动上海交通大学计算机系27盈余量监控性能比例:成本性能指数:CPI=BCWP(盈余量)/ACWP(真正的成本消耗)调度性能指数:SPI=BCWP/BCWS(预算成本)值越大,工作完成得越好上海交通大学计算机系28例子上海交通大学计算机系29你被指定负责一个软件项目,此项目由四个部分(A,B,C,D)组成,项目总预算为53000元,其中A任务预算为26000,B任务预算为12000,C任务预算为10,000,D任务预算为5000,截至到8月31日,A已经全部完成,B过半,C刚开始,D还没有开始采用50/50规则计算截至到8月31日的CV,SV,CPI,SPICV=BCWP-ACWPSV=BCWP-BCWSCPI=BCWP/ACWPSPI=BCWP/BCWS任务BCWS(计划费用):元ACWP(实际花费):元A26,00025,500B9,0005,400C4,8004,100D00截至到8月31日的计划成本和实际成本上海交通大学计算机系30关键:计算BCWP采用50/50原则B任务过半,BCWP=6,000C任务开始,BCWP=5,000D任务未开始,BCWP=0任务BCWS(计划费用):元ACWP(实际花费):元BCWP(盈余量):元A26,00025,50026,000B9,0005,4006,000C4,8004,1005,000D000Total39,80035,00037,000上海交通大学计算机系31截至到8月31日BCWS=39,800ACWP=35,000BCWP=37,000CV=37,000-35,000=2,000SV=37,000-39,800=-2800SPI=93%CPI=106%SPI小于1说明截至到8月31日没有完成计划的工作量,即进度落后CPI大于1说明截至到8月31日费用节省了,完成工作量的价值大于实际花费的价值上海交通大学计算机系32盈余量监控盈余量概念还没有被软件界全面接受,原因可能在于建了一半的房屋可以有反映人力和材料消耗的记录,而完成一半的软件项目却没有任何数据。这是对盈余量分析的误解。实际上盈余量分析是一项跟踪项目进度的方法。上海交通大学计算机系33项目评审通过一定的方式对项目进行评价和审核评审活动的类型商务评审技术评审管理评审质量评审产品评审评审时间定期评审阶段评审事件评审上海交通大学计算机系34定期评审准备评审要素确定评审方式依据采集数据统计项目性能评审管理/质量/技术等问题对评审作出结论计划修改到达定期评审时间上海交通大学计算机系35阶段评审准备评审要素组织相关评审评审本阶段关键任务完成情况确认产品提交情况阶段评语对下阶段计划调整到达阶段评审时间统计报告数据上海交通大学计算机系36事件评审按评审过程组织评审报告事件的情况对事件处理方案的讨论确定事件影响的范围计划修改事件报告被批准对评审做出结论上海交通大学计算机系37监控的优先级关键路径活动没有自由浮动的活动小自由浮动时间活动的监控高风险的活动使用关键资源的活动上海交通大学计算机系38使项目回到正规几乎所有的项目都会遇到延误和意外事件。项目经理的一项任务就是识别这些事件发生的时间,在最小延迟时间和对项目团队有最小的影响的情况下,消除问题的影响。上海交通大学计算机系39缩短关键路径要求项目组人员“Workharder”有一些效果,但是不能轻易使用。分配额外的资源可以加快进度,但是并不总是奏效,例如分配给某一人员的小模块,再增加一个人员并不一定能够缩短时间。将非关键路径上的资源调整到关键路径上注意:缩短关键路径可能使其它路径成为关键路径。上海交通大学计算机系40重新考虑任务优先关系网络计划考虑的是理想情况和普通工作情况,因而在无法缩短关键路径时,可以重新考虑任务优先关系。另一种方法是将活动再进行划分,从而一部分可以与其它活动并行。重新考虑任务优先关系可能带来风险或者质量上的影响。上海交通大学计算机系41变更控制(ChangeControl)用户的需求可能变化,项目内部可能变化……变更需要仔细考虑,因为一个部分的变化可能会对另外部分的造成影响问题:对程序描述的改变将引起软件的设计和代码的改变,还有什么其它产品可能需要修改?答案:测试数据,期待结果和用户手册等上海交通大学计算机系42变更管理员角色ConfigurationLibrarian责任:识别所有需要变更控制的内容建立一个保存所有项目文档和代码的中央库建立一套管理变更的正式过程维护读取库中内容的记录和库中每一项的状态上海交通大学计算机系43变更控制过程用户意识到需要对系统进行修改,考虑将修改请求提交给开发人员用户端的管理者考虑是否将该修改请求提交给项目承担者项目承担端的管理者将该任务指派给一个成员,该成员将判断该修改的成本以及修改的影响,并提交一个报告该报告被提交给用户,用户将考虑是否能够承受额外的成本上海交通大学计算机系44变更控制过程用户同意后,一个获多个开发者被授权从主产品上取出要修改的部分的拷贝拷贝被修改。新版本开发出来后,将通知用户,用户进行接受测试当用户满意后,产品的配置项被新版本所代替。上海交通大学计算机系45项目修复需要修复的项目没有人对项目何时结束有一点点概念产品满目疮痍。开发组人员工作超时,每周多于60小时管理层已经无法控制进度,而评估项目状态的准确性丧失殆尽客户对开发组能否按承诺交付软件不再抱有信心开发人员,市场人员,项目经理,客户之间关系紧张开发组士气低落……上海交通大学计算机系46修复方案问题:如何挽救项目缩减项目规模,以便在计划的时间与工作量内完成项目把注意力放在短期的改善上,以提高过程的生产率面对现实,放弃计划有没有其它方法?重新获取控制权上海交通大学计算机系47修复计划第一步评估你的处境应用W-理论分析作好修复项目的思想准备向开发组成员探问拯救项目的方法变得现实一些上海交通大学计算机系48项目修复:人员采取一切措施恢复开发组的士气采取一个象征性的行动,如给他们特许的条件(允许他们上班晚些,提供更好的工作环境),也可以放一次假确保为开发组创造了条件如去掉了过多的进度压力,改善了恶劣的工作条件,剔除了管理上的不当做法消除重大的人员问题勇敢地面对问题,该调整的要调整上海交通大学计算机系49项目修复:人员消除重大领导问题更换子项目经理为经理配备助手增加新手一定要慎重充分利用开发人员的时