敏捷开发和架构

时间:2009-12-12 06:02:35

标签: architecture agile scrum

正式的架构规范如何适应敏捷开发 - 如果有的话?

我正在考虑Scrum,它没有提到官方文物中的架构。

你是否只是让这个架构“偶然”发展(可以这么说),你是否非正式地进行了规范,或者在组装你的第一个产品积压之前是否还有空间做一些类似4 + 1规格的东西?

4 个答案:

答案 0 :(得分:14)

敏捷通常被描述为“只做你现在需要做的事情,如果需要更多的东西,你可以稍后重构”。

这是相当误导的。它可以被理解为“现在快速提出一些东西,然后找出如何升级它以便在将来做更多的事情”。这将导致痛苦和技术债务的世界。

对于任何系统,您都需要一个设计。对于小型/简单系统,这种设计可以在您的脑海中,但在开始系统将要做什么以及如何最好地完成之前,您仍需要思考。

所以恕我直言,将设计纳入敏捷方法的正确方法是设计足够的,因为你知道系统最终应该做什么,以及描述它将如何做的广泛笔画。想出一个足够灵活的设计,你不会烧掉任何桥梁。但是,不要浪费时间为每个螺母和螺栓编写正式的详细规范。设计到你知道子系统适合的位置和方式的水平,但它可以被视为一个“黑盒子”,只有当你需要实现它时才能设计它。

敏捷开发不应该排除正式的架构 - 它只是意味着你应该只设计足够的正式架构,当你完成时所有的位都能很好地融合在一起,并且你只是充实了那个设计的小细节当他们需要时。有时这意味着您仍需要预先进行相当详细的设计。

答案 1 :(得分:1)

取决于您的范围。可能是一个给定的,可能是绿色领域。足够的架构,及时。您需要能够编写第一个测试的东西,进行持续集成。

这是一份文件,那么谁将需要它,并做什么?

  • 您的团队需要一些东西来描述功能和测试的位置;
  • 当你必须成长你的团队时,新人可能会喜欢介绍;
  • 营销可能需要漂亮的图片;
  • 有人可能需要购买和安装硬件和软件; ...

答案 2 :(得分:1)

Scrum主要是一种项目管理技术,这就是它没有提到架构的原因。

尽可能逐步定义体系结构。端到端而不是逐层完成的实现在这方面有所帮助:它导致在每个层中实现一个部分。

建筑决策很难回复,所以当你对系统和客户需求有更多的了解时,他们必须在最后负责任的时刻做好。

不需要正式的规范。

答案 3 :(得分:0)

敏捷并没有像应该那样强调架构。这降低了软件将来可用的可能性。权力的游戏方法论从敏捷的优势和局限中学习;它创建了一个更具“面向未来”和可扩展的软件。 Digital Animal写了这篇文章来建立这种方法。 http://digitalanimal.com/blog/slaying-the-agile-dragon-the-game-of-thrones-methodology/