软工漫谈_开发过程中的痛楚

容易被忽略的开发风险

        最近在写项目时总是会遇到拼命想赶进度反而使得开发踉踉跄跄的情况,所以脑子就会想一个问题:是什么在影响我开发的进度?当然,这是一个很复杂的问题,技术熟练程度,需求分析,系统设计,甚至我当时的心情都会对我的开发效率有影响。我在史蒂夫麦康纳尔的《快速开发》一书中找到了一些答案:开发过程中风险管理的失控会大大拖延开发过程。

发现风险

        风险的定义百度百科如此描述:“生产目的与劳动成果之间的不确定性。”其实风险管理涉及到了经济学的概念,任何事物的扩张都是有成本的,人们经常忽略这个因素。所以管理开发风险一定程度上也可以说是管理资源与成本的规划。

        从行为与时间成本的角度上来说,常见的风险会有如下因素:功能蔓延,设计欠佳,质量不定导致的返工...从资金的成本的角度上来说,常见的风险会有如下因素:人员薄弱,设施不到位,开发工具不足以支持后续行动...从目标期望的角度上来说,常见的风险会有如下因素:客户目标不明确,客户变更需求,客户不接受提交的软件...

        总的来说,风险存在于对预期的错判,或者突发变量因素造成节奏或者方向的偏移。

评估风险

        工程过程是一个非常复杂的过程,不可变因素十分庞杂繁复。提前预知所有突发情况是一个不切实际的想法。但是不进行风险的管理又会造成开发的失控,那么如何合适地处理风险呢?

        使用量化的方法进行主要的风险评估然后采取策略提前规避是一个不错的方法。此处介绍一种有效的风险量化方法:确认每个风险的风险暴露量(RE)。

        若将风险比喻为不希望的损失,那么风险暴露量的计算方法为:不希望的损失的概率乘以损失的程度。假设你认为实际进度比计划进度延长四周的概率为25%,那么风险暴露量为:4周×25%=1周。

        对主要的风险进行风险暴露量的评估,开发者可以从此知道哪些风险是必须规避的,哪些是相对来说不严重的。

控制风险

        拿到了主要的风险因素之后,下一个问题就成为了如何通过合适的策略规避风险或者控制风险。任何一个软件的开发都经历一个生命周期,这和一个孩子的出生也需要一个周期与流程一样。比如说瀑布模型就是一个大家耳熟能详的生命周期模型。

        使用生命周期模型可以一定程度上降低开发的风险,但是生搬硬套只会让开发者陷入无所适从的境地。开发者需要根据不同的情况选择合适的模型,我将一般情况下生命周期模型的选择放在下图,用于一定程度的借鉴。

        此处想着重介绍下螺旋模型,因为螺旋模型以风险为导向,其大致的策略为:先在众多风险中确定一块开发者能承受的核心风险,然后针对此风险做出解决方案;第一次迭代结束之后重复上述步骤,直至项目成熟或者满足需求。其模型图如下:

        它让我着迷的点在于能一直持续地将风险合理管控,从而在另一方面加速开发的进度而不至于陷入窘境,颇有刀尖起舞之感。

        上述为近期的一些拙劣见解,权当为读者抛砖引玉而已。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值