正式的架构规范如何适应敏捷开发 - 如果有的话?
我正在考虑Scrum,它没有提到官方文物中的架构。
你是否只是让这个架构“偶然”发展(可以这么说),你是否非正式地进行了规范,或者在组装你的第一个产品积压之前是否还有空间做一些类似4 + 1规格的东西?
答案 0 :(得分:14)
敏捷通常被描述为“只做你现在需要做的事情,如果需要更多的东西,你可以稍后重构”。
这是相当误导的。它可以被理解为“现在快速提出一些东西,然后找出如何升级它以便在将来做更多的事情”。这将导致痛苦和技术债务的世界。
对于任何系统,您都需要一个设计。对于小型/简单系统,这种设计可以在您的脑海中,但在开始系统将要做什么以及如何最好地完成之前,您仍需要思考。
所以恕我直言,将设计纳入敏捷方法的正确方法是设计足够的,因为你知道系统最终应该做什么,以及描述它将如何做的广泛笔画。想出一个足够灵活的设计,你不会烧掉任何桥梁。但是,不要浪费时间为每个螺母和螺栓编写正式的详细规范。设计到你知道子系统适合的位置和方式的水平,但它可以被视为一个“黑盒子”,只有当你需要实现它时才能设计它。
敏捷开发不应该排除正式的架构 - 它只是意味着你应该只设计足够的正式架构,当你完成时所有的位都能很好地融合在一起,并且你只是充实了那个设计的小细节当他们需要时。有时这意味着您仍需要预先进行相当详细的设计。
答案 1 :(得分:1)
取决于您的范围。可能是一个给定的,可能是绿色领域。足够的架构,及时。您需要能够编写第一个测试的东西,进行持续集成。
这是一份文件,那么谁将需要它,并做什么?
答案 2 :(得分:1)
Scrum主要是一种项目管理技术,这就是它没有提到架构的原因。
尽可能逐步定义体系结构。端到端而不是逐层完成的实现在这方面有所帮助:它导致在每个层中实现一个部分。
建筑决策很难回复,所以当你对系统和客户需求有更多的了解时,他们必须在最后负责任的时刻做好。
不需要正式的规范。
答案 3 :(得分:0)
敏捷并没有像应该那样强调架构。这降低了软件将来可用的可能性。权力的游戏方法论从敏捷的优势和局限中学习;它创建了一个更具“面向未来”和可扩展的软件。 Digital Animal写了这篇文章来建立这种方法。 http://digitalanimal.com/blog/slaying-the-agile-dragon-the-game-of-thrones-methodology/