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