|
锁定老贴子 主题:FDD——天才的灵感
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
时间:2006-10-08 关键字: FDD
实际上大家并不知道FDD的agile方法的法律地位是很值得推敲的——至少你看那17个人中间没有Jeff De Luce和Peler Coad(http://www.agilemanifesto.org/)。而且即使是Jon Kern也是在相信agile对于建模的态度是友好的(至少MDA的Steve Mellor也这样认为),而且Together soft可以减小建模和编码之间的断层隔离。当然类似的处境也在Lean方法中出现。不过好在Agile方法系统不是武侠小说中的武林门派,不会有什么座次和正统的争吵。然而即使是现在,依然有人以为FDD是一种黑客方法学——FDD竟然敢自称为一种Processes,并且仅仅只需要10页的A4文件来表达(http://www.nebulon.com/articles/fdd/latestprocesses.html)。在这10页面前,我任何对于这个过程实施步骤的介绍都已经显得多余,不如我对于其中的某些环节进行集中的研究和讨论更有价值。
首先FDD没有强求你使用color UML,但是我实在找不出比这个方法更加简单明了的领域建模的方法了。问题领域内被认为存在四种类的模版,粉红的Moment/Interval,黄色的Role,绿色的PPT(Party,Place,Thing),蓝色的Description。而Domain Neutral Component是一种在业务系统中反复出现的模式,用我的话来说就是什么人在一个什么时间以一种什么身份做什么样的事情。我相信有的人可能不知道什么是名词,但是他也能把一件事情按照上面的格式来表达。当初我曾经交给我的客户使用CRC卡片建模,他们并没有觉得有什么复杂。而当我给他们color UML的时候,客户觉得比CRC还简单明了,并且感觉自己也可以做一个程序员。 而Feature——<action><resule><object>,也非常简单明了。不过很多人会误解Feature是一种表达需求的手段,就如同Use Case和Usestoris一样,其实他们都是对于需要的分析手段。只不过Feature更加靠近程序,而Use Case更加靠近业务,Usestory则可以被使用在这两种风格——但是一个Usestory只有一个风格。也就是说一个Use Case或者Usestory可以用几个Feature来进行构造。更加奇妙的是使用Feature可以很量化的表示你的开发进度,领域走查1%,设计40%,设计审查3%,编码45%,代码审查10%,提交构造1%。当然你可以根据你组织的具体情况来调整这个数据,不过只要你不是太频繁的调整,那么任何人都能够即时的知道你究竟过的好不好。使用Feature你会发现客户可以直接理解你程序的结构和进度,而不仅仅是通过你提交的文档的估计。当然这个能力对于很多习惯作假的人是深恶痛绝的。 同时我们会发现如果长期使用FDD在一个领域或者几个相关领域进行程序开发,那么领域模型会愈来愈固定,而以此为基础的人员会愈来愈成为某个方面的专家。同时更多类似的Feature,会频繁的出现。以至于当你仅仅使用以前的Feature就可以分析出现在的客户业务存在的问题。也就是说使用color UML和Feature不仅仅可以对需求进行整理,还可以对业务进行整理。 而且如果你够敏感,你会发现FDD被称为Processes。确实FDD第一次的使用就是在一个大型的项目,并且最后结果很成功。并且就如同Lean一样,FDD这里大型项目的例子非常多——无论是从代码的数量,需求的复杂,参与的人员数量,进行的时间,这些方面来说大型项目并不是FDD所欠缺的。而在小型和中型项目上,FDD由于可以很好的记录经验,也可以取得很好的效果。同时由于FDD的过程太少了(才10页A4),因此很少有人有对他做裁剪的欲望。同时这个方法使用的技术也够简单明了,也很少能够被人所非议是不是不容易学习掌握。不过确实FDD的内容没有包括SCM和coding方面的内容,但是你可以结合XP的持续集成,TDD,重构来完善他。而且由于Feature的结构统一,以其为基础构造Test Case是更有指引性。况且由于FDD使用温和的代码责任,你也不会产生过分重构的问题。而由于Feature的粒度统一,对于控制check in和check out也方便,因此至少做到每日构建是容易做到的。 不过FDD由于必须有2个关键的人物——首席构架师和首席程序员,因此门槛并不低。同时由于FDD的客户参与度可以做的很高,那么团队的文化很容易受到其客户的文牍主义的影响。并且由于FDD的前期工作可能会很长,因此也很容易被人们搞成一场打着敏捷旗帜的重型方法会展。不过好在如果你提前意识到这三个方面的问题,它们就可以预防。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2006-10-08
Peter Coad绝对是个天才,而FDD也充分体现了其做法简单直接,灵感四溢的特点。
|
|
| 返回顶楼 | |
|
时间:2006-10-10
当时等了很久才买到“特征驱动开发方法”这本书,书不厚,感觉可行性很强。可惜由于工作性质变化的原因,后来就没有实践的机会了
|
|
| 返回顶楼 | |
|
时间:2006-10-10
能否提供FDD得相关网站和书籍?
谢谢 @.@||~ |
|
| 返回顶楼 | |
|
时间:2006-10-10
>当时等了很久才买到“特征驱动开发方法”这本书
早知道就卖给你了,看完拥抱变化书后再看这书就感觉就是骗钱的。(个人感觉:)) |
|
| 返回顶楼 | |
|
时间:2006-10-10
ddd 写道 >当时等了很久才买到“特征驱动开发方法”这本书
早知道就卖给你了,看完拥抱变化书后再看这书就感觉就是骗钱的。(个人感觉:)) 路数还是不太相同, 我觉得 FDD是在基于强大建模能力的基础上的一种过程. color Uml在我看来说明了,即便有了敏捷的一般做法,也还是要对建模技术深入挖掘. |
|
| 返回顶楼 | |
|
时间:2006-10-10
建模?为什么要建模?为了建模而建模?
|
|
| 返回顶楼 | |
|
时间:2006-10-11
|
|
| 返回顶楼 | |
|
时间:2006-10-12
ddd 写道 建模?为什么要建模?为了建模而建模?
为了把项目做好呀. |
|
| 返回顶楼 | |
|
时间:2006-10-12
FDD同UP系列和XP的比较文章,我会随后慢慢发出。这里我只是希望大家关注,FDD提供了更多的客户参与能力,FDD更加觉有良好的量化概念,FDD更加能够被具有优秀四分卫的团队高使用几率。
如果说XP提供了3种新的技术,TDD/重构/持续集成,那么FDD则给了我们建模和FEATURE。他们两者一个更加靠近前端——FDD,一个更加靠近后端——XP。而FDD更加关注整体,XP则更加类似一组最佳实践。2者刚好是,xp说了的fdd就没有提,fdd讲了的xp就刚好没有问。而如果说在大型项目中,我任务FDD更加有优势。 |
|
| 返回顶楼 | |











