精益看板管理和敏捷軟件開發(fā)
作者: 來源: 文字大小:[大][中][小]
看板的重要作用就是把傳統(tǒng)的推式生產(chǎn)轉(zhuǎn)變?yōu)槔瓌由a(chǎn),通過按需生產(chǎn)來減少浪費。對于看板我們一方面需要控制在制品數(shù)量,一方面是要考慮整個看板工序形成的流動速率。敏捷利用故事卡做為信息載體,采用拉動的方式組織開發(fā)。典型的信息流動過程是這樣的:需求=>故事卡=>用戶驗收測試=>單元測試=>開發(fā),這就是測試驅(qū)動開發(fā)的過程。故事卡是第一道看板,在開發(fā)過程中,看板是以測試的形式存在的,只有在看到失敗的測試時才開始編碼。故事卡既體現(xiàn)了客戶可識別的價值,又組織了團隊中所有角色的工作,這就像準時化生產(chǎn)中總裝車間的看板(要求生產(chǎn)一件成品的看板)的角色一樣,而用戶驗收測試和單元測試則類似總裝之前的各個生產(chǎn)單位的看板。故事卡與功能需求的不同之處就在于,故事卡試圖將團隊中所有角色(分析,測試,開發(fā))的工作圍繞自己在一個迭代中展開,同時在迭代結(jié)束的時候完成自己的使命,而功能需求是長期存在的,需要分解轉(zhuǎn)化為故事卡之后才能指導團隊的開發(fā)工作。因此說,故事卡和測試驅(qū)動開發(fā)使得軟件開發(fā)可以通過拉動的方式展開。
有了拉動,我們就可以看到敏捷故事卡在整個看板上的流動,對于每一個工序我們都有(ToDo,Doing,End)三種狀態(tài),每一個用戶場景在當前工序一完成后就會在看板上面進行移動,從上一個工序的End移動到下一個工序的ToDo,通過這種可視化看板的工序移動我們就很清楚當前的項目狀態(tài),以及當前的項目瓶頸出現(xiàn)在了哪個工序上面。
我們要意識到在軟件開發(fā)中的浪費沒有所謂的原材料,軟件開發(fā)最大的浪費就是人力資源的等待已經(jīng)我們開發(fā)完成工件的返工。對于第一個問題我們需要對瓶頸工序進行分析重新配置各工序資源的比例,對于第二個問題則需要引入一直迭代和持續(xù)交付的機制。
前面講到了通過用戶故事卡將開發(fā)中各個階段的各個角色有機的串聯(lián)在一起,同時引入測試驅(qū)動開發(fā)實現(xiàn)真正的拉式生產(chǎn)。另外就是要通過對故事卡的分類形成多個迭代版本,以實現(xiàn)我們期望的持續(xù)集成,迭代開發(fā)和多次交付。這是和傳統(tǒng)瀑布開發(fā)的一個重要區(qū)別,敏捷開發(fā)強調(diào)持續(xù)、穩(wěn)定地完成一個個對用戶有價值的,經(jīng)過集成的可用功能,而不是看是否做完了全部的設(shè)計工作,或是試圖測量開發(fā)人員每天編寫了多少行代碼、測試人員測了多少個Bug。每個用戶故事卡都是獨立可以交付的,能夠為創(chuàng)造用戶價值的功能點。故事卡在由各個看板組成的工序之間流動,故事卡很好的啟到了FDD特征驅(qū)動開發(fā)的作用,產(chǎn)品的完成是迭代的而不是傳統(tǒng)的增量模式。
從精益看板到敏捷,除了強調(diào)故事卡為核心
價值流和信息流的載體,
看板管理的核心要素外。我們還需要考慮以下問題以強化對看板的應用。
生命周期模型是如何的,工序如何劃分
如何通過歷史生產(chǎn)率確定資源的配置
項目的完成進度是否是以各個故事卡的最終完成比例確定的
是否對故事卡進行了群和組的劃分,以實現(xiàn)迭代交付
項目的實際進度和每個成員的在做工作在看板上都能夠體現(xiàn)
一個是團隊總的等待時間,一個是返工時間,如何消除浪費