1、2019/5/25,1,第10讲 风险管理,如果你不主动地击败风险,它们就会主动击败你 Tom Gilb,2019/5/25,2,什么是风险,A risk is whatever may stand in the way to success or in the way of achieving major milestones Success is meeting the entire set of all requirements and constraints, and satisfying stakeholder expectations.,2019/5/25,3,风险类别,Direc
2、t risk: the project has a large degree of control Indirect risk: the project has little or no control Example: Resource risks People, skills, funding, Business risks Competition, ROI, supplier interfaces, Technical risks Unproven technology, uncertain scope, Schedule risks Only 24 hours in a day,201
3、9/5/25,4,风险的特性,三种类别的风险: 估计本身的困难带来的风险 以前没有进行过的任务更难估计,因而有效的积累过去完成任务的信息将有助于降低风险 在计划阶段的假设 在每一个计划步骤中,都有所假设,因而对列出每一假设以及假设不成立后带来的后果,有助于降低风险 无法预计的事件 需求的变化 高级程序员怀孕离开 所需的硬件可能没有被及时交付 ,2019/5/25,5,管理风险,风险管理的目的是避免或使风险的负作用最小 有很多的风险管理模型,但是多数都是类似的。,风险工程,风险分析,风险管理,风险识别,风险估计,风险评价,风险计划,风险控制,风险监测,风险定向,风险指派,2019/5/25,6,
4、管理风险,风险识别(identification) 将所有能够影响项目成功执行的风险列出 风险估计(estimation) 对每一个危险的可能性和影响进行评价 风险评估(evaluation) 将风险进行排序并确定风险规避策略 风险计划(planning) 构造一个意外计划,如果合适,可以加入到项目任务结构中,对于小项目,风险管理由项目经理负责,对于大项目,风险管理可能由全职风险经理负责。,2019/5/25,7,管理风险,风险控制(Control) 处理项目中的问题并尽量降低问题的影响。 风险监测(Monitoring) 风险定向(Directing)和风险职员分配(Staffing),20
5、19/5/25,8,创建风险管理的气氛,如果所有项目人员没有重视风险认识,不管使用什么技术,风险管理将起不到任何作用。 因而,创造一个能够自由讨论风险对项目的影响的氛围特别重要,那些经常提出负面意见的人可能更能够在早期发现潜在的风险。,2019/5/25,9,风险识别,风险类别 普通风险(generic risks) 如对需求的误解 关键人员生病 特殊风险(specific risks) 在风险识别时从下列 方面考虑: 应用因素: 应用的特性是一个关键因素,如简单的数据库应用系统,实时的分布式系统, 应用的规模,2019/5/25,10,风险识别,人员因素 人员的经验和技能显然对项目产生很大影
6、响 成员的满足程度和人员的离开 项目因素 项目及其目标清晰的定义以及所有成员对其有清楚的认识,如果不能够达到这一点将给项目带来风险 如果没有一个公认的、正式的质量管理计划将给项目带来风险 项目方法 使用正规的项目管理方法将降低风险 但第一次使用某种方法将带来风险 硬件/软件因素 在新的硬件/软件上开发可能会有高风险 在一种硬件/软件平台上开发的软件安装在另一种硬件/软件平台上可能会有风险,2019/5/25,11,风险识别,彻底改变因素 对原系统进行彻底改变会带来风险,增量式或者渐进式改变将降低风险 供应商因素 许多依靠外部供应商的支持,那些无法直接控制的供应商将带来风险。 环境因素 环境改变
7、可能影响项目的成功 如税收法律的改变可能会对工资管理系统的开发带来问题 健康和安全因素 对于软件项目来说一般不是一个普遍问题,但是对于那些用在危险场合的实时软件来说,也是一个因素,2019/5/25,12,练习,请根据上述各种因素列出工资系统中所有可能的问题。 应用因素: 开发的系统是否需要与其它系统接口? 不同的解决办法是否有非常大的差异? 人员因素 学院中的人员是否对评价系统或者外部系统有足够经验? 学院中的职员是否对使用近似的系统有经验?,2019/5/25,13,练习,项目方法 我们能够对该项目使用标准方法吗? 学院是否对该类型的项目建立过程定义? 硬件因素 项目中是否需要购买新的硬件
8、? 是否我们能够在与实际的硬件平台相似的平台上测试软件包? 彻底改变因素 在系统整个改变前是否能够运行一个替代系统? 主文件是否能够从现存的系统中转化来?,2019/5/25,14,练习,供应商因素 是否我们有从备选供应商处购买软/硬件的经验? 我们考虑的供应商是否已经确定? 环境因素 是否有对系统发生影响的学院重组的计划? 是否有一些对项目产生影响的政府法规方面的改变?,2019/5/25,15,风险分析,风险的可能性(risk likelihood):危险发生的概率 对项目的影响程度(risk impact) 风险的重要性: 风险暴露量 Risk exposure=risk likelih
9、ood*risk impact Risk impact一般以金额为单位,而likelihood以概率为单位。,2019/5/25,16,风险分析,如何定量化的评价风险的影响是一个难题。 1.简单的评分方法 2.将可能性和影响分为高,中,低级别 3.将可能性和影响给出1到10之间的分值(较好),2019/5/25,17,例子,2019/5/25,18,风险分析,风险排序(Prioritizing) 管理风险的策略有两条: 通过降低风险的概率和影响从而降低风险暴露量 建立意外计划 由于管理风险需要一定的成本,因而需要对风险进行排序。“人们通常用80的钱解决20的问题”,2019/5/25,19,风
10、险分析,基于给分的方法计算风险暴露量存在一些问题。,2019/5/25,20,风险分析,影响分析的其它因素 对风险评估的自信性 复合风险:风险之间有依赖关系 风险的数量:能管理的风险是有限的 行动成本(Cost of Action):某些风险,一旦识别出来,可以以很少的代价就处理掉,而有些风险则需要很大的代价 风险降低杠杆(risk reduction leverage),2019/5/25,21,风险降低,危险预防(hazard prevention) 提前计划会议能够预防关键人员不能出席会议的危险 概率降低(likelihood reduction) 通过原型能够降低由于需求不清带来的问题
11、 风险避免(risk avoidance) 增加估计时间和减少功能能够避免项目超时风险 风险转移(risk transfer) 比如外包 意外计划(contingency planning),2019/5/25,22,练习,请考虑各个风险的风险降低策略 在编码阶段需求描述的改变 保证原始的需求描述经过了高层的同意并采用一个高的变更条件。 项目的分析阶段花费的时间超过期待。 仔细估计分析阶段花费的时间。 将活动分割成更小的活动,并对它们重新估计。制定意外计划。 人员生病影响关键活动。 考虑是否有合适的代理分析人员或者编程人员。,2019/5/25,23,练习,人员生病影响非关键活动。 制定可以从
12、其它项目中召集的人员的值班表 模块编码耗费过长的时间。 仔细检查评估过程并将其与过去的项目相比较。 模块测试显示设计阶段的错误或不足。 使用更直接的方法来校对设计形式化方法或结构化预排方法。,2019/5/25,24,风险降低策略,Personnel shortfalls staffing with top talent job matching team building training and career development early scheduling of key personnel Unrealistic time and cost estimates multiple
13、estimation techniques design to cost incremental development recording and analysis of past projects standardization of methods,2019/5/25,25,Developing the wrong software functions: improved project evaluation; formal specification methods; user surveys; prototyping; early users manuals Developing t
14、he wrong user interface gold plating: prototyping; task analysis; user involvement,2019/5/25,26,Late changes to requirements: Stringent change control procedures; High change threshold Incremental prototyping Incremental development(defer changes) Shortfalls in external supplied components Benchmark
15、ing Inspections Formal specifications Contractual agreements Quality assurance procedures and certification,2019/5/25,27,Shortfalls in externally performed tasks Quality assurance procedures Competitive design or prototyping Teambuilding Contract incentives Real time performance shortfalls Simulatio
16、n Benchmarking Prototyping Tuning Technical analysis,2019/5/25,28,Development technically too difficulty Technical analysis Cost-benefit analysis Prototyping Staff training and development,2019/5/25,29,风险监控,前10个风险列表,包括本周排序,上周排序,已上列表周数,风险,风险化解进展 中间检查 风险官员,2019/5/25,30,风险监控,2019/5/25,31,评估进度计划的风险,使用PE
17、RT(Program Evaluation and Review Technique)评价不确定性的方法 PERT与CPM同时出现,具有类似性 每个活动的持续时间的估计包括: 最可能时间(Most Likely Time):m 乐观时间(Optimistic Time):a 悲观时间(Pessimistic Time):b 期待时间,2019/5/25,32,练习,计算期待持续时间,2019/5/25,33,评估进度计划的风险,通过期待持续时间可以用类似于CPM中前向路径方法计算项目结束日期 问题:此处获得的日期是否为最早结束日期?,2019/5/25,34,练习,请计算项目周期,2019/5
18、/25,35,练习,结果可以表达为“我们期待项目在天完成”,2019/5/25,36,活动标准偏差,活动标准偏差(Activity Standard Deviation) 计算方法:s=(b-a)/6,2019/5/25,37,达到目标的可能性,计算步骤 计算每个项目事件的标准偏差 计算具有目标期限的事件的z值 将z值转换为概率,2019/5/25,38,达到目标的可能性,项目事件的标准偏差的计算方法与计算项目期待时间计算时采用的方法是类似的。 两个标准偏差的和是两者的平方和再求平方根。,2019/5/25,39,达到目标的可能性,请计算2,4,5事件的标准偏差,0.50,0.33,1.17,
19、2019/5/25,40,达到目标的可能性,计算Z值Z=(T-te)/sT:目标日期,te:期待时间,s:标准偏差,2019/5/25,41,达到目标的可能性,将z值转化为概率,不能完成的概率,2019/5/25,42,练习,请计算事件4,5不能在10周前完成的概率,事件4,z=1.89,概率:3% 事件5,z=-0.43概率:68,2019/5/25,43,达到目标的可能性,PERT的优点 基于仿真的方法,2019/5/25,44,问题(issue)管理,Issue Identifications Issue Classifications Issue Ownership Assignmen
20、t Issue Tracking Exercise: Postal Service wants to deliver a brand new online package tracking system(PTS)(including package info entry system, package info lookup system, tracking system, package labeling system, package scanning system, package positioning system) Pick 3 and describe how do you make sure the issues get resolved,