2.SCRUM簡介[摘自網路]
SCRUM方法
由Ken Schwaber和 Jeff Sutherland 提出,旨在尋求充分發揮物件導向和構件技術的開發方法,是對迭代式物件導向方法的改進,名稱來自英式橄欖球(在比賽中每個隊員都應時刻保持對場上全域性的判斷,然後透過集體行動,奮力實現同一目標──勝利)。
SCRUM方法最初實踐於Easel公司(1993年),現已被數十家公司數百個專案開發中應用,適用於需求難以預測的複雜商務應用產品的開發[11]。SCRUM提出的SCRUM Meeting、Sprint、Backlog、SCRUM Master、SCRUM Team、Demo等模式已被PLOP作為組織和過程模式(Organizational and Process Pattern)的標準[12]。
SCRUM將工業過程控制中的概念應用到軟體開發中來,認為軟體開發過程更多是經驗性過程(Empirical Process),而不是確定性過程(Defined Process)。確定性過程是可明確描述的、可預測的過程,因而可重複(Repeatable)執行並能產生預期的結果,並能透過科學理論對其最最佳化。經驗性過程與之相反,應作為一個黑箱(Black box)來處理,透過對黑箱的輸入輸出不斷進行度量,在此基礎上,結合經驗判斷對黑箱進行調控,使其不越出設定的邊界,從而產生滿意的輸出。
SCRUM方法將傳統開發中的分析、設計、實施視為一個黑箱,認為應加強黑箱內部的混沌性,使專案組工作在混沌的邊沿,充分發揮人的創造力。如將經驗性過程按確定性過程來處理(如瀑布模型),必將使過程缺乏適應力。
SCRUM方法的開發過程
包括三個過程:
(1) 計劃和體系結構設計(確定性過程)
將Backlog(急待完成的一系列任務,包括:未細化的產品功能要求、Bugs、缺陷、使用者提出的改進、具競爭力的功能及技術升級等)按優先順序排序形成Backlog 列表,根據該表和風險評估制訂產品交付基線。
建立系統體系結構(如為已有系統改進,則只作有限分析、調整),將Backlog項按高內聚低耦合的原則分解為一系列問題包(Packets,每個Packet是一組物件或構件的集合) ,依據同樣原則相應劃分若干個開發小組(SCRUM Team),分配各小組合適的Backlog項或問題包。建立開發執行環境。
(2) Sprint(經驗性過程)
該過程由若干個迭代的疾跑(Sprint) 活動組成,直至風險評估認為產品可交付為止。一個Sprint是在限定時間段內(Sprint週期,通常為1~6周,可在前一個Sprint結束時調整)的一系列開發活動(包括分析、設計、編碼、測試等),每個SCRUM Team並行開發且必須步調一致(在一個Sprint結束後,均須完成所分配的Backlog項並有可執行的產出)。
每個Sprint包含以下活動:
A: 開發。對分配的Backlog工作進行分析,將所需改動(changes)對映到各packets,開啟packets,進行領域分析,然後設計、開發、實施、測試、文件化這些改動。
B:打包(Wrap)。封裝packets,產生一個滿足Backlog需求的可執行版本。
C:評審(Review)。所有的SCRUM小組一起開會,提交各自的工作並演示(Demo),然後提出和解決問題(Issue)及難點(problem),增加新的Backlog項;釋出、審查或調整產品的標準規範;進行風險評估並提出合適的對策;確定下一個Sprint的工作內容和結束時間。
D:調整(Adjust)。根據評審會彙集的資訊,對受影響的Packets進行適當調整和鞏固。
(3) 交付和鞏固(確定性過程)
一旦根據風險評估結果認為可交付產品時,即進入該階段。該階段的活動包括:組裝,系統測試和迴歸測試(Regression),準備培訓材料,完成最終文件。
SCRUM過程認為一個產品的開發將一直持續下去,除非經風險評估後認為應停止。產品交付後的鞏固活動類似於傳統方法中的維護和改善,目的在於整理Sprint期壓力下忽略的工作,為下一階段的開發做準備,以便輕裝上陣。
SCRUM對過程的管理:
(1) SCRUM的控制手段。
SCRUM提出了八個控制項(Controls)用於開發過程的調控,其中風險控制是首要的手段。
A:Backlog。
B:物件/構件。
C:Packets。
D:變動(Changes)。實施一個Backlog項時,對相應Packet的改動。
E:難點(Problems)。實施一個變動時所必須解決的技術難點。
F:問題(Issues)。涉及到整個專案或在Backlog項分解到Packet之前須解決的問題。
G:措施(Solutions)。對問題或難點的解決,通常會導致變動。
H:風險(Risks)。影響專案成功的風險,應持續跟蹤評估並相應做出調整。風險評估的結果將影響其他所有控制項。SCRUM定義了六個概念性變數來用於風險評估:使用者需求,時間壓力,競爭,質量,遠見(vision)和可用資源。
在SCRUM的各個階段都使用這些控制項來評估和權衡,管理人員側重於以此管理Backlog,開發組用以處理變動和難點。所有人員一起來管理問題、風險和措施。
根據對控制項特別是風險的不斷度量評估和權衡,一方面,計劃和進度(在每個Sprint結束時)不斷相應調整,保證實現產品的商務目標;另一方面,對開發中的工作任務Backlog動態地進行優先順序排序,開發組總是先開發優先順序最高的Backlog項,這樣就保證了資源的最合理使用。另外,SCRUM強排程量(採用標準功能點度量方法)的重要性,透過對每個Sprint中生產率等的度量,計劃和進度將越來越趨於準確。
(2) 專案組織。
專案組由全職開發人員及與該交付產品有關的市場人員、銷售人員、使用者等組成。設以下小組:
A:專案管理組。由產品經理領銜,包括總設計師,各SCRUM小組組長,市場、銷售的高階職員及典型使用者等。
B: 若干個SCRUM小組。各小組由組長(SCRUM Master)領銜。每個小組都是跨專業的(通常包括開發人員,文件人員,質量控制人員或使用者代表等),通常為3~7人,以使小組內有充分的交流。小組的劃分最好是功能導向的(按所分配的問題包或Backlog),也可是系統層次導向(按體系結構中的分層)。.
在專案組人數增大時,可在管理組之上再設管理組(SCRUM of SCRUM),從而使SCRUM方法的應用到大專案中。
(3) Sprint期間的調控。
在Sprint期間,應使各SCRUM小組儘量避免外界的干擾(不可將新的Backlog任務加進來,組內產生的Backlog可放到整個專案的Backlog列表中,也可在本次Sprint中解決),使小組成員專心於目前的工作,使他們工作在混沌的邊沿。
為避免專案組在Sprint期間不陷入混亂,SCRUM採取兩個措施:
A:SCRUM會議(SCRUM Meeting)。對小組行為進行監控和刺激。會議在Sprint期間每天在同一地點舉行,由SCRUM Master主持。會議上,SCRUM Master對每個小組成員提三個問題:
1) 昨天的工作進展如何。
2) 有否遇到困難和障礙。
3) 今天的工作打算。
會後SCRUM Master集中精力排除障礙,小組成員則進行當天的開發。
B:Sprint評審會議。評審後根據對每人的工作成績,進行相應的激勵。
SCRUM方法的實踐效果和發展方向
SCRUM在實踐中大大提高了生產率(據軟體生產率組織的Capers Jones稱可提高6倍),在實施中有一個"間斷平衡"(Punctuated equilibrium)現象(類似於自然界中物種的進化,在經過一段相對平衡的各自獨立、並行的發展期後,在交匯處發生變異),即在經過緊張、並行的Sprint開發後,在Sprint評審時,軟體產品產生較劇烈的變化。SCRUM方法的最近動向是設法借鑑XP方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/725190/viewspace-244125/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Scala 簡介 [摘自 Scala程式設計 ]程式設計
- 6.CRUD[摘自網路]
- 14.太歲[摘自網路]
- Javascript 閉包——摘自網路JavaScript
- 13.C# 特性[摘自網路]C#
- Repeater 的分頁 (摘自網路)
- 網際網路協議簡介協議
- LogMiner相關知識(摘自網路)
- .NET處理HTTP請求——摘自網路HTTP
- 深度前饋網路簡介
- 人工神經網路簡介神經網路
- 南京銘岱網路簡介
- 網路圖形格式簡介
- 7.消除頭痛十要素[[摘自網路]
- 機器學習之神經網路簡介:剖析機器學習神經網路
- 網路 IO 模型簡單介紹模型
- 簡單介紹網路(伺服器)線路伺服器
- 【網路協議】TCP協議簡介協議TCP
- Machine Learning:神經網路簡介Mac神經網路
- 《元宇宙:網際網路新未來》簡介元宇宙
- 簡單的圖神經網路介紹神經網路
- 實戰生成對抗網路[1]:簡介
- NIS網路資訊系統簡介(轉)
- SQLPLUS中幾個常用命令———摘自網路SQL
- HCNA,華為認證網路工程師簡介工程師
- Windows 2000 Server網路元件簡介(轉)WindowsServer元件
- 11. 刪除WORD中的紅色批註[摘自網路]
- windows 基於套接字傳送偽造IP包——摘自網路Windows
- [面試∙網路] TCP/IP(六):HTTP 與 HTTPS 簡介面試TCPHTTP
- caffe 網路結構幾個部分簡單介紹
- 計算機網路之TCP/IP協議簡介計算機網路TCP協議
- 神經網路簡介--啟用函式、網路架構、生物模型解釋神經網路函式架構模型
- 構建物聯網網路的4個關鍵步驟簡介
- 簡要介紹Linux網路服務的種類Linux
- [面試∙網路] TCP/IP(四):TCP 與 UDP 協議簡介面試TCPUDP協議
- 貝葉斯推斷及其網際網路應用(一):定理簡介
- dba日常維護過程介紹 摘自itpub精華帖
- Linux下3種常用的網路測速工具簡介Linux