分享
敏捷软件项目风险管理探析_邢晨光.pdf
下载文档

ID:2318934

大小:7.03MB

页数:5页

格式:PDF

时间:2023-05-06

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
敏捷 软件 项目风险 管理 探析 晨光
1软件项目风险管理的意义及方法1.1软件项目风险管理的意义软件项目管理是一个技术密集型的复杂管理过程。软件产品开发过程涉及范围广,需要不同专业的人员参与,因此软件项目管理过程中需要综合考虑,项目各干系人、资源直接的关系,才能把软件项目顺利成功落地交付。在采用敏捷项目管理方法之后,大多数企业只看到敏捷的快速交付,提高效率,往往忽略了敏捷项目管理过程的风险,造成项目的失败。本文着眼于敏捷项目管理过程中的风险管理问题,基于Scrum敏捷框架提出一套风险管理方法来解决敏捷项目管理过程风险管理的问题。在软件开发项目过程中,会面临着不完整的需求、不可追踪的需求、时间限制、不现实的时间表、通信和技术变化等风险。这些项目管理过程中的风险,可以通过应用有效的风险管理方法来解决。瀑布式项目中,风险管理具有完整的流程和理论,总体分为风险识别、风险评估、风险分析、风险应对、风险监控五个活动。但是在敏捷项目中,并没有特别强调风险管理的内容,生搬硬套瀑布项目的风险管理方法应用到敏捷项目中,并不合适,复杂且强调流出的风险管理方法与敏捷所倡导的价值观也不相符。所以本文以Scrum敏捷项目管理过程中的风险管理为研究切入点,研究适合敏捷项目的风险管理方法意义重大,可以补充完善敏捷项目风险管理领域相关方法与理论。在互联网用户逐年增加的背后是无数个软件产品在为其提供服务,其中包含面向用户的APP,也包含面向企业的软件业务系统。这些软件产品通过软件开发项目交付上线运行,在研究软件开发管理过程,如何让软件产品提高质量和用户满意度具有重要现实价值。在面对瞬息万变的市场竞争环境下,越来越多的公司在进行敏捷转型。2001年,软件行业思想领袖共同发表 敏捷宣言,正式宣告敏捷开发运动的开始,并提出敏捷价值观和敏捷原则。如今流行的敏捷项目管理方法都源于敏捷思维模式、价值观和原则。因此研究企业在使用敏捷项目管理方法过程中遇到的问题,具有重要的实践意义。1.2软件项目风险管理的方法1.2.1Boehm风险管理模型20世纪80年代,Boehm比较详细地对软件开发中的风险管理进行了论述,并提出了软件风险管理的方法。Boehm定义软件风险管理为“试图以一种可行的原则和实践,规范化地控制影响项目成功的风险,其目的是辨识、描述和消除风险因素,以免它们威胁软件的成功运作”1,并在 SoftwareRisk Management 比较详细地阐述了软件项目开发中的风险,提出了著名的软件项目风险管理 Boehm 模型。Boehm总结出软件项目中常见的十大风险,并给出应对策略,如表1所示。1.2.2CRM风险管理模型1999年前后美国软件工程研究所(Software EngineeringInstitute)提出持续风险管理模型CRM(Continuous RiskManagement),该模型要求在项目生命期的所有阶段都关注风险识别和管理,并将风险管理划分为5个部分:风险识别、敏捷软件项目风险管理探析邢晨光钱嘉怡(浙江大学,浙江杭州310000)摘要:在敏捷实践中敏捷方法有利于降低项目风险,但它们通常不足以应对在某些场景(例如在高度规范的领域)中的项目风险。软件开发项目的成功离不开完善的项目风险管理。在互联网时代,越来越多的公司采用敏捷方法进行软件项目的开发实践,项目团队更加注重快速迭代上线,往往忽略开发过程的项目风险,造成项目的失败。本文首先介绍了项目风险管理的作用和经典方法,并进一步分析目前敏捷项目中风险管理的不足,最后提出了一种基于Sc r u m敏捷框架的风险管理方法。关键词:风险管理;Sc r u m敏捷;软件开发中图分类号:TP311.5文献标识码:A文章编号:1008-6609(2022)10-0090-04作者简介:邢晨光(19 9 0),男,浙江杭州人,硕士,高级工程师,研究方向为项目管理。电脑与电信应用技术与研究-90DOI:10.15966/ki.dnydx.2022.10.018风险分析、风险计划、风险跟踪和风险控制2。该模型强调风险管理的各个部分之间的沟通,并将沟通视为风险管理的核心。通过持续的分析评估可能对项目造成负面影响的风险事件,筛选出需要最优先处理的风险事件实施风险控制的策略,并持续评估风险控制策略的实施效果。1.2.3MSF风险管理模型2006 年 微 软 公 司 提 出 MSF4.0(Microsoft SolutionsFramework)风险管理模型,该模型把项目风险定义为:任何可能对项目结果产生积极或消极影响的事件和因素3。MSF模型强调风险管理一定是主动的、规范的,且不能缺少的管理过程。项目团队应持续对风险进行识别、分析评估、应对和监控,直至项目风险消除对项目的负面影响。在MSF风险管理模型中,持续地记录风险并形成风险知识库是十分重要的。在MSF风险管理模型中,风险管理是尽早识别风险并进行风险管理。风险管理的目标是消除风险事件给项目带来的负面影响,或尽可能降低风险事件的负面影响程度。有效的风险管理可以让项目团队在项目交付过程中,尽可能保证风险和机会间的有效平衡。MSF风险管理原则是风险必须被预先解决,它是系统过程的一部分,其将风险管理视为自主且积极的工作4。该风险管理模型具有如下4个特性:(1)灵活性项目管理过程中环境变化是项目风险的主要来源之一,不同项目阶段的变化都可能带来不同的风险,MSF风险管理要求团队成员在应对项目环境变化时,要具有高度灵活性,只有这样才能持续应对项目环境变化带来的风险。(2)公开性MSF 模型针对风险提出了一个可以在团队内部与外部都适用的公开方法。每个项目成员都应该参与项目风险的识别和分析评估过程,项目成员之间通过公开且透明的讨论来确定项目风险,制定风险应对策略,并对项目风险管理达成一致共识。(3)知识性在持续风险管理过程中,项目团队会不断积累风险管理相关经验,MSF模型认为这些经验可以给其他项目进行指导,项目团队成员在参与项目过程中吸收学习这些知识,在交流过程中传播这些知识,给其他项目的风险管理工作提供指导。(4)责任MSF模型强调项目风险管理是全部项目成员的责任,并不仅仅是项目经理的工作。在风险识别分析后每个项目成员都应承担风险管理的责任。项目成员在项目开发过程中应该更加积极主动地参与风险管理工作,确保项目风险管理活动贯穿项目全程。2敏捷项目管理方法2.1敏捷项目管理的概念维基百科对于敏捷的定义为:综合使用平衡、协调、速度、反应、力量、耐力和毅力等运动技能,并有效地做出改变身体位置的能力。在软件项目管理过程中敏捷意味着项目组团队根据组织内外部的开发环境变化,快速响应变化,做出应对措施,保证团队的持续交付能力,满足客户价值。被采用较多的敏捷方法主要有Scrum方法、极限编程、水晶族等敏捷方法。虽然敏捷方法各自不同,但其都遵守敏风险描述不合理的项目计划和项目成本预算频繁的需求变更项目成员能力不足、离职新技术风险软件功能和属性缺失UI界面设计不合理需求过度开发系统性能瓶颈外部组件不足外包任务履行不足应对策略制定详细的、多方式的成本估算和计划估算;基于成本进行设计、采取增量式开发制定需求变更审批制度、采取增量式开发安排合理的培训,制定奖励制度,鼓励创建,定期进行团建活动技术预研、成本效益分析、最小可行版本组织分析、目标分析、操作概念清晰化、用户调查和用户参与、原型法、早期用户手册编写、实质性效果分析、质量指标分析客户参与设计、场景设计法原型法、基于成本的设计、成本效益分析仿真法、基准检测、压力测试、应用检测设备检测、系统调整基准测试、审查、引用分析、兼容性分析引用检查、招标审计、采用奖励性合同、设计方案或原型系统招标、团队建设表1Boehm 十大风险电脑与电信应用技术与研究-91捷所提出的价值观和原则:“个体和互动高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划”5。本文主要以Scrum敏捷方法为基础,构建一套基于Scrum敏捷框架的风险管理方法。2.2Scrum敏捷方法Scrum方法由Ken Schwaber和 Jeff Sutherland 在1996年正式提出,其目的在于充分发挥面向对象和构件技术的开发方法的优势,着重于对迭代方法的改进。Scrum将工业过程控制中的概念应用到软件开发过程中,其认为软件开发过程更多的是经验性过程(Empirical Process),而不是确定性过程(Defined Process)。Scrum敏捷项目主要包含以下几个主要过程:收集产品需求backlog、敏捷迭代规划会议、每日站会、上线评审会议、敏捷回顾会议。五个过程在每个sprint中重复进行,如图1所示。产品需求被定义为产品需求积压(product backlogs)。产品需求通过用户故事的模式进行描述,每个用户故事都需要拆分到可以评估的程度。所有的产品需求都是从用户故事开始,并逐步被拆分成颗粒度更小的用户故事,直到可以用于被开发人员直接评估开发工时投入的程度。Scrum 方法将项目分解为多个 Sprint 迭代周期,每个Sprint迭代代表一个用时24周的完整开发过程。首先,项目需求会被分成不同的用户故事,然后在Sprint敏捷规划会议上,根据客户或核心业务人员给出的优先级对用户故事进行排序,确定下一个Sprint周期要开发的需求内容。并且在Sprint敏捷规划会议上,需要项目团队成员一起参与,共同对本次Sprint迭代周期的用户故事进行工作量评估,一般采用计划扑克的方式进行工作量评估,并进行任务拆分和分配。在评估过程中,需要特别注意成员要站在完成一个完整的用户故事的角度进行评估,不能仅仅考虑自己负责的任务。在Sprint迭代开发过程中,项目团队每天早上在固定时间、固定地点都会进行一场十分钟以内的站立会议。在会议上每个团队成员都需要沟通3个内容:昨天做了哪些任务,今天计划做哪些任务,在开发过程中是否遇到问题。站会要求团队成员轮流进行主持,项目经理(敏捷教练)参与,并在会后协调资源解决成员提出的问题。在每个Sprint周期结束后,项目经理需要组织团队成员和业务客户进行敏捷评审会议,在会议上给业务客户演示本次迭代的系统功能,收集客户提出的建议,以用户故事的形式加入到产品需求积压中,并在后续的Sprint中进行实现。在Scrum中,项目团队需要在 Sprint结束后定期组织回顾会议。在回顾会议上,团队成员总结上次迭代过程中遇到的问题,如在工作中有哪些不足之处和可取之处。对于不足,项目经理需要引导成员进行反思制定后续的策略;对于可取之处,也要进行团队经验固化和分享,并在后续的Sprint中持续改进。3敏捷项目风险管理3.1软件项目风险管理方法软件项目风险管理主要分为风险识别、风险分析、风险评估、风险应对四个过程。在传统的瀑布型项目中,风险管理为前置过程,在项目早期就需要对项目风险进行完整的风险管理。对于敏捷软件项目,基于 CRM 风险管理方法,结合Scrum敏捷模型在每个Sprint中进行完整的风险管理过程,并持续积累项目风险管理经验。敏捷项目风险管理模型如图2所示。3.2敏捷项目风险识别风险识别是通过系统化结构化的方法找出可能影响项目的风险事件。软件项目风险识别可以在把握软件开发整图1Scrum敏捷模型电脑与电信应用技术与研究-92体脉络的基础之上,及时挖掘可能诱发风险的因素并加以处理,有效防止风险的发生和进一步扩大,为软件项目开发节省一定的成本和时间投入,对软件开发具有一定的促进作用6。在敏捷项目中,风险识别过程结合到敏捷规划会议上进行,项目经理在完成用户故事评估后,引导项目成员进行风险识别。风险识别方法可以采用头脑风暴法、经验法等,针对本次Sprint周期中的用户故事来进行发散性的识别风险,在识别过程中可以结合Boehm十大风险作为风险识别的参考,便于成员快速识别风险。在敏捷项目中,项目被拆分为多个敏捷迭代,在不同的迭代中结合MSF风险管理理论,可以对风险进行持续的识别,动态识别迭代中的最新风险。3.3敏捷项目风险分析项目经理组织团队成员完成风险识别之后,需要组织团队成员对风险进行定量分析。

此文档下载收益归作者所有

下载文档
猜你喜欢
你可能关注的文档
收起
展开