Visual Studio 2010敏捷利劍:詳解Scrum
隨著微軟Visual Studio 2010 Ultimate Beta2版本的發(fā)布,除了它提供協(xié)同一致的ALM(應(yīng)用程序生命周期)管理工具外,MSF for Agile Software Development過程框架從4.2升級(jí)到5.0,并且是以Scrum模型為基礎(chǔ)導(dǎo)向擴(kuò)展,并且結(jié)合了VSTS 2010工具的眾多特性,從而成為微軟.NET相關(guān)技術(shù)人員手中不可多得的利器。
1.引言
道是天地萬(wàn)物演變的本體或本原,是存在之根本。一個(gè)行業(yè)或者一個(gè)事物既然現(xiàn)實(shí)地存在著,那么它的發(fā)展必然遵循著本身的自然規(guī)律。軟件開發(fā)的敏捷之道也是如此,當(dāng)開發(fā)團(tuán)隊(duì)為了求得高質(zhì)量、高效的完成軟件產(chǎn)品的交互過程,無論項(xiàng)目管理者還是團(tuán)隊(duì)成員都需要全方面地學(xué)習(xí),包括工具的熟練使用、學(xué)習(xí)UML、OOAD等技術(shù)和收集前人開發(fā)過程中的經(jīng)驗(yàn)等等,從而使個(gè)人以及 團(tuán)隊(duì)綜合素質(zhì)的大大增強(qiáng),這就是為學(xué)的過程,最后把這些零碎無序的知識(shí)系統(tǒng)化后再全部統(tǒng)統(tǒng)忘掉,達(dá)到出手無招、隨心所欲,全是下意識(shí)自然而然的行動(dòng),無變之變,這就是敏捷之道,這可能就是做項(xiàng)目管理及開發(fā)的最高境界吧!
敏捷的含義就是速度的最大化。當(dāng)你咖啡杯從你的手中悄然滑落的時(shí) 候,你卻下意識(shí)地接到了它,這種直線運(yùn)動(dòng)是最快的,其實(shí)里面蘊(yùn)藏著一種意境和思想。這種下意識(shí)就是一種境界思維,它沒有經(jīng)過大腦,條件反射的方式以最短最 快的速度取得了結(jié)果。
這種現(xiàn)象又讓筆者又聯(lián)想起了李小龍的截拳道,它的一個(gè)特點(diǎn)就是充分運(yùn)用節(jié)約的經(jīng)濟(jì)線(兩點(diǎn)間的直線)的技 擊原理,所以它打擊對(duì)方的機(jī)會(huì)和實(shí)用性最佳,而且最快,這種下意識(shí)的境界就是一種太極哲理,搏擊之最高境界。萬(wàn)物皆有道,這都是從道的本體中演化出來的!
2.敏捷之簡(jiǎn)易
簡(jiǎn)單通常是一個(gè)好的設(shè)計(jì)具備特征,這些設(shè)計(jì)是經(jīng)典的并且很難再改進(jìn)的。敏捷團(tuán)隊(duì)注重簡(jiǎn)易,這樣做可以消除那些沒必要的復(fù)雜。只需專注于開發(fā)當(dāng)前所 需要的功能和最簡(jiǎn)單的設(shè)計(jì)。如果能使用簡(jiǎn)單來幫助一個(gè)敏捷團(tuán)隊(duì)開發(fā)出馬上就需要的軟件,而不浪費(fèi)人力和資源,這就是他們給那些投資的用戶以最好和最直接利 益的方法。
我們?cè)購(gòu)摹兑捉?jīng)》中的簡(jiǎn)易、變易、不易的角度思考,可以把它看做是對(duì)易理的高度抽象易理對(duì)宇宙的高度抽象 簡(jiǎn)易指變與不變都是道的體現(xiàn),自然而然而非刻意求變,萬(wàn)事萬(wàn)物都只是按其本性生生不息而已。所以,簡(jiǎn)易之理是對(duì)大自然萬(wàn)事萬(wàn)物高度的抽象;變 易是指變化,任何生生不息都是處在不斷的變化之中,沒有停止過,宇宙中的萬(wàn)物沒有一樣?xùn)|西是不變的;不易是指萬(wàn)事萬(wàn)物的變化都有其不變的本 性,同時(shí)又有當(dāng)變則變、不當(dāng)變則不變的含義。宇宙中萬(wàn)事萬(wàn)物雖然不斷變化著,但是卻有一項(xiàng)永遠(yuǎn)不變的東西存在,就是能變出萬(wàn)事萬(wàn)物的那個(gè)東西,是 永恒存在的,中國(guó)傳統(tǒng)哲學(xué)里稱之為道。
3.Scrum 敏捷過程模型
在Visual Studio 2010中,項(xiàng)目過程模板變化很大,微軟把Scrum作為基本Agile開發(fā)模型(Scrum模型為基礎(chǔ)參考導(dǎo)向),如圖所示。TFS2010中集成了 MSF for Agile Software Development v5.0,可操作性上又融合了敏捷等軟件開發(fā)流程思想模型。
Scrum最初的含義是英式橄欖球爭(zhēng)球隊(duì),是敏捷軟件開發(fā)模型中的一種。Scrum 將軟件開發(fā)團(tuán)隊(duì)比擬成橄欖球隊(duì),有明確的最高目標(biāo),熟悉開發(fā)流程中所需具備的最佳技術(shù),具有高度自主權(quán),緊密地溝通合作,以高度彈性解決各種挑戰(zhàn),確保每天、每個(gè)階段都明確的朝向目標(biāo)推進(jìn)。Scrum令人痛苦之處就在于你不得不根據(jù)自己的具體情況來對(duì)它進(jìn)行調(diào)整,如果能夠隨心所欲應(yīng)變,那么你就會(huì)體會(huì)到它的強(qiáng)大。
敏捷Scrum開發(fā)過程框架中,產(chǎn)品backlog是 Scrum的核心,也是一切的起源。從根本上說,它就是一個(gè)需求、或故事、或特性等組成的列表,按照重要性的級(jí)別進(jìn)行了排序。它里面包含的是客戶想要的東 西,并用客戶的術(shù)語(yǔ)加以描述,通常叫它故事(story),有時(shí)候也叫做backlog條目:
我們的故事包括這樣一些字段:
ID:統(tǒng)一標(biāo)識(shí)符,就是個(gè)自增長(zhǎng)的數(shù)字而已,以防重命名故事以后找不到它們。
名稱(Name):簡(jiǎn)短的、描述性的故事名。它必須要含義明確,這樣可以跟其他故事區(qū)分開。
重要性:(Importance):產(chǎn)品負(fù)責(zé)人評(píng)出一個(gè)數(shù)值,指示這個(gè)故事有多重要。例如:
20或100,分?jǐn)?shù)越高越重要。避免優(yōu)先級(jí)這個(gè)說法,因?yàn)橐话阏f來優(yōu)先級(jí)1都表示最高優(yōu)先級(jí),如果后來有其他更重要的東西就麻煩了。它的優(yōu)先級(jí)評(píng)級(jí)應(yīng)該是什么呢?優(yōu)先級(jí)0?優(yōu)先級(jí)-1?
初始估算(Initial estimate):團(tuán)隊(duì)的初步估算,表示與其他故事相比,
完成該故事所需的工作量:最小的單位是故事點(diǎn)(story point),一般大致相當(dāng)于一個(gè)理想的人天(man-day)。
如何做演示(How to demo):它大略描述了這個(gè)故事應(yīng)該如何在sprint 演示上進(jìn)行規(guī)范,本質(zhì)就是一個(gè)簡(jiǎn)單的測(cè)試規(guī)范。
筆者借鑒過很多敏捷書籍和在實(shí)戰(zhàn)的應(yīng)用中嘗試過很多字段,但最后發(fā)現(xiàn),只有上面提到的六個(gè)字段我們會(huì)一直使用下去,這也就是一種最簡(jiǎn)化。我們可以把backlog存放在TFS2010服務(wù)器上,或者共享在TFS2010的Excel或者Project文檔里面,這是為了多個(gè)用戶可以同時(shí)編輯它。
在TFS2010中的Project Product Backlog模板
雖然正規(guī)意義上 這個(gè)文檔應(yīng)該歸產(chǎn)品負(fù)責(zé)人所有,但是我們并不想把其他用戶排斥在外,開發(fā)人員常常要打開這個(gè)文檔,弄清一些事情,或者修改估算值。VSTS 2010已經(jīng)支持Scrum的Product Backlog的模板,并且可以進(jìn)行Backlog的迭代,如下圖所示。
打開Product Backlog,建立User Story,如圖所示。
編寫相關(guān)Story條目?jī)?nèi)容,如圖所示。
當(dāng)編寫完Story條目?jī)?nèi)容后,我們可以在Web端的Project Portal查看user story的內(nèi)容與條目。
在share point的Project Portal中,我們可以對(duì)該story進(jìn)行編輯等操作,如圖所示。
我們可以對(duì)表1進(jìn)行擴(kuò)展,如表2所示。
Backlog組件 ID Important Estimate How To Demo Notes
組件用處 事件的編號(hào) 事件的重要性,用一個(gè)分?jǐn)?shù)來表示。分?jǐn)?shù)越高越重要(但重要的事件,內(nèi)容不一定多) 初始的估算,也就是完成某個(gè)事件所需要的工作量。 事件的簡(jiǎn)單測(cè)試 用簡(jiǎn)潔的語(yǔ)句進(jìn)行注解、說明等。
Backlog組件 Track Components Requestor BugTrack
組件用處對(duì)產(chǎn)品的分類產(chǎn)品由哪些部份組成記錄最先提出的需求,并在后續(xù)的開發(fā)過程中進(jìn)行反饋。
注:有顏色的組件可以說是必需的!
在TFS2010中支持Reports的生成Excel報(bào)表,內(nèi)容包括backlog、工作項(xiàng)等。
選擇創(chuàng)建報(bào)表Excel生產(chǎn)類型
在Scrum敏捷框架中,最強(qiáng)的就是快速應(yīng)對(duì)客戶需求的靈活變化。Scrum中有四個(gè)很標(biāo)致性也很核心的詞:backlog , sprint、迭代、反饋。結(jié)合VSTS 2010的工具,可以快速進(jìn)行story的變化,并且快速完成。例如,在產(chǎn)品 BACKLOG(參考表1),在每個(gè)Spint中,實(shí)現(xiàn)特性How To Demo,通過VSTS 2010的Architecture繪制SSO統(tǒng)一登錄的UML順序(如圖所示),完成Spint Demo(可以是Spint中一部分)。
敏捷軟件開發(fā)的核心是:使用項(xiàng)目行為的輕 量但足夠的規(guī)則以及使用以人為本的規(guī)則及面向溝通的規(guī)則。Scrum的Sprint計(jì)劃會(huì)議非常關(guān)鍵,應(yīng)該算是Scrum中最重要的活動(dòng)(這當(dāng)然是我的 主觀意見)。要是它執(zhí)行的不好,整個(gè)sprint甚至都會(huì)被毀掉。
TFS2010集成平臺(tái)的開發(fā)項(xiàng)目的合作
Scrom敏捷過程管理實(shí)施流程,如圖所示。將整個(gè)產(chǎn)品的 backlog分解成Sprint Backlog,這個(gè)Sprint Backlog是按照目前的人力物力條件可以完成的。召開sprint planning meeting,劃分,確定這個(gè)Sprint內(nèi)需要完成的任務(wù),標(biāo)注任務(wù)的優(yōu)先級(jí)并分配給每個(gè)成員。注意這里的任務(wù)是以小時(shí)計(jì)算的,并不是按人天計(jì)算。進(jìn) 入sprint開發(fā)周期,在這個(gè)周期內(nèi),每天需要召開Daily Scrum meeting。整個(gè)sprint周期結(jié)束,召開Sprint review meeting,將成果演示給Product Owner.團(tuán)隊(duì)成員最后召開Sprint retrospective meeting,總結(jié)問題和經(jīng)驗(yàn)。這樣周而復(fù)始,按照同樣的步驟進(jìn)行下一次Sprint。
最終結(jié)果是,每個(gè)Sprint都產(chǎn)生出一個(gè)可 見的、可用的交付產(chǎn)品,并向用戶進(jìn)行展示。一個(gè)增量可能是中期的,也可能是可交付的,但是它應(yīng)該是獨(dú)立的。 Sprint的目標(biāo)是完成盡可能多的優(yōu)質(zhì)軟件來確實(shí)質(zhì)性進(jìn)展,而不是用紙上里程碑(paper milestones)作為依據(jù)。
4.Scrum 索引卡
在大多數(shù)sprint 計(jì)劃會(huì)議上,大家都會(huì)討論產(chǎn)品 backlog中的故事細(xì)節(jié)。對(duì)故事進(jìn)行估算、重定優(yōu)先級(jí)、進(jìn)一步確認(rèn)細(xì)節(jié)、拆分,等等都會(huì)在會(huì)議上完成。敏捷開發(fā)中提倡建立物理索引卡。要想收到好的效 果,不妨創(chuàng)建一些索引卡,把它們放到墻上。筆者在這里也有個(gè)擴(kuò)展方法,可以制作電子版的索引卡,如圖所示??梢?清晰、直觀的顯示燃盡圖和索引卡等信息。
5.總結(jié)
Visual Studio 2010的增強(qiáng)的功能特點(diǎn)結(jié)合MSF for Agile Software Development V5.0中的Scrum敏捷過程框架,使從事在微軟.NET技術(shù)相關(guān)工作方向的人們擁有了一把利劍。
如果我們把微軟Visual Studio 2010工具,看成是敏捷開發(fā)團(tuán)隊(duì)中,在不同階段中所使用的劍,隨著你的功夫和意境提高,你手中的利器就顯著不重要了,無劍的境界便是最高的追求。敏捷有時(shí)也為靈感所致,如果敏捷團(tuán)隊(duì)的人們能鍛煉出這種境界,便是軟件開發(fā)之最高境界,那就是敏捷之道了。所以,敏捷的開發(fā)團(tuán)隊(duì)也是講究天人合一(團(tuán)隊(duì)敏捷意識(shí)合而為一),敏捷也是哲學(xué)的。
內(nèi)因就是驅(qū)動(dòng)員工愿意干事情,要有內(nèi)在驅(qū)動(dòng)力。每個(gè)人敏感程度不同,給每個(gè)類型程序員的驅(qū)動(dòng)力也不同。所有的員工自動(dòng)自發(fā)的工作都是有內(nèi)因的,掃描你的團(tuán)隊(duì)成員屬于哪種類型。如果程序員是危機(jī)風(fēng)險(xiǎn)型,你就提供他創(chuàng)新的機(jī)會(huì)和平臺(tái),發(fā)揮他的最大內(nèi)因驅(qū)動(dòng)力等。當(dāng)然,這都必須結(jié)合外因才會(huì)可度量、可操作、可監(jiān)控和有目標(biāo)方向。
【編輯推薦】