1. 程式人生 > >用“看板圖”實現敏捷專案的視覺化

用“看板圖”實現敏捷專案的視覺化

在 敏捷專案裡,掛在牆上的“人人可見的大圖表”是一種普遍的實踐,它被用來共享專案的狀態並將之視覺化。精益系統裡也有這樣的設施。“看板”在日語裡的大意 是“卡片”或者“標誌”的意思。在精益生產系統裡,看板方法是給每個標準生產單元或者每個生產批量附上一張卡片。只有當一個“進行中”卡片所代表的工作完 成後,才會有一張新卡片被“拉”進系統。

    在本文中,我將探究當今敏捷專案中廣泛使用的各種視覺化方法,並提出用看板圖(Kanban Board)來組織三種視角(時間、任務和團隊),目的是使整個團隊都能理解專案的當前狀態,並以一種自發、有動力且互相合作的方式來工作。最後,我將介 紹“TRICHORD”這個 軟 件

工具,它用看板方法來實現這三個視角的專案視覺化。


    敏捷專案中的視覺化

    XP有一種實踐叫做“ 資訊化 的工作空 間”,從中你可以對專案的進行狀態一目瞭然[Beck05]。把故事卡和任務卡掛到牆上是這項實踐的一種簡陋實現方式。掛在牆上的其他圖表有時候也被稱為 “資訊輻射體”[Cockburn01]或者“人人可見的大圖表” [Jeffries04],它們在現今的敏捷專案空間設施裡已經是很常見了。下面,我將展示在日本的敏捷團隊中發現的一些視覺化的例子。

第 一個例子是任務看板圖(Task Kanban Board) ,它的名字來自TPS (Toyota Production System)所用的“Just-In-Time”(JIT)生產方式[Poppendieck03, 07]。

圖1:任務看板圖

看板是代表一項要完成的任務的標籤。在TPS中, 它被用來具體化Just-In-Time的“拉”生產控制。在圖1 裡,看板圖顯示了在本次迭代中要完成的所有任務的當 前狀態。任務用卡片(便箋紙)來代表,狀態則由板上分別標有“未做”、“正做”和“做完”的三個區域來代表。看板圖幫助團隊理解當前做得如何,以及下一步 要做什麼,令團隊能夠自我指導。

圖2 是另一種型別的看板圖,稱為“特性看板圖 (Feature Kanban Board) ” [Highsmith04]。

圖2:特性看板圖

表的橫軸代表時間線,線上的豎直區域代表釋出,在 區域中的卡片各自代表一項該次釋出中要實現的特性。第一個例子常在開發團隊中使用。跟第一個例子相比,特性看板圖為產品路線圖提供了一種更高層次的概觀, 因此分享範圍應該被擴大到整個大團隊,包括客戶、市場員工和 管理

層。

圖3 的“停 車場圖(Parking Lot Chart) ”被用來提供一種最高層次的對專案狀態的摘要總結(注意不要同另一種“停車場列表 (Parking Lot List)”弄混,那是一種用來幫助捕獲未解決的問題的工具)。它是在《Feature Driven Development》(FDD)[Palmer02]裡首次提出來的,現在已在敏捷專案中廣泛使用。有時候也被稱為“專案儀表板(Project Dashboard)”。

圖3:停車場圖

.圖4 所示的另 一種視覺化方式稱為燃盡圖(Burndown Chart)

圖4:燃盡圖

這種表在Scrum[Schwaber01]中首次提 出,用來顯示剩餘的未完成工作(backlog),現在已經蔓延到了大多數敏捷專案中[Cockburn04][Cohn05]。它抓住了專案的當前狀態 以及完成剩餘工作的進展比率。

圖5 所示的最後一種有意思的視覺化方式叫做表情日曆 (Niko-niko Calendar或Smiley Calendar),一種日本人的創造,它顯示了團隊成員每日的心情。當天工作結束後,每個人都在離開團隊空間之前往自己的日曆上畫一個表情符號 [Sakata06]。它從成員的精神健康和動力的角度來觀察專案。

圖5:表情日曆

用 看板圖作為主要的資訊輻射體

