[读书摘要]软件项目风险管理

来源:互联网 发布:windows自带等宽字体 编辑:程序博客网 时间:2024/04/29 12:36

以下内容摘自宋礼鹏、张建华编著的《软件工程:理论与实践》

“试图以一种可行的原则和实践规范化地控制影响项目成功的风险,其目的是辨识、描述和消除风险因素,以免它们威胁软件的成功运作”-  Boehorn

    风险管理涉及的主要过程包括:风险识别,风险打析,风险应对计划制订和风险监控,如图所示:

 

一、 风险识别

风险识别就是企图采用系统化的方法,识别某特定项目已知的和可预测的风险.常用方法是建立风险条目检查表,利用一组提问来帮助项目风险管理者了解在项目和技术方面有哪些风险。在风险条目检查表中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者集中来识别常见的.巳知的和可预测的风险,如产品规模风险,需求风险、开发环境风险.管理风险及技术风险等。风险条目检查表可以以不同的方式组织,通过判定分析或假设分析,给出这些提问确定的回答,就可以帮助管理或计划人员估箅风险的影响。软件项目一般有如下几类风险:

 

1. 产品规模风险

 有经验的项目经理郡知道:项目的风险是直接与产品的规模成正比的。与软件规模相关的常见风险因素有以下几个:

1)  估算产品规模的方迭是LOC或代码行,FP或功能点,程序或文件的数目、

2)  产品规模估算的信任度如伺?

3)  产品规模与以前产品规模平均值的偏差多大,

4)  产品的用户数是多少?

5)  复用的软件有多少?

6)  产品的需求改变多少.交付之前有多少,交付之后有多少?

2.需求风险

    很多项目在确定需求时都面临着一些不确定性和混乱。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决时,这些问题就会对项目的成功造成很大威胁.如果不控制与需求相关的风险因素.那么就很有可能产生错误的产品或者拙劣地建造的产品。需求风险大多是与客户相关的风险,具体有以下几个方面,

1)  对产品是否具有清晰的认识,

2)  对产品需求是否认同?

3)  在做需求分析时,客户参与够不够?

4)  是否将需求作为最优先的任务?

5)  是否存在由不确定的需要导致新的市场?

6)  需求是否需要不断变化?

7)  是否能有效的管理需求变化?

8)  是否对需求的变化具有相关分析?

3. 开发环境风险

  许多风险都是因为项目所依赖的外部环境因素引起的,经常找们不能很好地控制外部环境,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成合分,井臣觉察潜在的问题:与外部环境相关的风险因素有以下几个:

1)  内部、外部转包商的关系如何?

2)  交互成员或交互团体依赖性如何?

3)  是否有可用的软件项目管理工具、软件过程管理工具、测试工具、软件配置管理工具等?

4)  项目组成员是否接受过所使用工具的培训?

5)  是否有经验丰富的人员回答有关工具的问题?

6)  工具的联机帮助及文档是否适当?

4.管理风险

  尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,并且大部分人都不希望在公共场合暴露自己的弱点。然而.像这些问题可能会使项目的成功变得更加困难,如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目。当定义了项目追踪过程并且明晰项目角色和责任时,就能处理这些风险因素,如下所示。

1)  计划和任务定义够不够充分?

2)  实际项目状态如何?

3)  项目所有者和决策者分不分的清?

4)  是否存在不切实际的承诺?

5)  员工之间是否存在的冲突?

5.技术风险

    软件技术的飞速发展和经历丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,如培训、雇佣顾问以及为项目团队招聘合适的人才等。主要有下面这些风险因素:

1)  是否进行了充分的培训?

2)  对方法.工具和技术理解的够不够?

3)  应用领域的经验够不够?

4)  是否采用新的技术和开发方法?

5)  能不能找到正确工作的方法?

二、 风险分析

    风险分析过程的活动是将风险陈述转变为按优先顺序排列的风险列表.包括以下活动:

1)  确定风险的驱动因素。为了很好地消除软件风险,项目管理者需要标识影响软件风险因素的风险驱动因子,这些因素包括性能、成本、支持和进度。

2)  分析风险来源,风险来源是引起风险的根本原因。

3)  估箅风险对项目及产品的影响。

4)  对风险按照风险影响进行优先排序,对级别高的风险优先处理.

    对辨识出的风险进行进一步的分析,然后确定主要风险出现的最坏情况,如何将此风险的影响降低到最小?同时确定主要风险出现的个数及时间。进行风险分析时,最重要的是量化不确定性的程度和每个风险可能造成损失的程度。

    风险分析过程中.项目管理者要对风险进行排序,高发生率、高影响的风险放在上

方,依次类推。然后对排序进行研究,并划分重要和次重要的风险,对次重要的风险再运

行一次评估并排序。对重要的风险要进行管理。从管理的角度来考虑,风险的影响及概率

是起着不同作用的,一个具有高影响且发生概率很低的风险因素不应该花太多的管理时间,而高影响且发生率从中到南的风险以及低影响且高概率的风险,应该首先列入管理考虑之中。

 
    风险评估表是风险分析过程中的一种常用工具,它列出风险的名称、风险的类别、风险发生的概率及影响。下表绐出了软件项目风险评估表的一个例子。

风险评估表并非一成不变的,随着有关风险的信息增加和风险管理计划的实施.一项风险出现的可能性和出现后的影响都需要重新评估,并且需要根据新的评估结果修改风险评估表。
 
三、风险应对计划制订
    风险应对过程的活动是将按优先级排列的风险列表转变为风险应对计划。项目管理者重点要考虑的是已经识别出的每一个重大风险,为这些风险确定相应的应对策略。制订有效的应对策略,在很大程度上决定着项目的成败、但是。应对策略是否有效依赖于项目管理者的经验和能力。
    主要的应对策略有以下几个。
1)   风险规避策略:采取策略尽可能避免风险的出现。
2)   风险接受策略;对可能出现的风险有备而来,采用适当对策应对它。
3)   风险缓解策略:最小化风险影响的原则,尽可能减小风险出现带来的膨响。
4)   风险转移策略:将可能出现的风险转移给第三方处理。
 
四、风险监控
风险监控就是对辨识后的风险在项目实施过程中进行跟踪管理,确定还会有哪些变化,以便及时修正计划。当然,修正计划的信息不可能直接通过观察得到,项目管理者应该监控影响风险的各种因素,进而确定风险的变化。
    总之,软件开发项目是高风险的话动。如果在项目开发过程中采取积极的风险管理方式.就可以避免或降低许多风险,而这些风险如果没有处理好.就可能使项目陷入瘫痪中。通过风险管理可以使项目进程更加平稳,可以获得很高的跟踪和控制项目的能力.并且可以增强项目组成员对项目如期完成的信心。风险管理是项目管理中很重要的管理活动,有效地实施软件风险管理是软件项目开发工作顺利完成的保证。