# 敏捷軟體開發(Agile Software Development) ###### tags: `軟體工程`, `敏捷軟體開發` ## (傳統)計劃驅動開發 v.s. 敏捷開發 ### 1. 計劃驅動開發 (Plan-driven development) 要點: ● 未必是 瀑布模式,也可以是 迭代式開發 ● 每個開發的階段 彼此互相獨立 且 預先規劃 (planned in advance) ### 2. 敏捷軟體開發(Agile software development) 要點: ●〈制定規格 --> 設計 --> 實作 --> 測試〉彼此交錯(interleaved) ● 產出(離開軟體開發流程)的時間點會在〈溝通〉階段決定 ## 敏捷方法(Agile methods) 1980, 1990 年代軟體開發流程因為創造了大量 overhead(間接成本), 許多國際著名工程師認為傳統開發方法存在太多缺陷, 因此制定了「敏捷開發」此一新型軟體開發方法。 ### 1. 著重 code 而不是 design ### 2. 基於迭代式開發(iterative approach) ### 3. 旨在快速交付【可用軟體】, 並依 可用軟體 進行改進(優化), 以【快速滿足不斷變化的需求】。 ## 敏捷宣言(Agile manifesto) ### 敏捷的核心價值(value): 1.【個人與互動】更重要於 流程與工具 2.【可用軟體】更重要於 繁冗的文件 3.【與客戶的合作】更重要於 合約締結 4.【因應變動】更重要於 依循計畫 ## 敏捷方法的適用性 ### 敏捷適合用於開發以銷售為主的中小型產品 #### 現在幾乎所有軟件產品和應用程式多是透過敏捷方法開發 ### 組織內部自定義系統開發 要點: ● 客戶明確承諾要參與開發過程 ● 盡可能不讓開發流程受外部的條約、規定影響 ## 敏捷開發追求「穩定性、持續性」 ### 每天上班時間固定(e.g., 8 小時)且穩定產出。 不建議加班: ● 大量加班未必對提升品質有效,好的專案時程管理,更勝於臨時趕工。 ● 一周工作時間建議 40 小時。 ● 偶爾加班敏捷方法可忍受,太長的加班時數敏捷方法認為會降低品質。 ### 要求團隊成員: 1. 可互相支援 2. 有一定的技術能力 2. 內聚力強