# 敏捷軟體開發(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. 內聚力強