为什么以及如何管理软件开发中的风险

已发表: 2021-10-05

在本文中,我们将讨论软件开发过程中的风险管理方法。 我们还从业务和发展的角度关注风险管理的重要性,甚至给出了风险管理计划的示例。

2019 年 11 月 12 日,迪士尼推出了 Disney Plus,这是一项类似 Netflix 的原创内容流媒体服务。 成千上万的用户准备每月支付 7 美元或更多,以享受皮克斯、漫威、星球大战和许多其他特许经营权的内容。

热切的观众对连续几天观看中断屏幕而不是他们付费观看的内容感到失望。 投诉范围很广,从登录困难到无法流式传输、应用程序故障以及节目和电影从库中消失。

迪士尼将这些问题归咎于需求超出其“高预期”。

这是软件开发中技术风险管理不善的典型例子。
迪士尼能避免这些停电吗? 是的。
你能避免类似的问题吗? 也是。
在本文中,我们将深入探讨软件开发中的风险管理和风险缓解。

风险管理的重要性

风险管理的重要性

每个企业都是独一无二的,并非所有风险都可以完全预见。 但是有一些方法可以帮助您识别瓶颈,计算风险发生的可能性,并预测发生时的负面影响。

风险管理是企业为避免或减轻风险影响而可以进行的一系列复杂活动。

风险管理的目的是了解什么会出错,为什么会出错,如果出错会产生什么影响,以及如何修复它。 有备则无患。

适当的风险管理的优势在于,即使风险出现,它也可以帮助企业减少损失。

风险管理可以带来以下优势:

  • 通过减少可预见和可避免紧急情况的费用来节省成本
  • 通过允许开发团队专注于开发,而不是解决不可预测的问题,从而加快工作的能力
  • 无需吸引额外资金来解决不可预测的问题,从而实现更明智的支出
  • 通过确保客户即使在紧急情况下也能掌控一切,从而获得更好的声誉

风险类型

一个没有经验的企业家希望他们的业务不会发生任何坏事。 一个有经验的企业家知道会发生一些不好的事情并提前做好准备。

那么会出现什么问题呢? 基本上什么都行。 各种风险管理方法涵盖各种类型的风险。 企业最常见的风险类别是:

  • 人为风险— 团队成员的突发疾病、怀孕、被捕、死亡或职业变化可能会导致多种后果,从绩效延迟到将职能委派给其他团队成员。

  • 位置或地理风险——每个位置都有可能影响工作流程的特定问题,如气候、政治局势、时区和工作传统。

  • 战略风险——规划问题、选择错误的战略和管理不善等事情从一开始就无法预见,但绝对应该被视为主要风险因素。

  • 运营或管理风险——这些风险与战略风险非常接近,但更多的是关于执行:实施问题、不正确的工作依赖、管理不善、决策缓慢、优先级错误以及许多其他运营问题可能会延迟业务发展或花费大量资金克服。

  • 法律风险——最好研究一下特定地区的法律法规,至少看看能不能在那里做生意。 此外,法律往往会发生变化,这通常会导致税收变化和正规化问题。 法律风险还包括亚马逊、Apple App Store 和 Google Play 等商业平台的规则和法规的变化。

  • 技术风险——所选择的技术在纸面上看起来很完美,但在行动中表现不同。 不断的更新、操作环境的变化、维护问题以及许多其他技术方面都会对业务产生重大影响。

根据业务类型的不同,可能会出现许多其他风险因素,并且上面列出的因素可能会发生变化。 但是了解这些风险有助于您选择合适的风险管理策略。

风险管理策略

风险管理方法因众多因素而异,但以下是一些最常见的风险管理策略:

风险规避

这是一种激进的策略,企业拒绝承担风险并拒绝执行一项活动。

有多种风险,错误的代价太高。 例如,如果您知道解决方案的技术能力的限制,明智的做法是不要让高负载项目使解决方案过载。 在这种情况下,失败的成本可能高于可能的收入。

简而言之,有时候为了不失败,不从事一些商业活动是可以的。

优点:实施速度快——您只需拒绝或接受该活动。

