敏捷方法簡介
特點
- 適應性,應對變化
- 以人為本,發揮人的特性
- 迭代增量式開發,逐版本更新
實踐
極限編程
- 特點
- 加強交流
- 從簡單做起
- 尋求反饋
- 實事求是
水晶系列方法
- 特點
- 以人為中心,機動性
- 一組經過證明、對不同類型項目非常有效的敏捷過程,根據其項目和環境選擇最合適的
- 水晶方法基于兩種關鍵假設:
- 首先,團隊可以通過簡化工作和項目流程來提高自身效率。
- 其次,每個項目都與其他項目不同,都需要一些特定、具體的方法和策略。
- 方法對項目的適用性影響因素
- 團隊規模
- 關鍵程度
- 項目優先級
- 參考: https://www.toolsqa.com/agile/crystal-method/
Scrum
- 特點
- 基于經驗主義和精益思維(減少浪費),利用迭代和增量方法應對未來需求和潛在風險
- 包括了一系列實踐和預定義角色的過程骨架(是一種流程、計劃、模式,用于有效率地開發軟件)
- 使用產品 Backlog 來管理產品的需求。產品 Backlog 是一個按照商業價值排序的需求列表。開發時將會開發過程根據 Backlog 分成若干短的過程,每次遞交可交付內容
- 基于經驗主義的 Scrum 的三個支柱:
- 透明 了解工件的行為
- 檢視 了解開發進展
- 適應 調整工作應對當前情況
特征驅動開發方法 (Feature Driven Development,FDD)
- 特征是基本的開發單位,一般可在兩周之內實現(過長就需要分解)
- 迭代的開發模型
- 3個要素:人、過程和技術
- 6種關鍵的項目角色:項目經理、首席架構設計師、開發經理、主程序員、程序員和領域專家
- 5個核心過程:
- 開發整體對象模型: 主要是收集系統的功能需求,然后使用四色原型進行域建模。得出系統的架構設計圖
- 構造特征列表:根據領域專家對領域的劃分,將整個領域分成一定數量的區域(主要功能集),每個區域再細化為一定數量的活動。形成了具有層次結構的分類功能列表
- 計劃特征開發:根據功能的依賴性、開發小組的工作負荷以及要實現的功能的復雜性,計劃實現功能的順序,完成一個功能開發計劃。(它提供了對項目的高層視圖,讓業務代表了解功能開發、測試和發布日期,以便業務代表和部署小組能夠計劃交付哪些功能的日期。)
- 特征設計:對功能進行詳細設計。同時在域模型的基礎上進行分析、設計,得出分析模型、設計模型。
- 特征構建:按照設計進行編碼實現,由程序員實現各自負責的類。在代碼完成后有必要的組織代碼復查、評審
計劃特征開發根據構造出的特征列表、特征間的依賴關系進行計劃,設計出包含特征設計和特征構建過程組成的多次迭代
比較
極限編程和特征驅動開發方法的比較
- 設計過程:XP過程以在卡片上記錄故事開始業務分析。FDD使用特征,執行領域走查,同時要建立一個全面的領域對象模型,以便特征小組對每一組特征產生更好的設計。 FDD具有總體設計
- 開發隊伍規模:XP通常不超過10人;FDD的理想團隊成員數在16~20人
- 代碼所有權:XP鼓勵集體擁有代碼,任何人都可以在需要時添加或修改代碼。與之相反,在FDD中,整個開發團隊擁有代碼的集體所有權。當需要集體驗證譬如說軟件架構的設計或用戶界面構造的時候,FDD就將類所有者與特征小組和審查結合起來滿足需要。(類指派給某人負責)
- 測試:XP利用雙人結對編程來不斷地在設計和代碼層執行走查和非形式化審查。FDD則提倡采用結構化的形式化審查技術。XP中的正確性是由運行單元和功能測試來定義的。在FDD中,單元測試是“按照功能構建”過程的一個部分。FDD沒有定義參與測試的形式化等級,由主程序員決定做什么更適合。