XP 是一種以軟體開發為中心 (Software Development Centric) 的敏捷開發方法。與其他框架相比,它更強調技術卓越與團隊協作的紀律。其核心理念建立在五大價值觀之上:
- 簡潔 (Simplicity): 專注於開發「目前派得上用場」的最簡單方案,不為未來過度設計。
- 溝通 (Communication): 透過每日站立會議 (Daily Stand-up) 等機制,確保成員清楚彼此進度。
- 回饋 (Feedback): 透過短迭代盡早取得回饋。推崇快速失敗 (Failing Fast),以便在開發早期進行修正。
- 勇氣 (Courage): 勇敢展示未完成的工作成果,坦然接受批評並開放給他人檢視代碼。
- 尊重 (Respect): 將團隊視為一個整體,成敗共同承擔,營造互相支援的文化。
XP 核心角色 (Roles)
在 XP 團隊中,職責劃分明確,以確保商業價值與開發品質能完美對接:- 客戶 (Customer): 負責決定功能的優先順序,並根據商業價值做出判斷。
- 測試人員 (Tester): 協助客戶將模糊的「使用者故事」轉換為可驗證的產品需求,並執行測試。
- 教練 (Coach/Facilitator/PM): 負責引導流程、排除障礙,確保開發過程符合 XP 的規範。
XP 實踐準則 (Practices)
XP 的精髓在於其具體的技術與流程實踐,可歸納為規劃、測試、協作與工程四大面向:
1. 規劃與發佈 (Planning & Release)
- 發佈規劃 (Release Planning): 由客戶指出具價值的需求,團隊則評估技術執行的難度。
- 迭代規劃 (Iteration Planning): 一個發佈通常由多個迭代組成。迭代週期建議在 1~2 週內,團隊根據過往開發數據 (Velocity) 來評估承接量。
- 小規模發佈 (Small Release): 頻繁地將成果發佈至測試環境,方便向客戶展示並持續維護品質。
- 永續節奏 (Sustainable Pace): 反對過度加班。穩定的工作時數才能確保長期的品質與產出。
2. 客戶與溝通 (Customer & Communication)
- 客戶測試 (Customer Test): 客戶定義驗收情境,團隊則負責打造自動化測試來滿足這些情境。
- 隱喻 (Metaphor): 利用生活化的比喻建立「共通語言」,搭起工程師與客戶之間的溝通橋樑。
3. 開發實踐 (Development Practices)
- 測試驅動開發 (TDD): 遵循「先寫測試,再寫功能」的原則,直到程式碼通過測試為止。
- 結對編程 (Pair Programming): 兩人一組,一人寫代碼、一人即時審查 (Real-time Review)。雖然看似人力成本增加,但能有效減少除錯成本並傳遞知識。
- 持續整合 (Continuous Integration, CI): 頻繁地將程式碼整合回主線,確保新舊功能協調運作,避免整合地獄。
- 重構 (Refactoring): 功能完成後持續清理代碼,消除冗餘,保持代碼簡潔。
4. 代碼與架構規範 (Code & Design)
- 集體代碼所有權 (Collective Code Ownership): 每個人都能查看並修改任何部分的代碼,落實知識共享,避免單一功能的維護權卡在特定人士手中。
- 編碼規範 (Code Standard): 確保代碼風格一致,就像出自同一位高明的工程師之手。
- 簡單設計 (Simple Design): 專注於目前的需求,不做多餘的擴充。
- 自組織團隊: 相信最優秀的架構、需求與設計,皆源自於能自我管理的開發團隊。
核心總結: XP 不僅是流程管理,更是一套「開發習慣」。透過頻繁的整合、測試與結對協作,XP 旨在降低軟體修改的成本,並在開發過程中極大化溝通透明度與代碼品質。










