首页 理论教育 软件工程中的风险管理:识别、评估、计划和监控

软件工程中的风险管理:识别、评估、计划和监控

时间:2023-11-06 理论教育 版权反馈
【摘要】:风险管理分事前管理、事中管理和事后管理三个部分,从具体过程上可分为风险识别、风险评估、风险计划和风险监控四个步骤。风险识别可以采用德尔菲法、头脑风暴法、情景分析法、面谈法以及风险条目检查表等方法。风险条目检查表的风险识别项目有:产品规模:与要开发或要升级的软件的总体规模相关的风险。

软件工程中的风险管理:识别、评估、计划和监控

风险是指在一个特定的时间内和一定环境条件下,人们所期望的目标与实际结果之间的差异程度。风险代表了不确定性,这种不确定包括发生与否的不确定、发生时间的不确定和导致结果的不确定,风险并不总是代表损失也有可能代表收益。项目风险管理是指对项目风险从识别到分析之后采取对应措施的一系列过程,包括将积极因素所产生的影响最大化和使消极因素所产生的影响最小化两方面内容。

风险管理分事前管理、事中管理和事后管理三个部分,从具体过程上可分为风险识别、风险评估、风险计划和风险监控四个步骤。

1.风险识别

风险识别是指系统化的识别对项目计划(成本、进度、资源分配等)的威胁。风险识别可以采用德尔菲法、头脑风暴法、情景分析法、面谈法以及风险条目检查表等方法。其中风险条目检查表是常见的对已知风险进行识别的一种做法。通过软件行业的多年实践,软件项目可能存在的风险存在有一定的共性,这些共性可以在风险条目检查表中得到体现。风险条目检查表的风险识别项目有:

(1)产品规模:与要开发或要升级的软件的总体规模相关的风险。具体包括:

·是否以LOC或FP估算产品的规模;

·对于估算出的产品规模的信任程度如何;

·是否以程序、文件或事务处理的数目来估算产品规模;

·产品规模与以前产品的规模的平均值的偏差百分比是多少;

·产品创建或使用的数据库大小如何;

·产品的用户数有多少;

·产品的需求改变多少?交付之前有多少?交付之后有多少?

·复用的软件有多少?

(2)商业影响:与管理或市场约束相关的风险。具体包括:

·本产品对公司的收入有何影响;

·本项目是否得到公司高级管理层的重视;

·交付期限的合理性如何;

·将会使用本产品的用户数及本产品是否与用户的需要相符合;

·本产品必须能与之互操作的其他产品、系统的数目;

·最终用户的水平如何;

·政府对本产品开发的约束;

·延迟交付所造成的成本消耗是多少;

·产品缺陷所造成的成本消耗是多少。

(3)客户特性:与客户的素质以及开发者和客户沟通相关的风险。具体包括:

·以前是否曾与这个客户合作过;

·客户是否很清楚需要什么,他能否花时间把需求写出来;

·客户是否同意花时间召开正式的需求收集会议,以确定项目范围;

·客户是否愿意建立与开发者之间的快速通信渠道;

·客户是否愿意参加复审工作;

·客户是否具有该产品领域的技术素养;

·客户是否愿意你的人来做他们的工作;

·客户是否了解软件过程。

(4)过程定义:与软件过程被定义的程度以及它们被开发组织所遵守的程度相关的风险。具体包括:

·高级管理层是否有一份已经写好的政策陈述,该陈述中强调了软件开发标准过程的重要性;

·开发组织是否已经拟定了一份已经成文的、用于本项目开发的软件过程的说明;

·开发人员是否同意按照文档所写的软件过程进行开发工作,并自愿使用它;

·该软件过程是否可以用于其他项目;

·管理者和开发人员是否接受过一系列的软件工程培训;

·是否为每一个软件开发者和管理者提供了印刷版软件工程标准;

·是否为作为软件过程一部分而定义的所有交付物建立了文档概要及示例;

·是否定期对需求规约、设计和编码进行正式的技术复审;

·是否定期对测试过程和测试情况进行复审;

·是否对每一次正式技术复审的结果建立了文档,其中包括发现的错误及使用的资源;

·有什么机制来保证按照软件工程标准来指导工作;

·是否使用配置管理来维护系统/软件需求、设计、编码、测试用例之间的一致性;

·是否使用一个机制来控制用户需求的变化及其对软件的影响;

·对于每一个承包出去的子合同,是否有一份文档化的工作说明、一份软件需求规约和一份软件开发计划;

·是否有一个可遵循的规程,来跟踪及复审子合同承包商的工作;

·是否使用方便、易用的规格说明技术来辅助客户与开发者之间的通信;

·是否使用特定的方法进行软件分析;

·是否使用特定的方法进行数据和体系结构的设计;

·是否90%以上的代码都是使用高级语言编写的;

·是否定义及使用特定的规则进行代码编写;

·是否使用特定的方法进行测试用例的设计;

·是否使用配置管理软件工具控制和跟踪软件过程中的变化活动;

·是否使用工具来创造软件原型;(www.xing528.com)

·是否使用软件工具来支持测试过程;

·是否使用软件工具来支持文档的生成和管理;

·是否收集所有软件项目的质量度量值;

