知识卡片

演进式设计的能力与局限

普通读书笔记卡 · 1958.a.18

内容

演进式设计指系统设计随实现增长而增长,历史上因局部不协调决策导致大杂烩系统而备受质疑。它靠重构(保持行为不变的代码改进)、测试驱动设计(保证改动不破坏现有功能)、持续集成三项支撑实践重新焕发生机,有人甚至认为它足以取代预先设计。但重构本身有局限:当前重构技术没有为架构规模的转变提供指导(如从单体数据库转向面向服务架构,很难靠小步重构完成),且遗留代码往往缺乏测试用例,让人无法放心重构。

参考来源

- 位置:《恰如其分的软件架构》第3章《风险驱动模型》3.7节《计划式设计与演进式设计》(源文件:_epub-src/OEBPS/text00033.html) - 结论依据:原文说明演进式设计依靠重构、测试驱动设计、持续集成三项实践克服混乱问题,但重构缺乏架构规模转变的指导,并以亚马逊从单一数据库架构转向面向服务架构为例说明这类转变难以靠小步重构完成。 - 原始内容:敏捷实践中的重构、测试驱动设计及持续集成可以对付各种混乱问题……当前的重构技术并没有为架构规模的转换提供指导。例如,亚马逊从分层的单一数据库架构到面向服务架构彻底改变,很难想象这一转变可以通过……小步重构去完成。