软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。因此软件项目风险管理是软件质量保障的一项重要内容。
我们根据多年的风险评估经验,在本文中阐述下风险管理的概念以及分类。
风险管理概念
风险管理就是评估风险出现的概率及产生的影响,然后建立一个规划来管理风险。风险管理的主要目标是预防软件项目风险。 如果对项目进行风险管理,就可以最大限度的减少风险的发生。但是,目前国内的软件企业不太关心软件项目的风险管理,结果造成软件项目经常性的延期、超过预 算,甚至失败。成功的项目管理一般都对项目风险进行了良好的管理。因此任何一个系统开发项目都应将风险管理作为软件项目管理的重要内容。
风险分类
软件项目的风险体现在以下四个方面:需求、技术、成本和进度。IT项目开发中常见的风险有如下几类:
1、需求风险
需求已经成为项目基准,但需求还在继续变化;需求定义欠佳,而进一步的定义会扩展项目范畴;添加额外的需求;产品定义含混的部分比预期需要更多的时间;制定需求过程中客户参与不够;缺少有效的需求变化管理过程。
2、计划编制风险
计划、资源和产品定义全凭客户或上层领导口头指令,并且不完全一致;计划是优化的,是“最佳状态”,但计划不现实,只能算是“期望状态”;计划基于使用 特定的小组成员,而那个特定的小组成员其实指望不上;产品规模比估计的要大;完成目标日期提前,但没有相应地调整产品范围或可用资源;涉足不熟悉的产品领 域,花费在设计和实现上的时间比预期的要多。
3、组织和管理风险
仅由管理层或市场人员进行技术决策,导致计划进度缓慢,计划时间延长;低效的项目组结构降低生产率;管理层审查决策的周期比预期的时间长;预算削减,打乱项目计划;缺乏必要的规范,导致工作失误与重复工作;非技术的第三方的工作(预算批准、设备采购批准、法律方面的审查、安全保证等)时间比预期的延长。
4、人员风险
作为先决条件的任务(如培训及其他项目)不能按时完成;开发人员和管理层之间关系不佳,导致决策缓慢,影响全局;缺乏激励措施,士气低下,降低了生产能 力;某些人员需要更多的时间适应还不熟悉的软件工具和环境;项目后期加入新的开发人员,需进行培训并逐渐与现有成员沟通,从而使现有成员的工作效率降低; 由于项目组成员之间发生冲突,导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作;不适应工作的成员没有调离项目组,影响了项目组其他成员的积极性; 没有找到项目急需的具有特定技能的人。
5、开发环境风险
设施未及时到位;设施虽到位,但不配套,如没有电话、网线、办公用品等;设施拥挤、杂乱或者破损;开发工具未及时到位;开发工具不如期望的那样有效,开发人员需要时间创建工作环境或者切换新的工具;新的开发工具的学习期比预期的长,内容繁多。
6、客户风险
客户对于最后交付的产品不满意,要求重新设计和重做;客户的意见未被采纳,造成产品最终无法满足用户的审核;客户没有或不能参与规划、原型和规格阶段的 审核,导致需求不稳定和产品生产周期的变更;客户答复的时间(如回答或澄清与需求相关问题的时间)比预期长;客户提供的组件质量欠佳,导致额外的测试、设计和集成工作,以及额外的客户关系管理工作。
7、产品风险
矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作;开发额外的不需要的功能,延长了计划进度;严格要求与现有系统兼容,需要进行比 预期更多的测试、设计和实现工作;要求与其他系统或不受本项目组控制的系统相连,导致无法预料的设计、实现和测试工作;在不熟悉或未经检验的软件和硬件环 境中运行所产生的未预料到的问题;开发一种全新的模块将比预期花费更长的时间;依赖正在开发中的技术将延长计划进度。
8、设计和实现风险
设计质量低下,导致重复设计;一些必要的功能无法使用现有的代码和库实现,开发人员必须使用新的库或自行开发新的功能;代码和库的质量低下,导致需要进 行额外的测试,修正错误,或重新制作;过高估计了增强型工具对计划进度的节省量;分别开发的模块无法有效集成,需要重新设计或制作。
9、过程风险
大量的纸面工作导致进程比预期的慢;前期的质量保证行为不真实,导致后期的重复工作;不正规,导致沟通不足,质量欠佳,甚至需重新开发;过于正规,导致 过多耗时于无用的工作;向管理层撰写进程报告占用开发人员的时间比预期的多;风险管理粗心,导致未能发现重大的项目风险。
路漫漫其修远兮,我中心将与大家共同求索。
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/