總而言之,以上提到的視覺化工具:

  • 用卡片作為任務、故事、特性的象徵(看板),並將 它們依附在時間線上(看板圖)。這裡存在不同的粒度。
  • 計算看板(未完成任務)的數目,分時間段來跟蹤它們,以顯示出工作的完成趨勢。這 裡也存在不同的粒度。
  • 總結最高層次上的專案狀態。
  • 除了表情日曆之外,還有很多日曆變種可以用來顯示專案的狀態或者計 劃。

注意在看板圖、燃盡圖和停車場圖三者之中,看板圖的資訊最詳細。燃盡圖和停車場圖可以用看板圖的每日變化資訊來繪製。因此 後面我將把看板圖作為主要的資訊輻射體,而用燃盡圖和停車場圖來作為輔助工具,形象地總結看板的變化趨勢。

從三個視角來組織看板

仔 細觀察看板圖,你會發現上面表達了三項主題——時間、任務和團隊。下面我嘗試從這三個視角來組織看板。

圖6:時間與任務的分解

1.時間

在敏捷專案裡, 專案時間首先被分解成若干“釋出”,每個釋出又被分解成若干“迭代”,每個迭代又分解成若干“工作日”。

  • 釋出的時間長度一般為1 到6個月,它是最粗粒度的時間單元。它是整個團隊的一個同步點,因此團隊中的每個人都應該對此感興趣。
  • 迭代是第二級的時間單元,長度一 般為1到4周。開發團隊用它來作為主要的工作、跟蹤和改進週期。
  • 工作日是最細粒度的時間單元,團隊每天在站立會議上聚集在一起交流專案 的狀態和問題。

2.任務

任務被分成三種粒度。我把最高層次的叫做“特性”,每個特性都被分解成若干“故 事”,而每個故事又被分解成若干最低層次的“任務”。

  • 特性是對使用者有用和有意義的一項功能。
  • 故事是特性的一個 可 測 試 的片斷,以使用者的語言來描述。
  • 任務是故事中的一個工作 單元,通常以開發者的語言來描述

3.團隊

專案團隊由為了共同目標而工作的人們組成。一般團隊的成員有一個經 理,若干客戶、程式設計師 、業 務分析員、使用者、測試員,以及其它利益相關的人。整個團隊都應該分享時間和任務資訊來達成專案的目標。

用看板圖為團隊將任務對映到時間

我 樂於將看板圖定義成一種團隊中任務與時間之間的對映。請注意“時間”和“任務”都可以分解成三個層次,分解的層次越高,應該牽扯到的管理層次就越高。所 以,按照“釋出—特性”、“迭代—故事”和“工作日—任務”的組合來設立看板是合理的,雖然其它時間與任務的組合也並非不可行。

表1:用看板結合時間與任務

“特性看板”的長處在於向全團隊提供項 目的一個高度抽象的視角。可以搭配停車場圖來顯示出最高層次的狀態。

“故事看板”處在中間層次,向團隊提供每次迭代的最廣泛周密的資訊,搭 配迭代的燃盡圖會更有效。

“任務看板”的層次最低,它顯示出每日變動的當前狀態,搭配每日的燃盡圖會更有幫助。

圖7:概觀——三種視角以及用看板圖將任務對映到時間

TRICHORD

我 們正在開發一個名為“TRICHORD”的敏捷 專案管理 工具。 TRI指的是三種視角(時間、任務和團隊),CHORD則是和諧的意思。

它作為全團隊分享專案狀態的一個工作空間來運作,如表1 所 示,裡面提供三種層次的看板圖——特性看板(釋出—特性)、故事看板(故事—迭代)和任務看板(工作日—任務)。特性看板用停車場圖來歸納,故事和任務看 板用燃盡圖來歸納。

圖8:TRICHORD(看板圖+燃盡圖+停車場圖)

另 外,TRICHORD有一個表情日曆服務用來給全團隊分享心情。它也是專案中的SNS交流中心,就像一個簡單的“twitter”。

圖9:TRICHORD表情日曆

TRICHORD用Eclipse RCP實現,可與Trac(問題跟蹤系統)協同工作。