写点什么

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

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

2007 年 5 月 22 日 04:00444
用户头像

发布了 100 篇内容, 共 17.4 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

sql执行顺序优化

大数据技术指南

sql 4月日更

8x Flow 业务建模法(二):再看什么是业务逻辑

胡皓

领域驱动设计 DDD 业务建模 8xFlow 业务逻辑

去面试,公司问我生辰八字。

yes

面试

架构师实战营 模块一作业(微信业务架构和学生管理系统架构备选方案)

Geek_0669f7

架构实战营

区块链:颠覆其外,守旧其中

CECBC区块链专委会

互联网

区块链开发主流语言和核心优势

CECBC区块链专委会

区块链

Hadoop 3.x 版本相对于 Hadoop 2.x的新特性

五分钟学大数据

hadoop 4月日更

强化学习—DQN:不讲前世,就论今生

打工人!

深度学习 强化学习 深度强化学习 图解源码分析 DQN

华仔架构实战营 - 作业 - 模块1

曲元洪

架构实战营

博客主题用腻了?来试试赛博朋克 2077 主题吧!

清秋

CMS Hexo 博客 4月日更

如何做决策?

石云升

决策 28天写作 职场经验 管理经验 4月日更

「架构师训练营 4 期」 第十三周 - 001&2

凯迪

架构师训练营 4 期

华仔训练营第一次作业

方堃

JavaScript 图片转文字,文字转语音

空城机

JavaScript 前端 4月日更 tesseract 图片转文字

第13周课后练习-数据应用(二)

潘涛

架构师训练营 4 期

回归本我还是追逐名利,技术人在中年危机下的抉择?

刘华Kenneth

管理 职场 中年危机

架构实战营 模块一:课后作业

👈

架构实战营

Martian 3.3.3 发布,最低支持 JDK11

贝克街的天才

Java 开源 开源项目 开源社区 开源框架

区块链走红 江苏多行业应用迈入"可信时代"

CECBC区块链专委会

农产品

没有lrzsz,怎么传文件到服务器?

运维研习社

运维 工具

【极客大学】模块一作业

冬天的树

架构实战营 模块 1 课后作业

eoeoeo

架构实战营

3.4 Go语言从入门到精通:包管理工具之Go module

xcbeyond

golang go语言 go modules Go语言从入门到精通 4月日更

架构实战营-模块一作业

俞立夫

架构实战营

「Android渲染」为什么alpha渲染性能低?

李小四

Android渲染 Alpha 渲染

与JVM做朋友系列(3)又见Class字节码

李浩宇/Alex

JVM X86 stack register

架构实战营 模块一:学习总结

👈

架构实战营

模块一,学习总结

俞立夫

架构实战营

与JVM做朋友系列(2)再见类加载器

李浩宇/Alex

JVM ClassLoader 类加载器

如何在Deno中使用 Node 模块?

Sakura

4月日更

外网访问Ubuntu下的Tomcat

U+2647

tomcat ubuntu 4月日更

「中国技术开放日·长沙站」现场直播

「中国技术开放日·长沙站」现场直播

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