Jeff De Luca 谈 FDD 中的建模和代码所有权,以及选择敏捷方法

  • Geoffrey Wiseman
  • 乔梁

2007 年 5 月 22 日

话题:敏捷方法论架构文化 & 方法

与 Stefan Roock 长达八页的访谈记录中,特征驱动开发(Feature Driven Development,FDD)方法的创始人Jeff De Luca谈到了包括开发一个全面模型、代码所有权和如何选择敏捷方法在内的很多内容。

开发一个全面模型

Jeff 认为,与其它敏捷方法相比,FDD 在初始阶段(开发一个全面模型)允许项目团队掌握整个项目,以便回答诸如“项目还剩多少没完成”之类的问题:

如果我们完全是纯粹的增量迭代开发——即仅限于迭代内的需求与分析——那么,我们当然很难回答“整个项目我们进行了多少”,以及“项目还有多少没完成”。因为我们还没有浏览过剩下的需求呢。所以一开始一定要做一些信息收集或分析活动,以便我们了解并设定可以跟踪和反馈的基线,这样我们就可以回答上面的问题了。FDD 是唯一一个能够正确做到这一点的敏捷方法。

在这一阶段的这个问题上可以看作是大量预先设计(Big Design Up-Front,BDUF)

并不是做 BDUP 那种被人鄙视的“全面预先设计”,而是做“恰好够用的设计”。同时还应注意,在 FDD 中的这个第一项活动不但包括高层次的设计,也包括需求及需求分析。

代码所有权

Jeff De Luca 也不完全赞同集体代码所有权:

集体所有权就相当于没有所有权。我不相信这个说法会有什么好处。

而私有代码所有权的益处在于:

模型或组件所有权的概念已经被事实证明是一个最佳实践,所有专业的开发工作也正是这样做的。不可能每个人都了解每样东西的所有事情。这是很脆弱的,而且无法衡量。

特别说明问题的是:面向对象基本原则之一就是封装性。一个类只要对外开放的接口保持不变,那么它内部及其实现是什么样的就是它自己的事情了。人本来就喜欢封装。假如你拥有类的所有权,那么你会更好地保持接口与实现的一致性。

选择一种敏捷方法

当谈到不同的敏捷方法和它们对不同类型的项目的适应性时,Jeff De Luca 提出了一个实用方法来挑选敏捷方法:

我认为不应该根据项目类型而选择不同的敏捷方法。每次谈到这类问题时,我都建议人们去看 Jim Highsmith 写的《Agile Software Development Ecosystems》。这是唯一一本谈及所有敏捷方法有关细节的书。读过这本书后,你会发现其中的一两种敏捷方法适合你和你的团队。无论具体是哪种方法,你都应该去实践一下。换句话来讲,在选择敏捷方法这件事上,更应该根据使用的人和组织的文化而不是项目类型来挑选。

这个访谈在最后介绍了关于 FDD 的更多的参考资料。

想了解这些主题更多的信息, 可以阅读 InfoQ 关于敏捷方法特性驱动开发建模的报导。

查看英文原文:Jeff De Luca, on FDD: Modeling, Code Ownership, Choosing an Agile Method


译者简介:乔梁,BJUG 成员,在 IT 领域工作多年,先后从事过软件开发、架构设计、技术管理等工作,目前从事项目管理工作。关心软件技术领域发展,对软件生命周期管理及过程改进方面的内容很感兴趣,对敏捷方法论亦有所了解。他的个人 Blog 为:http://blog.csdn.net/tony1130。为 InfoQ 中文站贡献内容,请邮件至china-editorial[at]infoq.com
敏捷方法论架构文化 & 方法