功能驅動開發FDD的探討
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個階段的執行。
一點自己的思考、心得。希望與大家共同探討。
FDD的的開發過程分為5個階段,分別是開發總體模型、建立功能列表、根據功能制定計劃、根據功能進行設計、根據設計進行實現構建。
1、開發總體模型
此階段需要領域專家的參與。主要是收集系統的功能需求,然後使用四色原型進行域建模。個人認為此階段應該得出系統的架構設計。根據FDD的官方解釋,該階段需要主要的類以及類的關係、類的主要屬性、方法。所以應該是要得出系統的架構設計圖。此階段的結果包括了:非正式的功能列表、系統域建模模型(也就是系統架構圖)。
2、建立功能列表
在前一階段,已經完成了系統功能的需求分析,並設計出了系統的域模型。這一階段需要細化功能,主要是把域模型中的moment-intervals轉換為功能集的形式。個人認為此階段應該完成概要設計。階段成果包括了:完整的功能集列表、概要設計書。
3、根據功能制定計劃
對功能列表進行組織、整理,按優先順序進行排序,制定完成的日期,把功能分配到具體的實現人。這個時候需要指定每個類的負責人以及功能集的主要程式設計師(就是team leader,呵呵)。每個功能集的完成周期一般是不超過2個星期,如果超過了2個星期,應該再進行細化。因為其強調的迭代週期是2個星期。本階段的成果主要是專案開發計劃。
4、根據功能進行設計
專案經理和上一階段指定的各個功能集的主要程式設計師一起對功能進行詳細設計。個人理解應該是在域模型的基礎上進行分析、設計,得出分析模型、設計模型。但是也不一定要如此全面,也可以直接進入設計模型。根據設計的結果制定出專案的里程碑。這裡會有一個設計評審的環節。本階段的成功應該包括了:詳細設計、專案里程碑計劃。
5、根據設計進行實現構建
按照設計進行編碼實現,由程式設計師實現各自負責的類。在程式碼完成後有必要的組織程式碼複查、評審。在測試和檢查透過後檢入到配置管理庫中進行構建。第5和第4階段是一個迭代的過程,迭代週期一般為2個星期。這樣經過不斷的迭代,不斷的實現功能集中的功能。每一個里程碑的時候進行評估、回顧。並考慮下一個里程碑的繼續,直到最後專案的完成。
這裡面有一個問題,就是在開始設計、實現的時候如果又有新的功能要增加,這個時候是應該直接考慮進來還是放到下一個計劃制定中去。個人覺得應該採用後一種方法。這個時候需求、計劃都已經確定了,如果把新的功能又進來會對現有的計劃執行以及系統的設計實現都會有影響,應該放到下一個版本中去考慮。也就是說會再從第1步開始的5個階段的執行。
一點自己的思考、心得。希望與大家共同探討。
相關文章
- 用資料驅動業務發展:深入探討有效的資料策略
- 深入探討前端元件化開發前端元件化
- 探討敏捷開發在軟體開發中的應用敏捷
- 探討Web開發中的Session儲存與管理WebSession
- 國內應用軟體開發管理的探討 (轉)
- 軟體開發週期估算及探討(轉)
- Windows的驅動開發模型Windows模型
- 抱怨驅動開發
- 開源趨勢探討薦
- 有關ERP應用外掛開發的探討(轉)
- 驅動開發:配置Visual Studio驅動開發環境開發環境
- [090]web容器啟動探討Web
- [AI]探尋高等生命的多面驅動AI
- 驅動開發:探索DRIVER_OBJECT驅動物件Object物件
- Promise探討Promise
- 談“測試驅動的開發”
- 基於WDF的驅動開發
- 探討針對iOS VS. Android開發遊戲的優劣iOSAndroid開發遊戲
- 【敏捷開發】驅動測試開發敏捷
- 驅動開發入門
- 白痴驅動開發方法
- "測試"驅動開發
- 由 Base64 展開的知識探討
- 測試驅動開發(TDD)的思考
- 深入探討 UndefinedUndefined
- IsPostBack深入探討
- 驅動開發書籍大全
- 驅動程式開發步驟
- 行為驅動開發iOSiOS
- Windows驅動開發入門Windows
- window驅動開發總結
- 從Bengio演講發散開來:探討邏輯推理與機器學習機器學習
- Google開發新的Aspeed控制驅動程式Go
- 基於測試驅動的iOS開發iOS
- 面向 C++ 的測試驅動開發C++
- 深入探討、理解Java的CLASSPATHJava
- 樹莓派驅動的無人駕駛開發記錄--驅動電機樹莓派
- 【Spring註解驅動開發】聊聊Spring註解驅動開發那些事兒!Spring