增量设计:软件开发的有效策略
1. 增量设计概述
增量设计与传统设计方法不同,它在软件开发中展现出了显著的优势。起初,很多人对增量设计持怀疑态度,认为前期设计才是负责任的做法。但实践证明,增量设计不仅能修复前期设计的缺陷,还能产生更优的设计方案。
增量设计从方法和单个类的层面开始,逐步扩展到类、包甚至应用架构。它以解决特定问题为出发点,根据客户的额外需求逐步演进设计。这种设计方式需要持续关注设计,但在不同的时间尺度上进行,例如方法可能在几分钟内演进,而架构则可能需要数月。
1.1 持续设计与突破
在设计过程中,设计的改进往往是间歇性的。通常,会在现有设计中多次实现代码并进行小的更改,然后某个契机可能会带来新的设计思路,这就需要一系列的重构来支持,这种情况被称为“突破”。突破可以发生在从方法到架构的各个设计层面,是重要见解的结果,能带来设计的显著改进。
1.2 增量设计的不同层面
1.2.1 方法的增量设计
方法的增量设计可以通过测试驱动开发(TDD)来实现。在TDD过程中,驾驶员负责实现代码,导航员则思考设计。导航员会寻找过于复杂的代码和缺失的元素,并记录在便签上。他们会考虑代码接下来应支持的功能、可能需要的设计变更以及能引导代码朝正确方向发展的测试。在TDD的重构步骤中,两人会一起查看代码,讨论改进机会并回顾导航员的笔记。
方法的重构每隔几分钟就会进行一次,突破可能每小时发生几次,完成一次突破可能需要10分钟或更长时间。
1.2.2 类的增量设计
虽然TDD能使单个类和方法的设计变得简单、优雅且易于使用,但仅关注单个类是不够