缺点:将潜在收入留在桌面上。

适用于:拥有多个分支机构和收入来源的企业。

何时使用:可能风险的危害大于活动可能带来的利润。

风险缓解

这是一种使负面后果不那么严重而不是完全避免它们的策略。

当经营一家比在前院卖柠檬水更复杂的企业时,您可能会面临无法避免的问题。 在这种情况下,建议识别并减轻这些风险的后果。

这适用于已知的特定风险,尤其是在软件项目中。 警告您的客户即将出现的问题或提供临时解决方案。 客户可能不会满意地离开,但至少他们会感受到你对他们的关心。 例如,如果您等待超过 90 秒的订单,麦当劳会赠送免费冰淇淋的优惠券。

优点:您不会浪费资源来消除风险。 相反,你要处理它的后果,试图使它们不那么严重,这通常更容易做到。

缺点:您和您的客户仍然必须应对风险的负面后果。

适合:拥有忠实客户的企业、对时间敏感的企业、服务提供商。

使用场景:风险无法完全避免,但服务仍需按时交付; 紧急情况。

风险转移

有了这个策略,你付钱给其他人来处理负面后果。
如果您的企业无法应对某种风险,请寻求帮助。 这可能是软件开发中风险管理的一种非常昂贵的方法,但其结果可以满足客户的期望并使您的业务顺利进行。 这也有助于将您的员工从他们不想做的肮脏工作中解放出来,从而提高注意力并提高质量。

优点:简单且执行速度快。

缺点:可能会花费一大笔钱,并且您对部分业务的控制权会减少。

适用于:某些组件负载高的企业,或者用于实现您没有很多专业知识的功能的企业。

何时使用:一项活动应该快速完成,没有时间获得自己的专业知识或培训自己的专业人员。

风险承受能力

顾名思义,使用此策略,您只需接受风险的所有负面后果。

在某些情况下,业务活动的利润远大于可能风险的影响。 在这种情况下,企业可以接受风险。 但是应该警告用户接受风险的后果。

Microsoft 在停止维护旧版本产品(如 Windows XP)时使用此策略。

优点:几乎不需要资源。

缺点:你会得到所有的负面后果。

适用于:实施新功能比支持旧功能更重要的成熟企业。

何时使用:一项活动对大多数用户没有伤害,或者当为用户提供的活动带来的利润高于可能带来的不便时。

请注意,这些策略都不是灵丹妙药。 任何其他类型的风险都可能伴随技术风险并影响您的工作结果。 在大多数情况下,考虑到业务的特殊方面,特定项目的风险管理策略将是上述策略的混合

如何使用敏捷方法管理风险(示例)

使用敏捷方法管理风险

这就是软件开发风险管理策略对 Mind Studios 的看法。

阶段 1. 识别风险

时间:项目评估阶段

在此阶段,项目经理召集开发人员和设计师团队进行头脑风暴,寻找所有可能的风险以及可能引发风险的因素。

必要的步骤:

  • 回想一下我们在以前的项目中遇到的问题; 尝试发现所有已知的未知数
  • 定义在此特定项目中可能发生任何类型风险的区域
  • 评估我们在开发产品时可能面临的每个因素的影响

阶段 2:分析和评估风险

时间:在项目评估阶段之后

在这个阶段,识别风险,然后分类。 在这里,项目经理还分析风险的可能影响及其发生的可能性。 在此阶段,最好考虑项目的复杂性、测试质量以及开发团队之间的依赖关系。

此阶段的结果是对每种风险的定义后果列表:

  • 客户可能遭受的损失
  • 企业可能面临的问题
  • 声誉损失
  • 法律问题

第 3 阶段:制定风险管理计划并与客户一起批准

时间:就在开发开始之前

在此阶段,项目经理将风险管理活动正式化为计划。 通常,项目的风险管理计划是一个包含以下列的表格:

  • 风险定义

我们定义可能发生的问题并用一个简短的句子描述它们。 定义一看就明白,所以我们倾向于用最短的方式描述问题:“服务器能力不足”、“无法上传用户内容”、“Play商店发布延迟”等类似的描述是明确并专注于问题。

  • 扳机

