摘 要:敏捷软件开发的诞生源于对高失败率的传统软件开发方法的改进和探索,是一种处理软件开发过程中各个级别上风险的软件开发方法。但是敏捷软件开发很少明确地看到风险管理的内容,经常缺乏对风险的关注。本文根据敏捷软件开发的特点和项目风险管理理论,从人、过程、产品和技术四个纬度就如何防范和缓解敏捷软件开发风险进行了探析。
关键词:敏捷;风险管理
1,敏捷及敏捷软件开发
20世纪90年代中期,起源于瀑布模型的软件开发过程被认为是缓慢、低效和官僚主义的,有悖于快速高效的工作。作为回应,各种敏捷软件开发方法学适时提出。敏捷软件开发是以人为本,自适应性,通过沟通、协作等方式进行迭代,循序渐进的软件开发方法。每一次迭代通过一个完整的软件开发周期,包括规划、需求分析、设计、编码、单元测试和验收测试,把一个可运行的工作产品展示给利益相关者。这有助于降低整体风险,并快速适应和调整内外环境的变化。
2,项目风险管理
项目的风险来源于不确定性。一个典型的项目风险管理包括风险规划、风险评估、风险应对和风险监控四个过程,其中风险评估又包括风险识别和风险分析。风险规划从战略角度确定了风险管理的过程以及实施方案。风险评估是利用事件发生的概率及结果来识别、分析、量化项目中的风险。风险应对是以降低风险至理想程度为目标的计划和执行过程。风险监控是系统化的风险追踪过程。
3,敏捷软件开发的风险管理
敏捷软件开发风险管理的思路是:首先分析敏捷软件开发的特点,然后结合风险管理过程进行管理。敏捷软件开发通过其执行结构规避和减轻了常见的软件开发风险,但这也引进了开发过程的不确定,因此也蕴含了大量的风险。
1) 敏捷软件开发的风险分类
软件开发可分为人、过程、产品和技术四个纬度,它们互相联系和统一,共同决定了软件开发的速度和效率。以下是敏捷软件开发中这四个纬度上的主要风险来源。
(1)人员风险。人员风险有沟通不畅,缺乏协作,人员变动,素质低下,矛盾和冲突,缺乏激励,士气低下,对业务不理解,缺乏优秀人才,缺乏客户介入等。
(2)技术风险。技术风险有伪敏捷,架构体系不稳定,设计不佳,缺乏技能,高估新技术等。
(3)产品风险。产品风险有功能不符,需求镀金,功能蔓延,质量低下,工期延误,成本超支,客户满意度低,低产品价值,低投资回报等。
(4)过程风险。过程风险有缺乏计划,迭代掌握不佳,评估和规划不合理,缺乏风险管理,缺乏质量保证措施等。
2) 敏捷软件开发的风险处理
以下是敏捷软件开发从人、过程、产品和技术四个纬度进行的风险处理过程。
(1)人员风险。敏捷软件开发通过频繁沟通、每日站立会议、反馈等方式解决了沟通不畅,缺乏协作的问题;通过领导、结对编程、代码集体所有权等方式促进团队协作,提高技能素质,应对人员变动,降低矛盾和冲突;通过频繁的产品发布提高人员成就感和士气;通过现场客户,降低缺乏客户介入的风险。
(2)技术风险。敏捷软件开发通过迭代、测试套件、重构等方式适应变化和演进,避免了传统的开发方法在一开始就进行架构及设计,从而导致架构体系不稳定和设计不佳的风险。对于敏捷技能风险,可以通过引入敏捷教练、结对编程、学习环的方式加以应对。而对于非敏捷软件开发所特有的普适性技术风险,可以通过组织和加强内部技术人员的培训和培养,引进能解决项目关键问题的优秀人才,防止优秀人才的流失等方式进行规避。
(3)产品风险。敏捷软件开发通过迭代、反馈、客户参与的方式解决了构建错误产品、功能蔓延、需求镀金、质量低下、客户满意度低等风险。可以通过综合考虑功能价值和风险,按照高风险高价值→低风险高价值→低风险低价值→高风险低价值的顺序开发产品功能,渐次降低产品的价值风险;通过对净现值、内部收益率、回收期、贴现回收期等经济指标的综合分析,规避项目的投资回报风险。
(4)过程风险。敏捷软件开发通过产品→发布规划→迭代规划→任务逐渐瞄准的形式,极大地消除了各种不确定风险。对于软件开发过程的进度风险,可以通过设置功能缓冲区和进度缓冲区,从功能和进度两个方面保护项目免受不确定性的冲击;也可以从以下三个方面对进度风险进行定量分析。
①N=S/V(N:估算的项目总迭代数,S:项目的总故事点数,V:速率,是基于历史数据计算的每一次迭代所能完成的故事点数)。
②用正态分布N(μ,σ?),得到每一次迭代的平均故事点数X和标准差σ,计算μ=(S/N-X)/σ,并得出项目按时完成的概率。
③综合正态分布,PERT分布,三角分布进行蒙特卡罗模拟,得出模拟的结果并绘制累计完成的概率分布。
4 结束语
敏捷软件开发是一种新型的软件开发方法学,而风险管理是软件项目管理中一个非常重要的部分。把敏捷软件开发和项目风险管理结合起来,从而有效地缓解和规避敏捷软件开发过程中的风险,是一个重要而有意义的课题。本文从人、过程、产品和技术四个纬度对如何防范和缓解敏捷环境下的风险进行了探析,为敏捷软件开发的风险管理提供了一条思路。
参考文献:
[1]信息技术项目管理,(美)杰克.T.马丘卡,许江林、梁铜毓(译),2007年6月,电子工业出版社
[2] 敏捷估计与规划,(美)MIKE COHN,宋锐(译),2007年8月,清华大学出版社