敏捷开发和架构

7

正式的架构规范与敏捷开发如何结合 - 是否有关联?

我特别考虑Scrum,它在官方工件中没有提到架构。

你是让架构“偶然”演变,还是非正式地进行规划,或者在组装第一个产品backlog之前,是否有机会像4+1规范那样进行前期规划?

3个回答

14

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

这种说法有点误导。它可能被理解为“现在快速地修补一些东西,然后再想办法升级它以实现更多功能”。这将导致痛苦和技术债务的世界。

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

因此,在敏捷方法中包含设计的正确方式是先进行足够的设计,以便您知道系统最终期望做什么,并描述如何完成它的大概方向。想出一个足够灵活的设计,让您不会闭塞自己的路。但不要浪费时间为每个细节编写正式的详细规范。将设计下降到您知道子系统将适合在哪里以及如何安排它的层面,但它可以被视为一个“黑匣子”,只有在您需要实施它时才能设计它。

敏捷开发不应排除正式架构 - 这意味着您只需设计足够的正式架构,以便在完成时所有部分都能很好地拼合在一起,并且只有在需要时才会完善那些较小的设计细节。有时这意味着您仍然需要相当详细的设计。


除了上面的高质量答案之外:将您的设计制定为用户所看到的要求的定义。这有助于您在关注用户和最终用户界面(在任何软件项目中都应该是至关重要的)的同时设想域模型。 - Matt Kocaj

1

这取决于你的范围。可能是给定的,也可能是全新的。足够的架构,及时到位。你需要一些东西来编写你的第一个测试,进行持续集成。

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

  • 你的团队需要一些描述功能放置和测试位置的东西;
  • 当你需要扩大团队时,新人可能需要介绍;
  • 市场营销可能需要漂亮的图片;
  • 有人可能需要购买和安装硬件和软件;...

1

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

尽可能地逐步定义架构。端到端实现而不是逐层实现有助于此:它可以在每个层次上实现一个部分。

架构决策很难撤销,因此必须仔细考虑,并在最后负责的时刻做出,当您了解系统和客户需求更多时。

没有强制性的正式规范。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接