上海交通大学计算机系2020/3/271第十讲风险管理如果你不主动地击败风险,它们就会主动击败你——TomGilb上海交通大学计算机系2020/3/2721.风险概述AriskiswhatevermaystandinthewaytosuccessorinthewayofachievingmajormilestonesSuccessismeetingtheentiresetofallrequirementsandconstraints,andsatisfyingstakeholderexpectations.上海交通大学计算机系2020/3/2731.1风险类别Directrisk:theprojecthasalargedegreeofcontrolIndirectrisk:theprojecthaslittleornocontrolExample:ResourcerisksPeople,skills,funding,…BusinessrisksCompetition,ROI,supplierinterfaces,…TechnicalrisksUnproventechnology,uncertainscope,…SchedulerisksOnly24hoursinaday,…上海交通大学计算机系2020/3/2741.2风险来源三种类别的风险:估计本身的困难带来的风险以前没有进行过的任务更难估计,因而有效的积累过去完成任务的信息将有助于降低风险在计划阶段的假设在每一个计划步骤中,都有所假设,因而对列出每一假设以及假设不成立后带来的后果,有助于降低风险无法预计的事件需求的变化高级程序员怀孕离开所需的硬件可能没有被及时交付……上海交通大学计算机系2020/3/2752.软件风险管理软件风险管理过程风险技术过程风险项目过程产品上海交通大学计算机系2020/3/2762.1风险管理基本概念基本概念目标:明确定义的目标加上可度量的成功标准界定了可接受的风险范围不确定性:未知的因素损失:如果没有潜在的损失,就没有风险时间:我们需要时间来预料和防止问题的发生选择:没有选择,就没有风险管理制定明智的决策:意识、洞悉和理解风险是我们作出明智决策的基础应对风险:风险行动计划防患于未然:风险管理是减少有代价的重复劳动的主动决策上海交通大学计算机系2020/3/2772.2风险管理的基础结构制定政策定义标准过程风险管理培训检验一致性改进实践上海交通大学计算机系2020/3/2782.3创建风险管理的气氛如果所有项目人员没有重视风险认识,不管使用什么技术,风险管理将起不到任何作用。因而,创造一个能够自由讨论风险对项目的影响的氛围特别重要,那些经常提出负面意见的人可能更能够在早期发现潜在的风险。上海交通大学计算机系2020/3/2792.4风险管理技术有很多的风险管理模型,但是多数都是类似的。上海交通大学计算机系2020/3/2710风险识别(identification)将所有能够影响项目成功执行的风险列出风险估计(estimation)对每一个危险的可能性和影响进行评价风险评估(evaluation)将风险进行排序并确定风险规避策略风险计划(planning)构造一个意外计划,如果合适,可以加入到项目任务结构中,对于小项目,风险管理由项目经理负责,对于大项目,风险管理可能由全职风险经理负责。上海交通大学计算机系2020/3/2711风险控制(Control)处理项目中的问题并尽量降低问题的影响。风险监测(Monitoring)风险定向(Directing)和风险职员分配(Staffing)上海交通大学计算机系2020/3/27123.风险识别风险类别普通风险(genericrisks)如对需求的误解关键人员生病特殊风险(specificrisks)在风险识别时从下列方面考虑:应用因素:应用的特性是一个关键因素,如简单的数据库应用系统,实时的分布式系统,应用的规模对于我们不理解的所有事物,我们是它们的奴隶-作家VernonHoward上海交通大学计算机系2020/3/2713人员因素人员的经验和技能显然对项目产生很大影响成员的满足程度和人员的离开项目因素项目及其目标清晰的定义以及所有成员对其有清楚的认识,如果不能够达到这一点将给项目带来风险如果没有一个公认的、正式的质量管理计划将给项目带来风险项目方法使用正规的项目管理方法将降低风险但第一次使用某种方法将带来风险硬件/软件因素在新的硬件/软件上开发可能会有高风险在一种硬件/软件平台上开发的软件安装在另一种硬件/软件平台上可能会有风险上海交通大学计算机系2020/3/2714彻底改变因素对原系统进行彻底改变会带来风险,增量式或者渐进式改变将降低风险供应商因素许多依靠外部供应商的支持,那些无法直接控制的供应商将带来风险。环境因素环境改变可能影响项目的成功如税收法律的改变可能会对工资管理系统的开发带来问题健康和安全因素对于软件项目来说一般不是一个普遍问题,但是对于那些用在危险场合的实时软件来说,也是一个因素上海交通大学计算机系2020/3/2715练习请根据上述各种因素列出工资系统中所有可能的问题。应用因素:开发的系统是否需要与其它系统接口?不同的解决办法是否有非常大的差异?人员因素学院中的人员是否对评价系统或者外部系统有足够经验?学院中的职员是否对使用近似的系统有经验?上海交通大学计算机系2020/3/2716练习项目方法我们能够对该项目使用标准方法吗?学院是否对该类型的项目建立过程定义?硬件因素项目中是否需要购买新的硬件?是否我们能够在与实际的硬件平台相似的平台上测试软件包?彻底改变因素在系统整个改变前是否能够运行一个替代系统?主文件是否能够从现存的系统中转化来?上海交通大学计算机系2020/3/2717练习供应商因素是否我们有从备选供应商处购买软/硬件的经验?我们考虑的供应商是否已经确定?环境因素是否有对系统发生影响的学院重组的计划?是否有一些对项目产生影响的政府法规方面的改变?上海交通大学计算机系2020/3/27183.2风险评估过程由一个评估小组实施评估准备公司反映与项目关系的组织图表开发系统的类型技术专长域工程师的人数项目数据预算进度软件大小估计与政府、主要承包方、联合承包方等的关系与系统工程、质量保证等的关系子承包方和供货商的责任参与工作中各环节的人数系统描述应用描述系统、软件模块图主要功能项目历史发生在项目中的意外事件被推迟的技术问题使工程位于正规的重要决定当前关心的问题上海交通大学计算机系2020/3/2719如何访谈介绍:欢迎,自我介绍,参与者自我介绍目的:强调“识别和估计风险”的意义,明确会议的时间保密性:保证保密访谈过程:自由发言,避免发言者“本位主义”结束语:感谢访谈结束评估已知风险评估访谈会话风险分类风险输入风险数据库上海交通大学计算机系2020/3/27204.风险分析风险的可能性(risklikelihood):危险发生的概率对项目的影响程度(riskimpact)风险的重要性:风险暴露量Riskexposure=risklikelihood*riskimpactRiskimpact一般以金额为单位,而likelihood以概率为单位。上海交通大学计算机系2020/3/2721如何定量化的评价风险的影响是一个难题。1.简单的评分方法2.将可能性和影响分为高,中,低级别3.将可能性和影响给出1到10之间的分值(较好)上海交通大学计算机系2020/3/2722例子上海交通大学计算机系2020/3/2723风险排序(Prioritizing)管理风险的策略有两条:通过降低风险的概率和影响从而降低风险暴露量建立意外计划由于管理风险需要一定的成本,因而需要对风险进行排序。——“人们通常用80%的钱解决20%的问题”上海交通大学计算机系2020/3/2724基于给分的方法计算风险暴露量存在一些问题。并非R6的重要性就是R5的两倍R2不一定比R5更重要上海交通大学计算机系2020/3/2725影响分析的其它因素对风险评估的自信性复合风险:风险之间有依赖关系风险的数量:能管理的风险是有限的行动成本(CostofAction):某些风险,一旦识别出来,可以以很少的代价就处理掉,而有些风险则需要很大的代价风险降低杠杆(riskreductionleverage)上海交通大学计算机系2020/3/27265.风险降低危险预防(hazardprevention)提前计划会议能够预防关键人员不能出席会议的危险概率降低(likelihoodreduction)通过原型能够降低由于需求不清带来的问题风险避免(riskavoidance)增加估计时间和减少功能能够避免项目超时风险风险转移(risktransfer)比如外包意外计划(contingencyplanning)上海交通大学计算机系2020/3/2727练习请考虑各个风险的风险降低策略在编码阶段需求描述的改变保证原始的需求描述经过了高层的同意并采用一个高的变更条件。项目的分析阶段花费的时间超过期待。仔细估计分析阶段花费的时间。将活动分割成更小的活动,并对它们重新估计。制定意外计划。人员生病影响关键活动。考虑是否有合适的代理分析人员或者编程人员。上海交通大学计算机系2020/3/2728练习人员生病影响非关键活动。制定可以从其它项目中召集的人员的值班表模块编码耗费过长的时间。仔细检查评估过程并将其与过去的项目相比较。模块测试显示设计阶段的错误或不足。使用更直接的方法来校对设计-形式化方法或结构化预排方法。上海交通大学计算机系2020/3/2729风险降低策略人员短缺staffingwithtoptalentjobmatchingteambuildingtrainingandcareerdevelopmentearlyschedulingofkeypersonnel不现实的时间和成本估计multipleestimationtechniquesdesigntocostincrementaldevelopmentrecordingandanalysisofpastprojectsstandardizationofmethods上海交通大学计算机系2020/3/2730开发了错误的功能:improvedprojectevaluation;formalspecificationmethods;usersurveys;prototyping;earlyusersmanuals开发了错误的用户界面:prototyping;taskanalysis;userinvolvement上海交通大学计算机系2020/3/2731需求在后续阶段的变化:StringentchangecontrolproceduresHighchangethresholdIncrementalprototypingIncrementaldevelopment(deferchanges)外部供应组件没有能够及时交付BenchmarkingInspectionsFormalspecificationsContractualagreementsQualityassuranceproceduresandcertification上海交通大学计算机系2020/3/2732外部执行任务没有及时完成QualityassuranceproceduresCompetitivedesignorprototypingTeambuildingContractincen