[敏捷開發實踐](2) 用於開發和維持複雜產品的敏捷開發框架Scrum
1,Scrum概述
上篇中提到敏捷開發有兩種主流的方法,一個是XP,另一個是Scrum,本篇簡要介紹Scrum方法。Scrum是一套開發和維護複雜產品的框架或說是管理方法。
我們提到敏捷開發是一個增量的、迭代的開發過程。而在Scrum框架中,整個開發過程我們分解為若干個短的迭代週期,在Scrum中每一個迭代週期,我們稱為一個Sprint(原義為衝刺,Scrum中指一個迭代)。根據Scrum的建議一般為4周(也可以根據實際產品特點調整這個週期長度,並不影響使用Scrum進行敏捷開發,比如網際網路產品有些團隊每1周為一個Sprint).
Scrum中使用產品Backlog(待辦或儲備)來管理需求,產品的Backlog是按商業價值進行排序的需求列表,列表條目的體現形式通常稱為使用者故事(名字很有意思,就是與使用者有關的事)。
Scrum團隊開發流程是先從Backlog中挑選優先順序較高的需求進行開發,也就是說先把使用者最需要的部分開發出來。挑選的需求需要Sprint計劃會上經過討論、分析和估算得到任務列表,稱為Sprint backlog.
每個迭代結束時,Scrum團隊將遞交潛在的可交付產品增量。
Scrum起源於軟體開發專案,但不僅僅適用於軟體開發管理,它可以用於任何複雜的或是創新性的專案或工程。
(下圖是來自Scrum中文網的Scrum流程圖)
2,Scrum框架的核心
SCRUM框架包括3個角色、3個工件、5個活動、5個價值
(1)3個角色
- 產品負責人(Product Owner)
- Scrum Master
- Scrum團隊
(2)3個工件
- 產品Backlog(Product Backlog)
- SprintBacklog
- 產品增量(Increment)
(3)5個活動
- Sprint計劃會議(Sprint Planning Meeting)
- 每日站會(Daily Scrum Meeting)
- Sprint評審會議(Sprint Review Meeting)
- Sprint回顧會議(Sprint Retrospective Meeting)
- 產品Backlog梳理會議( Product Backlog Refinement)
(4)5個價值
- 承諾 – 願意對目標做出承諾
- 專注– 把你的心思和能力都用到你承諾的工作上去
- 開放– Scrum 把專案中的一切開放給每個人看
- 尊重– 每個人都有他獨特的背景和經驗
- 勇氣– 有勇氣做出承諾,履行承諾,接受別人的尊重
3,SCRUM理論基礎
Scrum以經驗性過程控制理論(經驗主義)做為理論基礎的過程。經驗主義主張知識源於經驗, 以及基於已知的東西做決定。Scrum 採用迭代、增量的方法來優化可預見性並控制風險。
Scrum 的三大支柱支撐起每個經驗性過程控制的實現:透明性、檢驗和適應。Scrum的三大支柱如下:
第一:透明性(Transparency)
透明度是指,在軟體開發過程的各個環節保持高度的可見性,影響交付成果的各個方面對於參與交付的所有人、管理生產結果的人保持透明。管理生產成果的人不僅要能夠看到過程的這些方面,而且必須理解他們看到的內容。也就是說,當某個人在檢驗一個過程,並確信某一個任務已經完成時,這個完成必須等同於他們對完成的定義。
第二:檢驗(Inspection)
開發過程中的各方面必須做到足夠頻繁地檢驗,確保能夠及時發現過程中的重大偏差。在確定檢驗頻率時,需要考慮到檢驗會引起所有過程發生變化。當規定的檢驗頻率超出了過程檢驗所能容許的程度,那麼就會出現問題。幸運的是,軟體開發並不會出現這種情況。另一個因素就是檢驗工作成果人員的技能水平和積極性。
第三:適應(Adaptation)
如果檢驗人員檢驗的時候發現過程中的一個或多個方面不滿足驗收標準,並且最終產品是不合格的,那麼便需要對過程或是材料進行調整。調整工作必須儘快實施,以減少進一步的偏差。
Scrum中通過三個活動進行檢驗和適應:每日例會檢驗Sprint目標的進展,做出調整,從而優化次日的工作價值;Sprint評審和計劃會議檢驗釋出目標的進展,做出調整,從而優化下一個Sprint的工作價值;Sprint回顧會議是用來回顧已經完成的Sprint,並且確定做出什麼樣的改善可以使接下來的Sprint更加高效、更加令人滿意,並且工作更快樂。
4,Scrum術語
Scrum: Scrum無對應中文翻譯
Agile: 敏捷
Lean: 精益
Iterative:迭代式的
Iteration:迭代
Agile Manifesto: 敏捷宣言
Empirical: 經驗性的
Empirical Process:經驗性過程
Transparency: 透明性
Inspect and Adapt: 檢視與調整
Sprint:原意為衝刺,Scrum中的Sprint無對應中文翻譯,指一個迭代
Sprint Goal:Sprint目標
Product Owner :產品負責人 簡稱PO
Scrum Master :簡稱SM, 一般不翻譯
Development Team : Scrum開發團隊
Scrum Team:指PO,SM和開發團隊
Scrum Roles:Scrum角色,指PO,SM和開發團隊
Emergent :湧現的
Product Backlog:產品待辦列表,指需求清單
Sprint Backlog:Sprint待辦列表,指Sprint任務清單
Sprint Burn-down Chart:Sprint燃盡圖,團隊用於做Sprint內的進展跟蹤
Release Burn-down Chart: 釋出燃盡圖,產品負責人做釋出進展跟蹤
Sprint Planning Meeting: Sprint計劃會議
Daily Scrum Meeting:每日站會
Sprint Review Meeting:Sprint評審會議
Sprint Retrospective Meeting: Sprint回顧會議
Product Backlog Refinement: 產品待辦列表梳理
Product Backlog Item: 產品待辦清單條目,簡稱PBI
User Story: 使用者故事,指一條需求
Story Point:衡量使用者故事的工作量大小的計量單位
Velocity: 團隊速度
Sprint Task: 實現一條需求需要做的一個技術任務
Definition of Done: DoD,完成的定義
Stakeholders: 干係人
Backlog: 待辦列表
Artifact :工件
Estimation :估算
Collaboration: 協作
Scaling Scrum:大規模Scrum
5,總結
主要介紹了一個非常受歡迎的敏捷開發框架Scrum,它是一套開發和維護複雜產品的敏捷開發框架,是一個增量的、迭代的開發過程。Scrum的核心包括3個角色、3個工件、5個活動、5個價值。最後介紹了Scrum中常用的專業術語私釋義。
==============================================================================================
<如果對你有幫助,記得點一下推薦哦,如有有不明白或錯誤之處,請多交流>
<轉載宣告:技術需要共享精神,歡迎轉載本部落格中的文章,但請註明版權及URL>
軟體管理及.NET 技術交流群:467189533
==============================================================================================