渐进式设计:敏捷开发的长期成功秘诀
1. 进化式设计的重要性
传统设计起步迅速,因为一切都是全新的。而进化式设计则相反,一开始你需要摸索前行,随着团队产生新的想法不断改进设计。但随后,传统设计会变慢,而进化式设计会加速。根据经验,大约4 - 6周后,情况就会发生转变:采用进化式设计构建的代码比相同时间内传统设计的代码更容易处理,并且会不断改进。
进化式设计对于敏捷开发的长期成功至关重要,它具有革命性,但却鲜为人知。进化式设计主要有以下三种实践方法:
- 增量设计 :让团队成员在交付的同时进行设计。
- 简单设计 :创建易于修改和维护的设计。
- 反思式设计 :持续改进现有设计。
2. 增量设计的概念
敏捷团队对程序员提出了具有挑战性的要求:每1 - 2周,团队要完成4 - 10个以客户为中心的故事。而且客户可能随时修改当前计划并引入全新的故事,没有提前通知。这意味着程序员必须能够在一周内从头开始实现故事。由于计划随时可能改变,不能预留几周时间来建立设计架构,而应专注于交付有客户价值的故事。
增量设计允许你在交付故事时,以小的增量逐步构建设计。代码设计良好的标志是变更成本低。成功的交付团队的秘诀在于他们从不停止设计。通过结对编程或团队编程,至少一半的程序员会专注于思考设计,测试驱动开发也鼓励在每一步都改进设计。
交付团队会不断讨论设计,讨论内容既有详细琐碎的,如“这个方法应该叫什么?”,也有高层次的,如“这两个模块有一些共同的职责,我们应该把它们分开,创建第三个模块”。设计讨论