1. 程式人生 > >敏捷需要迭代和增量 - Why Scrum Process is Iterative and Incremental?

敏捷需要迭代和增量 - Why Scrum Process is Iterative and Incremental?

[Source: 由邁克·科恩]

與所有敏捷流程一樣, scrum 既是迭代的, 也是增量的。由於這些詞在沒有定義的情況下經常使用, 讓我們定義它們。

開發團隊首先在系統中進行切割,知道在一些(可能很多)區域中它是不完整或弱的。然後,團隊反覆精煉這些區域,直到產品令人滿意為止。通過每次迭代,通過新增更多細節來改進軟體。

例如, 在第一次迭代中, 可以對搜尋螢幕進行編碼, 以便僅支援最簡單的搜尋型別。第二個迭代可能會新增其他搜尋條件。最後, 第三次迭代可能會增加錯誤處理。

一個很好的類比是雕刻。首先, 雕塑家選擇一塊大小合適的石頭。接下來, 雕刻家雕刻的一般形狀從石頭。在這一點上, 人們也許可以分辨頭部和軀幹, 並發現完成的工作將是一個人的身體, 而不是一隻鳥。接下來, 雕塑家通過新增細節來完善她的作品。然而, 在整個作品完成之前, 雕塑家不可能把任何一個區域看作是完整的。

增量過程是構建軟體並將其成片交付的過程。每個部分或增量, 表示功能的完整子集。增量可以是小的, 也可以是大的, 可能從小端的系統登入螢幕到一組高度靈活的資料管理螢幕。

每個增量都經過了完全編碼和測試, 共同的期望是迭代的工作不需要重新討論。一個增量雕塑家會選擇她作品的一部分, 完全專注於它, 直到它完成。她可以選擇小的增量 (首先是鼻子, 然後是眼睛, 然後是嘴巴, 等等) 或大的增量 (頭部、軀幹、腿, 然後是手臂)。但是, 無論增量大小如何, 增量雕刻師都會嘗試儘可能完整地完成該增量的工作。

scrum 和敏捷既是增量的, 也是迭代的。它們是迭代的, 因為它們計劃在後續迭代中改進一個迭代的工作。它們是增量的, 因為已完成的工作是在整個專案中交付的。

為了更好地說明迭代和增量之間的差異, 讓我們考慮以迭代方式構建約會網站, 但不是增量構建。為此, 團隊將在網站的每個部分 (配置檔案管理、搜尋、廣告等) 中構建一點。然後, 該小組將重新審視所有部分, 對每個部分進行改進。

然後, 該小組將再次重新審視所有部分, 作出進一步改進。以這種純粹的迭代方式, 整個網站變得更好一些。

接下來, 考慮使用純增量 (而不是迭代過程) 開發同一個站點。如果約會網站是以增量方式構建的, 團隊將在網站的任何其他部分開始之前構建和完善配置檔案管理。然後, 他們會建造和完善第二個區域, 比如搜尋, 然後進入第三個區域。在下一個區域開始之前, 每個功能區域都將變得完美。

迭代和增量都不是那麼偉大。但在一起--就像他們和 scrum 在一起一樣--他們非常棒。

初學者的 scrum 閱讀列表