本系列的第1篇【用戶故事驅(qū)動(dòng)的敏捷開發(fā) – 1. 計(jì)劃篇】跟大家分享了如何使用用戶故事來幫助團(tuán)隊(duì)創(chuàng)建需求的進(jìn)程,在這1篇中,我們來看看如何使用這些用戶故事和功能點(diǎn)構(gòu)成產(chǎn)品backlog。產(chǎn)品backlog是敏捷開發(fā)中用來管理需求列表,排定優(yōu)先級(jí),構(gòu)成迭代計(jì)劃,組織開發(fā)/測(cè)試和交付進(jìn)程的工具。可以說,產(chǎn)品backlog是1個(gè)敏捷團(tuán)隊(duì)管理開發(fā)進(jìn)程的核心,所有的活動(dòng)和交付物都圍繞backlog來進(jìn)行。1旦需求明確,我們就必須在開發(fā)進(jìn)程中延續(xù)的跟蹤backlog內(nèi)容的實(shí)現(xiàn)和交付進(jìn)程,確保我們的想法可以依照我們希望的時(shí)間和質(zhì)量交付,及時(shí)了解偏差并做出調(diào)劑。
從這個(gè)時(shí)間點(diǎn)開始,我們需要引入電子化工具來管理我們的開發(fā)進(jìn)程。其實(shí),每一個(gè)開發(fā)團(tuán)隊(duì)都會(huì)或多或少的使用某種電子化工具,用最多的估計(jì)是Word/Excel/Project這類辦公軟件,還有就是如Jira, Redmine, Bugzilla 等工具。對(duì)軟件研發(fā)來講,我們需要管理內(nèi)容包括:1)需求/任務(wù)/測(cè)試用例/Bug/問題等工作事項(xiàng);2)源代碼;3)各種計(jì)劃,包括迭代計(jì)劃,發(fā)布計(jì)劃,測(cè)試計(jì)劃等;4)各種工件(包括:依賴包/在制品/交付物),如:JAR包,WAR包,NuGet包,NPM包,安裝包,交付包等;5)人員/團(tuán)隊(duì)。所以,對(duì)軟件研發(fā)管理系統(tǒng)來講,我們最少需要這些功能:1)工作項(xiàng)跟蹤;2)計(jì)劃制定和跟蹤;3)人員(包括權(quán)限)管理;4)源代碼管理;5)自動(dòng)化引擎。
很多敏捷教練其實(shí)對(duì)電子化工具持保存態(tài)度,覺得電子化的backlog或kanban等工具會(huì)影響團(tuán)隊(duì)的參與感和靈活性。對(duì)這1點(diǎn),我也同意,特別是在進(jìn)行創(chuàng)造的進(jìn)程中,我也不同意使用電子化工具。主要緣由是創(chuàng)造的進(jìn)程需要群策群力,需要每一個(gè)團(tuán)隊(duì)成員都有參與感,需要每一個(gè)人可以隨時(shí)對(duì)用戶故事做出改變,這樣的進(jìn)程如果使用電子化工具會(huì)很受限制。
但是,電子化工具依然有其不可替換的用武之地,特別是我們需要進(jìn)行延續(xù)的跟蹤和數(shù)據(jù)分析的時(shí)候,電子化工具就顯示出它的優(yōu)勢(shì);同時(shí),如果你的團(tuán)隊(duì)散布在不同的物理地點(diǎn),那末使用電子化工具就成為1種必定。由于這些場(chǎng)景都是物理板沒法發(fā)揮作用的時(shí)候。另外,斟酌到軟件開發(fā)進(jìn)程的復(fù)雜性和各個(gè)部份只見關(guān)聯(lián)性很強(qiáng),如果沒有電子化工具的輔助,是很難支持1個(gè)團(tuán)隊(duì)的開發(fā)工作的。
在我?guī)ьI(lǐng)團(tuán)隊(duì)使用用戶故事地圖的進(jìn)程中,隨著用戶故事數(shù)量的增加,我發(fā)現(xiàn)團(tuán)隊(duì)開始迷失功能點(diǎn)與故事之間關(guān)聯(lián)性,分解出來的功能點(diǎn)被淹沒在不同的模塊當(dāng)中了,用戶故事已開始漸漸消失了。這是個(gè)非常不好兆頭,所以我在這個(gè)時(shí)候開始要求團(tuán)隊(duì)引入電子化工具。
為了能夠更好的說明這個(gè)進(jìn)程,在這個(gè)系列中我使用【鳳凰項(xiàng)目:1個(gè)IT運(yùn)維的傳奇故事】這本書為背景的ASP.NET 5樣例利用,創(chuàng)建了1些用戶故事
關(guān)于【鳳凰項(xiàng)目:1個(gè)IT運(yùn)維的傳奇故事】:本書講述了1位IT經(jīng)理臨危受命,在未來董事的幫助和自己“3步工作法”理念的支持下,終究挽救了1家具有悠久歷史的汽車配件制造商的故事。 小說揭露了管理現(xiàn)代IT組織與管理傳統(tǒng)工廠的共通的地方,讓讀者不但能對(duì)如何管理IT組織心照不宣,更重要的是將以完全不同于以往的視角看待自己的工作環(huán)境。
可以通過以下鏈接購買這本書的中文版:http://item.jd.com/10034038960.html
這個(gè)樣例利用可以通過以下地址訪問:
http://pucd.chinacloudsites.cn/
這是1個(gè)簡(jiǎn)單的電子商務(wù)網(wǎng)站原型,具有產(chǎn)品列表,購物車,后臺(tái)管理,促銷和定單處理等電子商務(wù)網(wǎng)站的基本功能。你可以閱讀1下這個(gè)網(wǎng)站,對(duì)其中的功能簡(jiǎn)單了解1下。
以下是我使用影響地圖和用戶故事地圖整理出來的故事列表,每張圖片的左邊是影響地圖,列出1個(gè)故事;右邊是這個(gè)故事所分解出來的功能點(diǎn)擺放在用戶故事地圖上的的效果。
上面5個(gè)用戶故事所分解出來的功能點(diǎn)我分別使用不同色彩在故事地圖上進(jìn)行了標(biāo)注,你可以看到當(dāng)故事不停增加的時(shí)候,這個(gè)地圖會(huì)漸漸變得非常龐大而復(fù)雜,分辨出用戶故事變得愈來愈難。
Team Foundation Server (TFS) 是微軟公司的研發(fā)管理平臺(tái),其中提供了從需求管理,項(xiàng)目管理,配置(源代碼)管理,測(cè)試管理,代碼編譯延續(xù)集成,自動(dòng)化測(cè)試,自動(dòng)化發(fā)布及部署環(huán)境管理在內(nèi)的研發(fā)運(yùn)維1體化(DevOps)的完全工具鏈。微軟自己的大多數(shù)產(chǎn)品都在使用這個(gè)平臺(tái)進(jìn)行研發(fā)管理,其中也對(duì)敏捷開發(fā)提供了很好的支持。
在整理用戶故事的進(jìn)程中,我們可以先使用Excel來記錄這些用戶故事和功能點(diǎn),同時(shí)記錄每一個(gè)功能點(diǎn)所屬的功能區(qū)域,構(gòu)成類似以下的文檔。
以上表格中,我們用2維表的方式保存了用戶故事地圖上的所有關(guān)鍵信息,在導(dǎo)入到TFS的時(shí)候需要注意:
首先,在TFS中依照功能區(qū)域和模塊創(chuàng)建區(qū)域路徑,對(duì)應(yīng)到用戶故事地圖頂部的分類信息
現(xiàn)在我們就能夠?qū)⑽覀兊挠脩艄适聦?dǎo)入到TFS中,
關(guān)于如何使用Excel批量導(dǎo)入和更新工作項(xiàng),請(qǐng)參考:https://msdn.microsoft.com/en-us/library/vs/alm/work/office/bulk-add-modify-work-items-excel
構(gòu)成的backlog以下,你可以看到TFS很好的保護(hù)了我們的用戶故事到功能點(diǎn)之間的聯(lián)系,同時(shí)也保存了每一個(gè)功能點(diǎn)所對(duì)應(yīng)的功能區(qū)域,這樣就把用戶故事地圖上的關(guān)鍵數(shù)據(jù)進(jìn)行了很好的保護(hù),便于我們從不同的角度來查看和跟蹤。
導(dǎo)入的工作項(xiàng)用不同的字段保存了用戶故事地圖上的關(guān)鍵信息:
固然,你依然需要對(duì)每一個(gè)用戶故事工作項(xiàng)和功能點(diǎn)工作項(xiàng)進(jìn)行進(jìn)1步完善,將團(tuán)隊(duì)在討論進(jìn)程中所產(chǎn)出的信息進(jìn)行記錄,比如:每一個(gè)用戶故事需要包括用戶背景,操作流程圖,交互設(shè)計(jì)原型;每一個(gè)功能點(diǎn)需要包括數(shù)據(jù)字典,輸入輸出,數(shù)據(jù)驗(yàn)證,界面原型等。這些內(nèi)容可以直接填寫在工作項(xiàng)的 說明 字段,或使用附件的情勢(shì)上傳到工作項(xiàng)上統(tǒng)1保存。
在計(jì)劃篇中,我強(qiáng)調(diào)過用戶故事所重視的是它所驅(qū)動(dòng)的進(jìn)程,而不是那份文檔。但是,我們依然需要將團(tuán)隊(duì)討論中所產(chǎn)生的關(guān)鍵信息進(jìn)行詳細(xì)的記錄,這樣便于團(tuán)隊(duì)在后續(xù)的開發(fā)中回想起討論的細(xì)節(jié)。這些信息在看板或白板這類物理工具上是沒法表達(dá)和保存的,所以這個(gè)時(shí)候引入電子化工具恰到好處。
我們所導(dǎo)入的故事和功能點(diǎn)將構(gòu)成后續(xù)開發(fā)所使用的backlog,便于團(tuán)隊(duì)對(duì)這些內(nèi)容進(jìn)行優(yōu)先級(jí)排序,迭代計(jì)劃,任務(wù)分解,測(cè)試計(jì)劃的制定,測(cè)試用例的分解等等。也就是說,后續(xù)的軟件研發(fā)進(jìn)程均會(huì)依照我們導(dǎo)入的backlog作為主線進(jìn)行。這樣,團(tuán)隊(duì)既可以依照用戶的角度來抽取出相應(yīng)的功能點(diǎn),也能夠從產(chǎn)品模塊的角度查看功能列表和影響這些模塊的用戶需求,保證團(tuán)隊(duì)在滿足用戶需求與架構(gòu)優(yōu)化演進(jìn)之間做出取舍,為團(tuán)隊(duì)建立起完全的需求跟蹤視圖(有很多團(tuán)隊(duì)會(huì)稱之為需求跟蹤矩陣)。
見下圖,我們之前所做的其實(shí)就是建立的圖中的 架構(gòu)模型 和 條目化需求 部份的內(nèi)容,同時(shí)在這兩部份內(nèi)容之間建立的聯(lián)系,這些是建立1個(gè)軟件研發(fā)管理系統(tǒng)的源頭。
至此,我們就完成了用戶故事到產(chǎn)品backlog的轉(zhuǎn)化,下1篇中將介紹如何完成開發(fā)和測(cè)試計(jì)劃的制定,并開始引入Kanban來跟蹤開發(fā)進(jìn)程。
注:以上場(chǎng)景是【DevOps敏捷開發(fā)動(dòng)手實(shí)驗(yàn)】的1部份,請(qǐng)點(diǎn)擊以下鏈接訪問這個(gè)動(dòng)手實(shí)驗(yàn)的指點(diǎn)文檔:
http://vsalm-hols.readthedocs.org/
參考資料:
有關(guān)用戶故事地圖:
http://devopshub.cn/2016/01/10/user-story-mapping-for-the-first-time/
http://devopshub.cn/2016/01/11/how-to-create-user-story-mapping/
有關(guān)Team Foundation Server:
http://vsalm-hols.readthedocs.org/zh_CN/latest/concepts/about-vsalm.html
下一篇 C#之三十七 實(shí)體類