敏捷设计法则

不同设计的确定时机会对敏捷团队的效率有重要的影响,不恰当(过早或过晚)的时机都可能会给团队带来不必要的返工。哪些设计需要在迭代前完成作为准备“Ready”的一部分?也就是所谓前期设计(Up Front Design)。哪些设计可以在迭代中完成?也就是增量实现。

在这里我举个盖楼时楼层设计的例子,下图列出了建筑设计需要做的决策。

建筑中楼层的设计决策

地点:           决定大楼建在哪里

结构:           决定地基和楼的框架

外表:           楼层外表设计

服务:           水、电、下水道等系统

内部空间:    内部空间布局设计

材料选择:    灯光、颜色、地板等的选择


注意这些设计决策的次序至关重要,从下到上变更难度和成本都在成倍增加。一线城市可用地越来越少,价格越来越贵。如果在建筑过程开始后,还需要更换地点,那么代价是承受不了的。如果你已经盖了10层楼,需要该地基,那么你就必须把这10层楼全部毁了,代价巨大。而相比之下,换个地毯则是个很简单的事。

错误决策导致短命建筑

通过这个例子我们可以看到有些设计决策需要前期冻结,因为其变更成本会让我们不能承受,如地点、地基。而有些设计可以到需要时再定,如用什么样的地毯或墙上涂什么样的颜色。过早的确定这些决策反而会造成不必要的返工,如果建筑商在墙上用的颜色不是房主想要的,他很可能会重新刷上自己喜欢的颜色。

在软件开发中,其硬件环境、开发语言、开发平台及其他支持体系就像是建筑的地点,系统架构就像是结构。子系统的架构设计就像是外表或服务,而具体模块中的功能实现设计有可能就是材料选择。

哪些设计需要迭代前完成,哪些可以在迭代中完成,这是是团队的一个重要决策。也应该是Ready检查单中的一项。

多少架构设计的投入是比较合适的呢?Barry BoehmRichard Turner在《Balancing Agility and Discipline》一书中,根据来自161个不同类型项目的数据,对此做了定量分析。他们根据项目的架构及风险因子,给出了敏捷度和约束度的最佳结合点——架构在项目中的投入比例。他们的基本结论是随着项目规模及criticality的增加,这个最佳点会向约束方向倾斜,反之亦然。


他们的研究显示,如果前期架构投入不足,会导致开发后期因为架构缺陷的返工。返工量会和项目规模成正比。下表显示架构方面的投入和项目规模对返工及项目延期的影响。

从表中我们可以很容易看出,项目延时等于架构投入加上返工。如果将上表用图画出来的话,你会发现对于1万行代码的项目来讲,5%是架构前期投入的最佳比例;10万行代码的项目则应在20%,而对1000万行代码的项目来讲,架构前期投入的最佳比例是37%

太多和太少约束都不行,度的把握是敏捷成功的重要秘诀之一。


摘自 《知行合一: 实现价值驱动的敏捷和精益开发》

可在京东购买

敏捷设计法则》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/2106.html