什麼是Scrum?
Scrum的基本假設是:
開 發軟體就像開發新產品,無法一開始就能定義軟體產品最終的規程,過程中需要研發、創意、嘗試錯誤,所以沒有一種固定的流程可以保證專案成功。Scrum 將軟體開發團隊比擬成橄欖球隊,有明確的最高目標,熟悉開發流程中所需具備的最佳典範與技術,具有高度自主權,緊密地溝通合作,以高度彈性解決各種挑戰, 確保每天、每個階段都朝向目標有明確的推進。
Scrum 開發流程通常以 30 天(或者更短的一段時間)為一個階段,由客戶提供新產品的需求規格開始,開發團隊與客戶於每一個階段開始時挑選該完成的規格部分,開發團隊必須盡力於 30 天后交付成果,團隊每天用 15 分鐘開會檢查每個成員的進度與計劃,瞭解所遭遇的困難並設法排除。
二 Scrum較傳統開發模型的優點
Scrum模型的一個顯著特點就是響應變化,它能夠儘快地響應變化。下面的圖片使用傳統的軟體開發模型(瀑布模型、螺旋模型或迭代模型)。隨著系統因素(內部和外部因素)的複雜度增加,專案成功的可能性就迅速降低。
下圖是Scrum模型和傳統模型的對比:
三 Scrum模型
一) 有關Scrum的幾個名詞
backlog: 可以預知的所有任務, 包括功能性的和非功能性的所有任務。
sprint:一次跌代開發的時間週期,一般最多以30天為一個週期.在這段時間內,開發團隊需要完成一個制定的backlog,並且最終成果是一個增量的,可以交付的產品。
sprint backlog:一個sprint週期內所需要完成的任務。
scrumMaster: 負責監督整個Scrum程式,修訂計劃的一個團隊成員。
time-box: 一個用於開會時間段。比如每個daily scrum meeting的time-box為15分鐘。
sprint planning meeting: 在啟動每個sprint前召開。一般為一天時間(8小時)。該會議需要制定的任務是:產品Owner和團隊成員將backlog分解成小的功能模組, 決定在即將進行的sprint裡需要完成多少小功能模組,確定好這個Product Backlog的任務優先順序。另外,該會議還需詳細地討論如何能夠按照需求完成這些小功能模組。制定的這些模組的工作量以小時計算。
Daily Scrum meeting:開發團隊成員召開,一般為15分鐘。每個開發成員需要向ScrumMaster彙報三個專案:今天完成了什麼? 是否遇到了障礙? 即將要做什麼?通過該會議,團隊成員可以相互瞭解專案進度。
Sprint review meeting:在每個Sprint結束後,這個Team將這個Sprint的工作成果演示給Product Owner和其他相關的人員。一般該會議為4小時。
Sprint retrospective meeting:對剛結束的Sprint進行總結。會議的參與人員為團隊開發的內部人員。一般該會議為3小時。
二)實施Scrum的過程簡單介紹
1) 將整個產品的backlog分解成Sprint Backlog,這個Sprint Backlog是按照目前的人力物力條件可以完成的。
2) 召開sprint planning meeting,劃分,確定這個Sprint內需要完成的任務,標註任務的優先順序並分配給每個成員。注意這裡的任務是以小時計算的,並不是按人天計算。
3) 進入sprint開發週期,在這個週期內,每天需要召開Daily Scrum meeting。
4) 整個sprint週期結束,召開Sprint review meeting,將成果演示給Product Owner.
5) 團隊成員最後召開Sprint retrospective meeting,總結問題和經驗。
6) 這樣周而復始,按照同樣的步驟進行下一次Sprint.
整個過程如下圖所示:
The diagrams in this article are all from web site: http://www.controlchaos.com. Thanks very much!
參考:
http://www.controlchaos.com/about/
http://www.microsoft.com/Taiwan/msdn/columns/200311softdev.htm
注:以上內容來網路,本人不承擔任何連帶責任
文章轉自:http://www.cnblogs.com/Ring1981/archive/2006/09/07/496591.html
相關文章
- 什麼是Scrum中的3355Scrum
- 為什麼Scrum不行?Scrum
- Scrum轉型(一) 為什麼敏捷和ScrumScrum敏捷
- 活在偉大的Scrum團隊是什麼感覺Scrum
- 為什麼要擁抱Scrum——我的Scrum心路歷程Scrum
- 為什麼Scrum變得不那麼重要了? - LogRocketScrum
- 什麼是cookie,什麼是sessionCookieSession
- 什麼是DNS,什麼是HostsDNS
- 什麼是模式? 什麼是框架?模式框架
- 這是什麼這是什麼
- 什麼是WebAuthn、FIDO 是什麼?Web
- ITIL是什麼意思?ITIL是什麼?
- 什麼是跨域,什麼是同源跨域
- 什麼是.NET平臺、什麼是c#、什麼是ASP.NET。C#ASP.NET
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ###什麼是Linux核心###什麼是MMULinux
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 什麼是塊元素?什麼是行內元素?
- 什麼是API介面,具體是什麼意思?API
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 什麼是Unicode,什麼是UTF-8Unicode
- 什麼是藍海?什麼是紅海?什麼是網際網路思維?
- nginx 是什麼,能幹什麼?Nginx
- 什麼是Django?有什麼用途?Django
- AI三重問:什麼是AI?什麼是AI模型?什麼是AI大模型?AI大模型
- 什麼是重繪repaint?什麼是迴流reflow?AI
- DHCP是什麼?DHCP伺服器是什麼意思?伺服器
- 什麼是CDN?CDN的技術原理是什麼?
- 交換機是什麼,它的工作原理是什麼
- GNU是什麼?和Linux是什麼關係?Linux
- 域名是什麼?申請域名的流程是什麼?
- 什麼是雲端計算?什麼是公司網盤?
- 什麼是eval()?eval是用來幹什麼的?
- Scrum是脆弱的,不敏捷的Scrum敏捷
- 什麼是 Nginx?Nginx