现成的软件如何适应敏捷开发?

时间:2008-09-09 11:31:04

标签: agile

也许我对敏捷开发的理解并不像它应该的那样好,但我很好奇敏捷开发人员如何在最终系统的要求和知识时使用现成的(OTS)软件应该像我理解的那样快速地改变(通常在每次开发迭代之后)。


我看到两种特别感兴趣的情况:

(1)OTS系统满足初始要求,除了可能集成到现有系统之外几乎没有修改。但是,在几次开发迭代中,该系统不再满足需求而不重写核心代码。开发人员必须选择花费额外的时间来学习这个OTS软件背后的核心代码,或者将其丢弃并从头开始构建。两者都会对开发时间和项目成本产生巨大影响。

(2)最初的需求与现有的任何现有OTS系统不同,但是,当客户接受产品时,最终需要添加和减少,这与现有的解决方案非常相似。如果开发人员有更多的要求并且花费更多的时间预先处理它们,那么可以使用这个解决方案而不是再次构建。该项目已交付,但后来成本高于必要的成本。


作为一名软件工程师,我的一部分职责(正如我所教授的那样)是以最低的成本(除其他事项)按时向客户提供高质量的软件。敏捷开发允许使用高质量的软件,但在某些情况下,可能不太明显有更好的选择,直到为时已晚并花费太多钱。

我的问题是:

  1. 现成的软件如何适应敏捷开发?
  2. 敏捷经理和敏捷开发人员如何处理这些案例?
  3. 敏捷范例对这些案例的评价是什么?

4 个答案:

答案 0 :(得分:4)

Scenario1:

无论组件的OTS性质如何,都可能发生这种情况。敏捷并不意味着近视......你需要知道大块...框架位并预先花时间思考它。也就是说,你只能建立你所知道的东西。延迟到最后一个负责任的时刻。然后你需要选择其中一个替代方案并开始。 (我会避免第三方申请,除非在内部开发它的成本是不可行的......但这只是我)。使用已知要求列表检查可行性的多种解决方案原型。保持松散耦合(可替换),易于更改和完整测试。如果你达到了持续黑客或重写的分支,你需要考虑哪个具有更好的业务价值并选择该选项。它已经归结为'现在我们在这里,我们现在能做的最好的事情是什么?'

Scenario2:

虽然与团队花费2-3个月试图获得要求“最终确定”但发现市场需求或客户心态已发生变化以及“现在我们想要这样”相比,这种情况可能会发生。再一次,它是一个问题,在你采取行动之前,你准备好调查和探索的时间点是什么。明智地决定你所拥有的任何信息。后见之明总是20-20但客户不会永远等待。您不能等到需求合并以适合已知OTS组件的时间点:)

敏捷说,做任何有意义的事情并删除非增值活动:)敏捷不是神奇的子弹。只是我的2敏捷分钱:))

答案 1 :(得分:3)

本身并不是一个严格的答案,但我认为在软件解决方案中使用现成的软件作为组件可能非常有益:

  • 它的数据是开放的,例如开放数据库或与之交互的Web服务
  • 现成的系统可以使用与解决方案其余部分类似的编程范例轻松定制
  • 它可以无缝地适应您的其余工作流程

我非常喜欢不重新发明轮子,使用您的开发技巧来设计现成解决方案之间的“粘合剂”可能是一个巨大的胜利。

记住'开放'是重要的一部分,供应商经常会将他们的解决方案宣传为不公开的。

答案 2 :(得分:1)

我想我在某个地方读到,如果在迭代过程中你发现你的工作量比原先想象的多20%,那么你应该放弃sprint并开始计划一个新的工作,并考虑到额外的工作。

因此,这意味着重新与业务部门进行重新规划,看看他们是否仍然希望继续了解原始要求,而现在您已了解更多信息。

在我们公司,我们还在冲刺之前使用原型设计,以便在冲刺出现之前尝试识别这些情况。虽然当然仍然可能无法确定您描述的那种情况。

答案 3 :(得分:1)