我们描述了我们如何知道风险是否已经实现。 究竟什么会告诉我们有关问题的信息以及它的外观? 如果触发器可以来自不同的来源,我们应该将它们全部命名。 可以按概率或值对触发源列表进行优先级排序。

  • 概率(分数)

我们定义风险发生的可能性。 根据可能风险的数量和重要性,我们建议最高和最低分数 - 例如,100 和 1。更可能的风险获得更高的分数。

  • 影响(得分)

在此列中,我们对每种风险的严重程度进行评分。

  • 价值(分数)

我们定义特定风险对项目的重要性。 更高的数字意味着更高的优先级。 在 Mind Studios,我们通常通过将风险的影响和概率分数相乘来定义风险的价值。 但是,您可以根据自己的业务要求和特殊性,随意定义此值。

  • 主要策略

我们命名将用于管理风险的主要策略或方法——例如,转移、减轻或接受。

  • 替代策略(如果可用)

如果主要策略不可接受,我们将命名为次要策略。 例如,如果目前无法转移风险,我们可以启动缓解流程。 我们建议为每种风险创建尽可能多的策略。

  • 所选策略的行动计划

这是战略中最详细的部分,我们在此为其实施创建了分步指南。 因此,我们应该有一个明确的计划,以防万一发生各种风险。 我们对步骤进行编号,包括相关人员和负责人的联系方式,并尽可能清楚和详细地写出每一步。

我们为我们为项目考虑的所有主要和替代策略制定行动计划。

以下是我们在 Mind Studios 使用的技术风险管理计划的示例

风险管理计划示例

[谷歌表格]

第 4 阶段:监控风险

时间:从第一天开始就在后台; 在每个开发冲刺之后检查

无法保证已解决的风险不会再次出现。 这就是为什么应该将风险监控集成到软件项目的活动列表中。 触发器也可以从用户反馈和 QA 报告中识别。 将风险监控活动纳入每个进一步的开发冲刺。

所有风险管理活动都应与客户达成一致,尤其是在外包软件开发时。 所有成本、实现概率和严重程度都应该尽可能清楚——客户应该知道他们支付的是什么以及谁负责每种类型的风险。 根据客户的期望和客户的预算找到可接受的折衷方案

经营风险

经营风险

不提及业务风险就无法完成有关风险管理的对话。 当您应对上述项目风险时,这很好。 但是想象一下,在开发过程中发现您的竞争对手将更快地发布类似产品或具有杀手级功能。 发现自己处于这种情况意味着即使您也没有很好地处理项目风险,您也忘记了处理业务风险?。

业务风险是指业务之外的任何威胁到业务目标或指标的事物。 这可能是竞争对手、监管机构或经济中的突然变化——或任何其他事情。

管理业务风险需要一大堆其他步骤和阶段,值得再写一篇文章。 但这里有一些一般提示:

  1. 密切关注市场

拥有出色的商业创意并不能保证其他人没有类似的创意。 定期进行市场研究和分析,以了解市场状况并密切关注您的潜在和活跃竞争对手。

  1. 致力于您的产品与市场的匹配

确保您的产品能够满足强劲的市场需求。 如果新的市场条件影响了您的业务绩效,您应该重新考虑产品与市场的契合度。 不仅要在产品开发中保持敏捷,还要在业务开发中保持敏捷。 改进、创新,并毫不犹豫地转向。

软件开发中的风险缓解:结论

一般来说,适当的风险管理可以帮助您专注于您的产品工作。 通过适当的风险管理,更多的资源可以专注于创造更好的功能和更高质量的产品,而不是克服风险的后果。

执行风险管理的开发人员可以更多地从事他们喜欢的工作,执行风险管理的企业主可以获得更快乐的客户、更好的声誉和更多的创造力空间。

仍然对如何管理特定业务中的风险感到好奇? 我们可以提供帮助!

如果您担心软件项目中的风险,Mind Studios 项目经理将很乐意分享他们的专业知识! 保持联系。

由 Tymur Solod 和 Alexander Vasyliev 撰写。