·是否收集所有软件项目的生产率度量值。

(5)开发环境:与用于开发产品的工具的可用性及质量相关的风险。具体包括:

·是否有可用的软件项目管理工具;

·是否有可用的软件过程管理工具;

·是否有可用的分析及设计工具;

·分析和设计工具是否适用于待建造产品;

·是否有可用的编译器或代码生成器;

·是否有可用的测试工具;

·是否有可用的软件配置管理工具;

·环境是否利用了数据库或数据仓库

·项目组的成员是否接受过每个所使用工具的培训;

·是否有专家能够回答有关工具的问题;

·工具的联机帮助及文档是否适当。

(6)开发技术:与待开发软件的复杂性以及系统所包含技术的“新奇性”相关的风险。具体包括:

·该技术对于你的公司而言是新的吗?

·客户的需求是否需要创建新的算法或输入、输出技术;

·待开发的软件是否需要使用新的或未经证实的硬件接口

·待开发的软件是否需要与开发商提供的未经证实的软件产品接口;

·待开发的软件是否需要与功能和性能均未在本领域得到证实的数据库系统接口;

·产品的需求是否要求采用特定的用户界面;

·产品的需求中是否要求开发某些程序构件,这些构件与你的公司以前开发的构件完全不同;

·需求中是否要求采用新的分析、设计、测试方法;

·需求中是否要求使用非传统的软件开发方法;

·需求中是否有过分的对产品的性能约束;

·客户能确定所要求的功能是可行的吗?

(7)人员数目及经验:与参与工作的软件工程师的总体技术水平及项目经验相关的风险。具体包括:

·是否有最优秀的人员可用;

·人员在技术上是否配套;

·是否有足够的人员可用;

·开发人员是否能够自始至终地参加整个项目的工作;

·项目中是否有一些人员只能部分时间工作;

·开发人员对自己的工作是否有正确的期望;

·开发人员是否接受过必要的培训;

·开发人员的流动是否仍能保证工作的连续性。

对风险检查表的每一个条目都需要进行回答,如果回答的结果是比较薄弱、没有或者是与以往的经验有较大偏差时,可以认为该条目存在有风险。

风险检查表可以对未知风险进行识别,对未知风险的识别则可以通过德尔菲法、头脑风暴法、情景分析法、面谈法等方法进行。

2.风险评估

对所有识别出来的风险进行评估,按照发生的可能性和后果的严重性进行排序,确定项目需要关注的风险。风险评估的方法有两种:定性分析、定量分析。

在定性分析中,为了识别风险可能存在的后果,需要标识影响软件风险因素的风险驱动因子,这些因素包括性能、成本、支持和进度。

·性能风险:产品能够满足需求且符合使用目的的不确定程度。

·成本风险:项目预算能够被维持的不确定程度。

·支持风险:软件易于纠错、适应及增强的不确定程度。

·进度风险:项目进度能够被维持且产品能按时交付的不确定程度。

3.风险计划

风险计划是指根据已经识别的风险确定采取的策略、措施及其相关责任人。风险处置的策略有以下几种。

·规避策略:改变项目计划以消灭风险或保护项目目标免受影响。虽然不可能消灭所有的风险,但对具体风险来说是可以避免的。某些风险可以通过需求再确认、获取更详细信息、增强沟通、增派专家等方法得以避免。

·转移策略:把风险的影响和责任转嫁给第三方,通常要为第三方支付费用作为承担风险的报酬,比如保险、业绩奖罚条款、维护保修承诺。

·减轻策略:谋求减低不利风险发生的可能性和/或影响程度。比如采用不那么复杂的流程、选择更可靠的供应商、进行更系统化的更彻底的测试、冗余设计、增加资源或时间。

·接受策略:面对风险选择不对项目计划作任何改变,可以是积极的接受:制订应急计划并在风险发生时执行,风险征兆应被监视。最常用的措施是风险储备(包括费用、资源、时间),风险储备的多少取决于风险的概率、影响和可接受的风险损失;也可以是消极的接受,等待风险降临再做处理。

4.风险监控

风险监控是指在风险管理计划的基础上,在项目实施过程中对具体风险的管理过程,包括对已经发生的已知风险确保是否按处置措施进行处理、监视剩余的风险和识别新的风险、收集可用于将来的风险分析信息等。

实施风险监控的主要方法有核对表及评审、定期项目评估、净值分析以及未知风险应对措施等,其中核对表及评审是建立在风险管理计划的基础之上,每个风险可能发生的项目阶段已经列举,此时当进度到达某个阶段的时候可以与风险管理计划所列的已知风险进行比较;定期项目评估的方法与核对表相似,差别是它发生在项目每个阶段结束的时间;净值分析在成本控制中已经说明,在成本控制的时候可以对净值进行分析,以期发现已知和未知的风险,并采取措施;未知风险处置是指对未在风险管理计划中明确提出的风险进行处置,包括发现未知风险、处置未知风险。发现未知风险可以用定期项目评估、净值分析的方式,也可以采用风险报告的机制。风险报告可以针对已知风险也可以针对未知风险,对已知风险可以提前发现并采取措施,对未知风险也是一样,未知风险的处置方法与前面所谈的处置策略是一致的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