Kent Beck 最近发表了一篇文章,其中谈到了他对于工具和敏捷软件开发之间关系的一些想法。他认为:很多人都错误诠释了“个人与交互重于流程和工具”这条敏捷原则,他们以为敏捷软件开发不需要工具。工具其实是敏捷软件开发必需的部分,对于有效的开发来说,正确的工具集合可以起到催化剂的作用。
Kent 认为,敏捷很注重“流”(flow),也就是说要进行小块的软件交付,并因此而带来各个活动之间的频繁切换。一般来说,在分析、设计、测试、编码和发布之间都会进行快速切换。而工具的作用,也从充分发挥某个活动的作用,变成了在活动之间的切换。他给出了使用墙上的卡片作为工具的例子,认为这满足了活动切换的条件,即使有所不足。当结对编程的人员在某项活动中发现新的需求时,他们可以更新卡片,再回到之前的活动中。因此卡片有助于快速切换,但是它们的弱点在于只能暂时使用,而且无法在多个站点之间共享。
Kent 指出,透明在敏捷中也很重要。因为敏捷拥抱变化,项目规划发生变更就是很常见的事情。透明可以保证团队中的每个人都能知道变化的发生,并产生彼此之间的信任。工具应该支持并鼓励透明。
Kent 补充道,常用的敏捷实践之间的关系很密切,胜过单独的工具。比如,每日部署实践需要单元测试、配置管理和持续构建的支持。TDD 实践也需要单元测试工具和重构工具的配合。从另一个角度来看,每个工具也支持多种实践。例如,配置管理工具可以支持每日部署、增量式设计和持续集成。因此每个工具支持多个实践,而且每个实践需要多种工具支持。
他指出:敏捷已经对开发人员使用的工具产生了深远的影响。对于未来工具可能的变化,他的预测是:
- 在活动之间更平滑的切换
- 在更大的范围支持自动化测试
- 增强透明度
- 实时协作
这篇文章可以下载多种格式。对文章的讨论也在极限编程讨论组中进行。
查看英文原文: Relationship Between Tools and Agile Software Development
评论