功能驅動開發FDD的探討

wczwcg發表於2006-08-18
FDD是一種模型驅動開發的軟體過程,和XP一樣是敏捷軟體開發方法的一種。FDD的主要思想是對功能的實現,也就是說FDD是以實現功能為目標。把系統分解成一個一個的功能集,每個功能集又習細分為具體的功能。比如說使用者管理是個功能集,而使用者管理又包括了增加使用者、刪除使用者等具體的功能。域建模是其系統設計的方法,用到的是color uml,也就是常說的四色原型,這個目前已經有不少工具支援,比如borland的together。下面主要探討一下其開發過程。

FDD的的開發過程分為5個階段,分別是開發總體模型、建立功能列表、根據功能制定計劃、根據功能進行設計、根據設計進行實現構建。

1、開發總體模型

此階段需要領域專家的參與。主要是收集系統的功能需求,然後使用四色原型進行域建模。個人認為此階段應該得出系統的架構設計。根據FDD的官方解釋,該階段需要主要的類以及類的關係、類的主要屬性、方法。所以應該是要得出系統的架構設計圖。此階段的結果包括了:非正式的功能列表、系統域建模模型(也就是系統架構圖)。

2、建立功能列表

在前一階段,已經完成了系統功能的需求分析,並設計出了系統的域模型。這一階段需要細化功能,主要是把域模型中的moment-intervals轉換為功能集的形式。個人認為此階段應該完成概要設計。階段成果包括了:完整的功能集列表、概要設計書。

3、根據功能制定計劃

對功能列表進行組織、整理,按優先順序進行排序,制定完成的日期,把功能分配到具體的實現人。這個時候需要指定每個類的負責人以及功能集的主要程式設計師(就是team leader,呵呵)。每個功能集的完成周期一般是不超過2個星期,如果超過了2個星期,應該再進行細化。因為其強調的迭代週期是2個星期。本階段的成果主要是專案開發計劃。

4、根據功能進行設計

專案經理和上一階段指定的各個功能集的主要程式設計師一起對功能進行詳細設計。個人理解應該是在域模型的基礎上進行分析、設計,得出分析模型、設計模型。但是也不一定要如此全面,也可以直接進入設計模型。根據設計的結果制定出專案的里程碑。這裡會有一個設計評審的環節。本階段的成功應該包括了:詳細設計、專案里程碑計劃。

5、根據設計進行實現構建

按照設計進行編碼實現,由程式設計師實現各自負責的類。在程式碼完成後有必要的組織程式碼複查、評審。在測試和檢查透過後檢入到配置管理庫中進行構建。第5和第4階段是一個迭代的過程,迭代週期一般為2個星期。這樣經過不斷的迭代,不斷的實現功能集中的功能。每一個里程碑的時候進行評估、回顧。並考慮下一個里程碑的繼續,直到最後專案的完成。

這裡面有一個問題,就是在開始設計、實現的時候如果又有新的功能要增加,這個時候是應該直接考慮進來還是放到下一個計劃制定中去。個人覺得應該採用後一種方法。這個時候需求、計劃都已經確定了,如果把新的功能又進來會對現有的計劃執行以及系統的設計實現都會有影響,應該放到下一個版本中去考慮。也就是說會再從第1步開始的5個階段的執行。

一點自己的思考、心得。希望與大家共同探討。

相關文章