什么是敏捷開發?
敏捷開發(Agile)是一種以人為核心、迭代、循序漸進的開發方法。
在敏捷開發中,軟件項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。
簡單地來說,敏捷開發並不追求前期完美的設計、完美編碼,而是力求在很短的周期內開發出產品的核心功能,盡早發布出可用的版本。然后在后續的生產周期內,按照新需求不斷迭代升級,完善產品。
敏捷開發模式的分類
敏捷開發的實現主要包括 SCRUM、XP(極限編程)、Crystal Methods、FDD(特性驅動開發)等等。其中 SCRUM 與 XP 最為流行。
同樣是敏捷開發,XP 極限編程 更側重於實踐,並力求把實踐做到極限。這一實踐可以是測試先行,也可以是結對編程等,關鍵要看具體的應用場景。
SCRUM 則是一種開發流程框架,也可以說是一種套路。SCRUM 框架中包含三個角色,三個工件,四個會議,聽起來很復雜,其目的是為了有效地完成每一次迭代周期的工作。在這里我們重點討論的是 SCRUM。
SCRUM 的工作流程
學習 Scrum 之前,我們先要了解幾個基本術語:
- Sprint:沖刺周期,通俗的講就是實現一個“小目標”的周期。一般需要 2-6 周時間。
- User Story:用戶的外在業務需求。拿銀行系統來舉例的話,一個 Story 可以是用戶的存款行為,或者是查詢余額等等。也就是所謂的小目標本身。
- Task:由 User Story 拆分成的具體開發任務。
- Backlog:需求列表,可以看成是小目標的清單。分為 Sprint Backlog 和 Product Backlog。
- Daily meeting:每天的站會,用於監控項目進度。有些公司直接稱其為 Scrum。
- Sprint Review meeting: 沖刺評審會議,讓團隊成員們演示成果。
- Sprint burn down:沖刺燃盡圖,說白了就是記錄當前周期的需求完成情況。
- Release:開發周期完成,項目發布新的可用版本。

如上圖所示,在項目啟動之前,會由團隊的產品負責人(Product owner)按照需求優先級來明確出一份 Product Backlog,為項目做出整體排期。
隨后在每一個小的迭代周期里,團隊會根據計划(Sprint Plan Meeting)確定本周期的 Sprint Backlog,再細化成一個個 Task,分配給團隊成員,進行具體開發工作。每一天,團隊成員都會進行 Daily meeting,根據情況更新自己的 Task 狀態,整個團隊更新 Sprint burn down chart。
當這一周期的 Sprint backlog 全部完成,團隊會進行 Spring review meeting,也就是評審會議。一切順利的話,會發布出這一版本的 Release,並且進行 Sprint 回顧會議(Sprint Retrospective Meeting)。
敏捷開發與 DevOps
DevOps 是 Development 和 Operations 的合成詞,其目標是要加強開發人員、測試人員、運維人員之間的溝通協調。如何實現這一目標呢?需要我們的項目做到持續集成、持續交付、持續部署。
時下流行的 Jenkins、Bamboo,就是兩款優秀的持續集成工具。而 Docker 容器則為 DevOps 提供了強大而有效的統一環境。
了解 XP 極限編程
參考
https://blog.csdn.net/fw0124/article/details/48713959
參考
