在与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 。
评论