在互聯(lián)網(wǎng)時(shí)代,交付速度是當(dāng)今軟件開(kāi)發(fā)的主題。十年前,項(xiàng)目通常要持續(xù)好幾年,并且項(xiàng)目階段是以月來(lái)衡量的。如今,多數(shù)團(tuán)隊(duì)的項(xiàng)目周期是按月來(lái)衡量的,而項(xiàng)目階段則減少到幾周甚至幾天。任何需要長(zhǎng)遠(yuǎn)規(guī)劃的東西都將被拋棄,比如大量的前期軟件設(shè)計(jì)和詳細(xì)的需求分析。超過(guò)項(xiàng)目階段平均周期的任務(wù)將不復(fù)存在。跟代碼凍結(jié)(Code Freeze)以及數(shù)周的手動(dòng)回歸測(cè)試說(shuō)再見(jiàn)吧! 變化頻率如此之高,文檔很快就會(huì)過(guò)時(shí)。不斷更新詳細(xì)需求說(shuō)明和測(cè)試計(jì)劃(Test Plan)需要投入大量精力,相當(dāng)浪費(fèi)。那些以往在日常工作中依賴于此的人們,如業(yè)務(wù)分析師或者測(cè)試人員,在這個(gè)每周迭代的新環(huán)境中經(jīng)常會(huì)無(wú)所適從。開(kāi)發(fā)人員原本以為不會(huì)受到紙質(zhì)文檔缺失的影響,現(xiàn)在卻要把時(shí)間浪費(fèi)在不必要的返工與功能維護(hù)上。他們不是花時(shí)間去制訂宏偉的計(jì)劃,而是要浪費(fèi)數(shù)周的時(shí)間去修正有問(wèn)題的產(chǎn)品。 在過(guò)去的十年里,軟件開(kāi)發(fā)社區(qū)致力于使用“正確”的方式來(lái)構(gòu)建軟件,關(guān)注使用技術(shù)實(shí)踐和思想來(lái)確保質(zhì)量。但是,正確地構(gòu)建產(chǎn)品和構(gòu)建正確的產(chǎn)品是兩碼事。我們要二者兼顧才能取得成功。 圖1-1 實(shí)例化需求說(shuō)明可以幫助團(tuán)隊(duì)構(gòu)建正確的軟件產(chǎn)品,而技術(shù)實(shí)踐 可以確保正確地構(gòu)建產(chǎn)品 想要有效地構(gòu)建正確的產(chǎn)品,軟件開(kāi)發(fā)實(shí)踐必須滿足以下幾點(diǎn)。
傳統(tǒng)意義上,構(gòu)建正確的產(chǎn)品需要龐大的功能需求說(shuō)明、文檔以及漫長(zhǎng)的測(cè)試階段。如今,軟件每周都要有交付,這一套已經(jīng)行不通了。我們尋求的方案要能帶來(lái)如下好處。 避免過(guò)度說(shuō)明需求從而產(chǎn)生浪費(fèi),避免花時(shí)間在開(kāi)發(fā)前會(huì)發(fā)生改變的細(xì)節(jié)上。 有一種可靠的文檔,可以解釋系統(tǒng)的行為,據(jù)此我們能容易修改系統(tǒng)行為。 可以有效地檢查系統(tǒng)行為與需求說(shuō)明的描述是否一致。 以最少的維護(hù)成本維持文檔的相關(guān)性與可靠性。 適合短迭代和基于流的過(guò)程,這樣能為即將開(kāi)展的工作提供即時(shí)足夠的信息。 圖1-2 對(duì)于敏捷項(xiàng)目,構(gòu)建正確文檔的關(guān)鍵因素 乍一看,這些目標(biāo)似乎互相沖突,但有很多團(tuán)隊(duì)已經(jīng)成功地達(dá)成了所有目標(biāo)。在做調(diào)研時(shí),我采訪了30個(gè)團(tuán)隊(duì),他們完成了大約50個(gè)項(xiàng)目。我試圖找出一些模式與通用做法,并挖掘出這些方式背后的基本原則。這些項(xiàng)目的共同思想,定義了一種構(gòu)建正確軟件的好方法:實(shí)例化需求說(shuō)明。 實(shí)例化需求說(shuō)明是一組過(guò)程模式,它幫助團(tuán)隊(duì)構(gòu)建正確的軟件產(chǎn)品。使用實(shí)例化需求說(shuō)明,團(tuán)隊(duì)編寫(xiě)的文檔數(shù)量恰到好處,在短迭代或基于流的開(kāi)發(fā)中可以有效地協(xié)助變更。 實(shí)例化需求說(shuō)明的關(guān)鍵過(guò)程模式將在下一章介紹。本章我將闡述實(shí)例化需求說(shuō)明的好處。我將使用實(shí)例化需求說(shuō)明的風(fēng)格來(lái)進(jìn)行闡述,而不是以理論介紹的方式來(lái)構(gòu)建一個(gè)案例,我將展示18個(gè)真實(shí)的例子,它們都來(lái)自于那些大大受益于實(shí)例化需求說(shuō)明的團(tuán)隊(duì)。 在開(kāi)始之前,我想強(qiáng)調(diào)一下,在一個(gè)項(xiàng)目中很難孤立地看待某種思想的影響或作用。本文所描述的實(shí)踐,可以與已經(jīng)開(kāi)展的敏捷軟件開(kāi)發(fā)實(shí)踐[例如測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)、持續(xù)集成以及使用用戶故事做計(jì)劃等]共同使用,而且可以增強(qiáng)其他實(shí)踐的效用。當(dāng)我們轉(zhuǎn)而去看那些有著不同背景的項(xiàng)目時(shí),很多模式浮現(xiàn)了出來(lái)。我采訪的團(tuán)隊(duì)中,有些在實(shí)施實(shí)例化需求說(shuō)明前一直使用敏捷過(guò)程,而有些團(tuán)隊(duì)則是在過(guò)渡到敏捷過(guò)程的過(guò)程中實(shí)施了實(shí)例化需求說(shuō)明。大多數(shù)團(tuán)隊(duì)使用基于迭代的過(guò)程,例如Scrum和極限編程,或者是基于流的過(guò)程,例如看板。但是有些團(tuán)隊(duì),盡管他們使用了這些實(shí)踐,但他們的過(guò)程以任何標(biāo)準(zhǔn)來(lái)看都不是敏捷的過(guò)程。然而,他們大多都收獲了如下類似的收益。 更有效地實(shí)施變更。他們擁有活文檔——系統(tǒng)功能的可靠信息來(lái)源——讓他們得以分析潛在變更的影響,同時(shí)可以有效地分享知識(shí)。 更高的產(chǎn)品質(zhì)量。他們清晰地定義了預(yù)期,使得驗(yàn)證過(guò)程很有效率。 更少的返工。他們?cè)谛枨笳f(shuō)明上協(xié)作得更好,并確保所有團(tuán)隊(duì)成員對(duì)預(yù)期達(dá)成共識(shí)。 同一項(xiàng)目不同角色的活動(dòng)協(xié)調(diào)得更好。改善協(xié)作形成定期的交付流程。 在接下來(lái)的4個(gè)小節(jié)中,我們將通過(guò)現(xiàn)實(shí)世界的例子,近距離地審視這些收益。 更有效地實(shí)施變更 在做調(diào)研的過(guò)程中,我獲得的最重要的經(jīng)驗(yàn)是關(guān)于活文檔(living documentation)的長(zhǎng)期收益的——事實(shí)上,我認(rèn)為這是一個(gè)最重要信息,本文廣泛地涵蓋了這部分內(nèi)容。活文檔是系統(tǒng)功能的一個(gè)信息源,它與程序代碼一樣可靠,但更容易使用和理解?;钗臋n幫助團(tuán)隊(duì)共同分析變更所帶來(lái)的影響并討論潛在的方案。團(tuán)隊(duì)還可以為新的需求擴(kuò)展已有的文檔。長(zhǎng)此以往,可以使需求說(shuō)明和實(shí)施變更更有效。大多數(shù)成功的團(tuán)隊(duì)都發(fā)現(xiàn)活文檔的長(zhǎng)期收益是實(shí)施實(shí)例化需求說(shuō)明所帶來(lái)的結(jié)果。 總部設(shè)在美國(guó)西得梅因市的愛(ài)荷華州助學(xué)貸款流動(dòng)資產(chǎn)管理公司(Iowa Student Loan Liquidity Corporation,下文簡(jiǎn)稱Iowa Student Loan),在2009年進(jìn)行了一項(xiàng)相當(dāng)重要的商業(yè)模式變更。過(guò)去一年,金融市場(chǎng)動(dòng)蕩使得貸款方幾乎無(wú)法為私人學(xué)生貸款找到資金來(lái)源,因此,許多貸款方被迫放棄私人學(xué)生貸款市場(chǎng)或改變自己的商業(yè)模式。該公司適應(yīng)了當(dāng)時(shí)的市場(chǎng)。它從銀行和其他金融機(jī)構(gòu)募集資金來(lái)支助私人助學(xué)貸款,而不是使用債券收益。 Tim Andersen是一位軟件分析師,同時(shí)也是一名開(kāi)發(fā)人員,他說(shuō)為了有效地適應(yīng)市場(chǎng),他們不得不“有聲有色地進(jìn)行系統(tǒng)核心大檢修”。在開(kāi)發(fā)軟件時(shí),他們的團(tuán)隊(duì)把活文檔作為一項(xiàng)主要機(jī)制來(lái)編寫(xiě)業(yè)務(wù)需求文檔?;钗臋n系統(tǒng)讓他們可以探悉新需求所帶來(lái)的影響、幫助他們確定所需的變更,而且可以確保系統(tǒng)的其余部分仍舊正常工作。他們當(dāng)時(shí)只花了一個(gè)月時(shí)間就對(duì)系統(tǒng)實(shí)施了根本性的變更并將其發(fā)布到了生產(chǎn)環(huán)境,活文檔系統(tǒng)是做這項(xiàng)變更的根本。Andersen說(shuō):
在加拿大魁北克省的蒙特利爾市,Pyxis技術(shù)公司的Talia項(xiàng)目團(tuán)隊(duì)也有類似的經(jīng)驗(yàn)。Talia是企業(yè)系統(tǒng)的一個(gè)虛擬助理,它是一個(gè)擁有復(fù)雜規(guī)則、能與員工交流的聊天機(jī)器人。從最初開(kāi)始,Talia團(tuán)隊(duì)就使用實(shí)例化需求說(shuō)明來(lái)構(gòu)建一個(gè)活文檔系統(tǒng)。一年之后,他們不得不從頭開(kāi)始編寫(xiě)虛擬代理引擎的核心——而此時(shí),正是在活文檔方面的投資大顯成效的時(shí)候。Talia的產(chǎn)品總監(jiān)André Brissette是這樣說(shuō)的:
他們的活文檔系統(tǒng)使得團(tuán)隊(duì)在變更完成時(shí)可以自信地說(shuō),新系統(tǒng)具有和老系統(tǒng)一樣的功能。該活文檔系統(tǒng)還能幫助Brissette管理并追蹤項(xiàng)目的進(jìn)度。 總部位于倫敦的現(xiàn)場(chǎng)音樂(lè)消費(fèi)性網(wǎng)站Songkick的團(tuán)隊(duì)在重新開(kāi)發(fā)網(wǎng)站活動(dòng)摘要時(shí),使用了一個(gè)活文檔系統(tǒng)來(lái)協(xié)助變更。他們意識(shí)到目前的摘要系統(tǒng)無(wú)法擴(kuò)展到所需的容量,活文檔在重新構(gòu)建摘要系統(tǒng)時(shí)就提供了有力的支持。Phil Cownas是Songkick的CTO,據(jù)他估計(jì),因?yàn)閾碛辛嘶钗臋n系統(tǒng),他們的團(tuán)隊(duì)在實(shí)施變更時(shí)節(jié)省了至少50%的時(shí)間。據(jù)Cowans所述:
ePlan Services是一個(gè)養(yǎng)老金服務(wù)機(jī)構(gòu),位于科羅拉多州的丹佛市,它的開(kāi)發(fā)團(tuán)隊(duì)從2003年開(kāi)始就已經(jīng)使用了實(shí)例化需求說(shuō)明。他們構(gòu)建并維護(hù)一個(gè)金融服務(wù)系統(tǒng),該系統(tǒng)涉及眾多的項(xiàng)目干系人、復(fù)雜的業(yè)務(wù)邏輯以及復(fù)雜的監(jiān)管需求。在項(xiàng)目開(kāi)始三年之后,其中一位經(jīng)理搬去了印度,而對(duì)于系統(tǒng)遺留部分,有些內(nèi)容是只有他才掌握的。根據(jù)ePlan Services的測(cè)試人員及Agile Testing: A Practical Guide for Testers and Teams一書(shū)作者Lisa Crispin的描述,當(dāng)時(shí),團(tuán)隊(duì)努力地學(xué)習(xí)那位經(jīng)理所擁有的知識(shí)并將其構(gòu)建成活文檔。活文檔系統(tǒng)幫助他們獲得了業(yè)務(wù)流程的專業(yè)知識(shí),并立即提供給所有的團(tuán)隊(duì)成員。他們借此消除了知識(shí)傳遞的瓶頸,可以有效地支持并擴(kuò)展系統(tǒng)。 在比利時(shí)Oostkamp的IHC集團(tuán),病人管理中心項(xiàng)目組實(shí)施了一個(gè)活文檔系統(tǒng),并取得了類似的結(jié)果。該項(xiàng)目開(kāi)始時(shí)重寫(xiě)了一個(gè)大型機(jī)系統(tǒng),它是從2000年開(kāi)始的,目前還在進(jìn)行中。Pascal Mestdach是該項(xiàng)目的方案架構(gòu)師,他說(shuō)團(tuán)隊(duì)從中受益匪淺:
這些例子闡述了活文檔系統(tǒng)如何幫助交付團(tuán)隊(duì)分享知識(shí)并應(yīng)付人員變動(dòng)。它還使得業(yè)務(wù)可以更有效地響應(yīng)市場(chǎng)變化。我將在第3章里對(duì)此做更具體的說(shuō)明。 更高的產(chǎn)品質(zhì)量 實(shí)例化需求說(shuō)明可以改善交付團(tuán)隊(duì)成員之間的協(xié)作,促進(jìn)商業(yè)用戶更好地參與,并為交付提供清晰客觀的目標(biāo)——大幅提高產(chǎn)品質(zhì)量。 有兩個(gè)突出的案例,分別來(lái)自Wes Williams[來(lái)自世博控股(Sabre Holdings)的敏捷教練]以及Andrew Jackman[為法國(guó)巴黎銀行(BNP Paribas)的一個(gè)項(xiàng)目工作的顧問(wèn)開(kāi)發(fā)人員],他們將描述之前失敗過(guò)多次的項(xiàng)目如何通過(guò)實(shí)例化需求說(shuō)明走向成功。本文中描述的方法幫助他們的團(tuán)隊(duì)克服了業(yè)務(wù)領(lǐng)域的復(fù)雜性,之前這種復(fù)雜性是很難處理的。同時(shí)還幫助他們確保了交付的高質(zhì)量。 在世博控股,Wes Williams工作的項(xiàng)目是一個(gè)為期兩年的航班訂票項(xiàng)目,團(tuán)隊(duì)分布在全球各地,流程又是數(shù)據(jù)驅(qū)動(dòng)的,這使得項(xiàng)目十分復(fù)雜。項(xiàng)目有3個(gè)團(tuán)隊(duì),30名開(kāi)發(fā)人員,分布于兩個(gè)洲。據(jù)Williams說(shuō),系統(tǒng)頭兩次構(gòu)建都失敗了,但是第三次使用實(shí)例化需求說(shuō)明后就成功了。Williams說(shuō):
Williams認(rèn)為實(shí)例化需求說(shuō)明是他們?nèi)〉贸晒Φ囊粋€(gè)關(guān)鍵因素。除了保證高質(zhì)量外,實(shí)例化需求說(shuō)明還有助于建立開(kāi)發(fā)人員和測(cè)試人員之間的信任。 在法國(guó)巴黎銀行,Sierra項(xiàng)目是另一個(gè)很好的例子,可以展現(xiàn)實(shí)例化需求說(shuō)明如何帶來(lái)高質(zhì)量的產(chǎn)品。Sierra是一個(gè)債券的數(shù)據(jù)倉(cāng)庫(kù),整合了一些內(nèi)部系統(tǒng)、評(píng)級(jí)機(jī)構(gòu)和其他來(lái)自外部的信息,并將它們分發(fā)給銀行內(nèi)部的各種系統(tǒng)。許多系統(tǒng)和組織使用相同的術(shù)語(yǔ),表達(dá)的意思卻不盡相同,這導(dǎo)致了許多誤解。最初兩次實(shí)現(xiàn)系統(tǒng)的嘗試都失敗了,據(jù)Channing Walton說(shuō),團(tuán)隊(duì)中的一個(gè)開(kāi)發(fā)人員促使了第三次嘗試的成功。第三次努力的成功部分歸功于實(shí)例化需求說(shuō)明幫助團(tuán)隊(duì)處理了復(fù)雜性問(wèn)題,并且確保了團(tuán)隊(duì)的共識(shí)。最終的產(chǎn)品質(zhì)量令人印象深刻。項(xiàng)目從2005年上線以來(lái)一直在運(yùn)行,Sierra項(xiàng)目的顧問(wèn)開(kāi)發(fā)人員Andrew Jackman說(shuō):“生產(chǎn)環(huán)境中沒(méi)有出現(xiàn)大的問(wèn)題。”現(xiàn)在Sierra項(xiàng)目中的大多數(shù)工作人員都不是項(xiàng)目啟動(dòng)時(shí)的那些人,但是質(zhì)量水平一直都很高。 Bekk咨詢公司在為一家大型法國(guó)銀行支行開(kāi)發(fā)租車系統(tǒng)時(shí)也取得了類似的成果。Aslak Helles?y曾是那個(gè)團(tuán)隊(duì)的成員,還是Cucumber——一個(gè)支持實(shí)例化需求說(shuō)明的熱門(mén)自動(dòng)化工具的創(chuàng)造者,據(jù)他說(shuō),盡管現(xiàn)在維護(hù)這個(gè)軟件的是一個(gè)全新的團(tuán)隊(duì),但他們?cè)谙到y(tǒng)上線后的兩年中卻只發(fā)現(xiàn)了5個(gè)缺陷。 Lance Walton曾在一家大型瑞士銀行倫敦分行的一個(gè)項(xiàng)目中擔(dān)任過(guò)程顧問(wèn),這個(gè)項(xiàng)目是要開(kāi)發(fā)一個(gè)訂單管理系統(tǒng),開(kāi)始的幾次也都失敗了。Walton進(jìn)入這個(gè)項(xiàng)目時(shí),大家都認(rèn)為實(shí)現(xiàn)這個(gè)系統(tǒng)需要至少和開(kāi)發(fā)團(tuán)隊(duì)一樣大的支持團(tuán)隊(duì)。他的團(tuán)隊(duì)使用了實(shí)例化需求說(shuō)明,項(xiàng)目開(kāi)始9個(gè)月后就交付了生產(chǎn)系統(tǒng),一天內(nèi)就通過(guò)了業(yè)務(wù)驗(yàn)收測(cè)試,之后6個(gè)月內(nèi)沒(méi)有發(fā)現(xiàn)任何缺陷。Walton說(shuō)新的系統(tǒng)不需要額外的支持人員,成本比預(yù)期要低,而且團(tuán)隊(duì)更早地交付了成品。相比之下,他們旁邊的團(tuán)隊(duì)需要10倍于開(kāi)發(fā)團(tuán)隊(duì)的支持人員。Walton指出:
實(shí)例化需求說(shuō)明的技術(shù)不僅僅適合于新建項(xiàng)目,同時(shí)也適用于改建項(xiàng)目。建立起值得信賴的文檔、清理遺留的系統(tǒng),都需要一定的時(shí)間,但是團(tuán)隊(duì)很快就能看到諸多的好處,并對(duì)新的交付充滿信心。 還有一個(gè)不錯(cuò)的例子是倫敦摩根大通的外匯交易系統(tǒng)。Martin Jackson是該項(xiàng)目的自動(dòng)化測(cè)試顧問(wèn),他說(shuō)業(yè)務(wù)分析員預(yù)計(jì)項(xiàng)目會(huì)推遲,然而事實(shí)上,項(xiàng)目提前兩個(gè)星期就交付了。高質(zhì)量的產(chǎn)品讓他們成功地在一個(gè)星期內(nèi)完成了業(yè)務(wù)驗(yàn)收測(cè)試階段,而不是原先計(jì)劃的4個(gè)星期。Jackson說(shuō):
實(shí)例化需求說(shuō)明還使Jackson的團(tuán)隊(duì)在項(xiàng)目開(kāi)發(fā)晚期快速實(shí)現(xiàn)了“一次重大的技術(shù)改動(dòng)”,提高了計(jì)算的精確度。Jackson稱:
科羅拉多州丹佛市的惠好公司有個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì),他們編寫(xiě)并維護(hù)一些工程應(yīng)用和木制框架的計(jì)算引擎。在使用實(shí)例化需求說(shuō)明以前,結(jié)構(gòu)工程師通常不會(huì)參與到軟件開(kāi)發(fā)過(guò)程中,即使團(tuán)隊(duì)正在處理一些復(fù)雜的科學(xué)計(jì)算公式和規(guī)則。這導(dǎo)致了一些質(zhì)量問(wèn)題和延誤,由于使用這個(gè)引擎的應(yīng)用程序有好幾個(gè),計(jì)算過(guò)程變得更加復(fù)雜。項(xiàng)目的軟件質(zhì)量保證主管Pierre Veragen認(rèn)為發(fā)布前的艱難時(shí)期會(huì)拖累項(xiàng)目,版本發(fā)布出去后很少會(huì)沒(méi)問(wèn)題。 實(shí)施實(shí)例化需求說(shuō)明后,團(tuán)隊(duì)現(xiàn)在和結(jié)構(gòu)工程師合作制定需求說(shuō)明,并自動(dòng)化驗(yàn)證結(jié)果。當(dāng)有變更需求進(jìn)來(lái)時(shí),測(cè)試人員和結(jié)構(gòu)工程師一起得出期望的計(jì)算結(jié)果,并在開(kāi)發(fā)開(kāi)始前用實(shí)例把結(jié)果記錄在需求說(shuō)明中。之后批準(zhǔn)變更的工程師會(huì)編寫(xiě)需求說(shuō)明和測(cè)試。 Veragen說(shuō)新方法的主要好處是他們?cè)谧龈膭?dòng)時(shí)有信心了。到2010年初,他們的活文檔系統(tǒng)中已經(jīng)有超過(guò)30 000個(gè)檢查,而且?guī)啄陜?nèi)都沒(méi)有發(fā)現(xiàn)大的缺陷,現(xiàn)在已經(jīng)停止追蹤缺陷了。Veragen指出:
Lance Walton參與過(guò)一家大型法國(guó)銀行倫敦分行的信用風(fēng)險(xiǎn)管理程序的開(kāi)發(fā)。項(xiàng)目剛開(kāi)始的時(shí)候,有外來(lái)的顧問(wèn)幫助團(tuán)隊(duì)采用極限編程的實(shí)踐,但是他們沒(méi)有采用任何實(shí)例化需求說(shuō)明的做法(雖然極限編程包括客戶測(cè)試,這個(gè)與可執(zhí)行的需求說(shuō)明很接近)。6個(gè)月后,Walton加入了這個(gè)項(xiàng)目,他發(fā)現(xiàn)代碼質(zhì)量很低。雖然團(tuán)隊(duì)每?jī)蓚€(gè)星期都會(huì)有交付,但是寫(xiě)出來(lái)的代碼使驗(yàn)證變得很復(fù)雜。開(kāi)發(fā)人員只測(cè)試最近實(shí)現(xiàn)的功能,隨著系統(tǒng)的增長(zhǎng),這樣的做法就不夠了?!爱?dāng)有版本發(fā)布時(shí),大家都緊張地圍坐著,想確保所有功能都能正常運(yùn)行,并且期望可以在幾個(gè)小時(shí)內(nèi)發(fā)現(xiàn)一些問(wèn)題?!盬alton如此說(shuō)。在實(shí)施實(shí)例化需求說(shuō)明后,產(chǎn)品的質(zhì)量和人員的信心都有了顯著的提高。他補(bǔ)充道:
與此形成鮮明對(duì)比的是,英國(guó)貿(mào)易者傳媒(Trader Media)集團(tuán)的網(wǎng)站重寫(xiě)項(xiàng)目停止使用實(shí)例化需求說(shuō)明后,卻遭遇了質(zhì)量問(wèn)題。起初團(tuán)隊(duì)協(xié)作完成需求說(shuō)明和自動(dòng)化驗(yàn)證。在管理層的壓力下,他們?yōu)榱烁绺斓亟桓陡嗟墓δ芏鴽](méi)有繼續(xù)下去。測(cè)試團(tuán)隊(duì)的主管Stuart Taylor說(shuō):“我們注意到質(zhì)量出現(xiàn)了大幅下滑……以前我們(測(cè)試人員)很難找到缺陷,而后來(lái)我們卻發(fā)現(xiàn)一個(gè)用戶故事會(huì)有四五個(gè)缺陷。” 并不局限于敏捷團(tuán)隊(duì) 不是只有敏捷團(tuán)隊(duì)才可以從協(xié)作制定需求說(shuō)明中獲益。在Bridging the Communication Gap一書(shū)中,我建議在更為傳統(tǒng)的結(jié)構(gòu)過(guò)程中應(yīng)用類似的實(shí)踐。 英國(guó)Sopra集團(tuán)的高級(jí)測(cè)試顧問(wèn)Matthew Steer幫助一個(gè)大型電信公司的第三方離岸軟件交付伙伴實(shí)現(xiàn)了這些實(shí)踐。他們意識(shí)到項(xiàng)目需求定義不明確后,決定作出改變。Steer比較了實(shí)施實(shí)例化需求說(shuō)明前后一年的交付成本。不出意料,這些項(xiàng)目使用瀑布方式開(kāi)發(fā),沒(méi)能達(dá)到零缺陷的級(jí)別,但是這些改變“提高了上游缺陷的發(fā)現(xiàn)率,減少了下游的返工和成本”。Steer說(shuō):
最后結(jié)果是,交付成本僅在2007年就節(jié)省了170萬(wàn)英鎊。 減少返工 一般來(lái)講,頻繁地發(fā)布會(huì)促進(jìn)快速反饋,使得開(kāi)發(fā)團(tuán)隊(duì)能夠更快地發(fā)現(xiàn)錯(cuò)誤、修復(fù)錯(cuò)誤。但是快速迭代并不能避免錯(cuò)誤。通常情況下,團(tuán)隊(duì)實(shí)現(xiàn)一個(gè)功能時(shí)會(huì)有三四次反復(fù)。開(kāi)發(fā)人員稱,這是因?yàn)榭蛻粼谀玫疆a(chǎn)品試用前并不知道自己想要什么。我并不這么認(rèn)為。使用實(shí)例化需求說(shuō)明后,通常團(tuán)隊(duì)第一次實(shí)現(xiàn)的就是客戶所要的,無(wú)需返工。這可以節(jié)省大量的時(shí)間,并使得交付流程更具可預(yù)測(cè)性、更加可靠。 位于倫敦的英國(guó)天空廣播公司(British Sky Broadcasting)的天空網(wǎng)絡(luò)服務(wù)(SNS)部門(mén)負(fù)責(zé)寬帶和電話的服務(wù)配置(provisioning)軟件,它的業(yè)務(wù)流程和系統(tǒng)集成都極為復(fù)雜。該部門(mén)由6個(gè)團(tuán)隊(duì)組成,他們使用實(shí)例化需求說(shuō)明已經(jīng)有好幾年了。據(jù)他們的資深敏捷Java程序員Rakesh Patel說(shuō):“當(dāng)我們說(shuō)交付時(shí),確實(shí)是能馬上交付的。”并且該部門(mén)在Sky公司內(nèi)具有很高的聲望。Patel曾和其他公司的團(tuán)隊(duì)一起工作了一段短暫的時(shí)間,他對(duì)兩個(gè)團(tuán)隊(duì)做了比較,他說(shuō):
其他不少團(tuán)隊(duì)注意到了返工的大量減少,其中包含LeanDog,它為一家美國(guó)大型保險(xiǎn)機(jī)構(gòu)開(kāi)發(fā)聚合應(yīng)用軟件。他們的應(yīng)用軟件為很多大型主機(jī)和基于Web的服務(wù)提供統(tǒng)一的用戶界面,而且由于擁有來(lái)自全國(guó)各地的大量項(xiàng)目干系人,該軟件變得更加復(fù)雜。最初,在需求方面,該項(xiàng)目遭受了很多功能缺失的問(wèn)題。Rob Park是LeanDog里幫助團(tuán)隊(duì)轉(zhuǎn)型的敏捷教練,他說(shuō):
該團(tuán)隊(duì)實(shí)施了實(shí)例化需求說(shuō)明,結(jié)果需求說(shuō)明改善了,返工也減少了。據(jù)Park說(shuō),雖然當(dāng)程序員針對(duì)某個(gè)故事卡開(kāi)展工作時(shí),有些問(wèn)題還要向業(yè)務(wù)分析師咨詢,但是“問(wèn)題已經(jīng)大為減少,而且重復(fù)性工作少了,只剩下不同的問(wèn)題”。對(duì)他來(lái)說(shuō),實(shí)例化需求說(shuō)明最有價(jià)值的方面在于“當(dāng)著手實(shí)現(xiàn)一個(gè)故事時(shí),你可以領(lǐng)會(huì)它的意圖,并了解它的范圍。” 很多團(tuán)隊(duì)還發(fā)現(xiàn)在開(kāi)發(fā)周期的起始階段,使用實(shí)例化需求說(shuō)明會(huì)讓需求更加精確,這樣管理產(chǎn)品功能清單(product backlog)會(huì)更加容易。例如,能夠盡早識(shí)別太含糊或有太多功能缺失的故事,這樣可以防止以后出現(xiàn)問(wèn)題。如果沒(méi)有實(shí)例化需求說(shuō)明,團(tuán)隊(duì)經(jīng)常要到迭代中期才發(fā)現(xiàn)問(wèn)題,這會(huì)中斷流程而且需要耗費(fèi)時(shí)間重新討論——在大公司,決定功能范圍的項(xiàng)目干系人往往無(wú)法輕易預(yù)約到。 實(shí)例化需求說(shuō)明能幫助團(tuán)隊(duì)建立一個(gè)協(xié)作制定需求的過(guò)程,這可以減少迭代中期的問(wèn)題。此外,實(shí)例化需求說(shuō)明適用于短迭代,并且不需要花費(fèi)數(shù)月的時(shí)間來(lái)編寫(xiě)冗長(zhǎng)的文檔。 Ultimate軟件公司位于佛羅里達(dá)州的韋斯頓,對(duì)于它的全球智能管理(Global Talent Management)團(tuán)隊(duì)來(lái)說(shuō),減少返工是一個(gè)主要的優(yōu)點(diǎn)。協(xié)作制定需求說(shuō)明在專注開(kāi)發(fā)工作方面有著顯著的影響。據(jù)Ultimate軟件公司的資深測(cè)試開(kāi)發(fā)工程師Scott Berger所述:
大多數(shù)團(tuán)隊(duì)顯著地減少或完全消除了由于誤解需求或忽視客戶的期望而造成的返工。本文所描述的實(shí)踐,可以讓團(tuán)隊(duì)更好地與商業(yè)用戶打交道,并確保大家對(duì)結(jié)果達(dá)成共識(shí)。 作者Gojko Adzic,戰(zhàn)略軟件交付顧問(wèn),專注于敏捷和精益開(kāi)發(fā),尤其擅長(zhǎng)敏捷測(cè)試、實(shí)例化需求和行為驅(qū)動(dòng)開(kāi)發(fā)。Gojko經(jīng)常在國(guó)際上重要的軟件開(kāi)發(fā)和測(cè)試會(huì)議上發(fā)言,并運(yùn)營(yíng)著英國(guó)的敏捷測(cè)試用戶小組。最近這十多年來(lái),他一直在財(cái)務(wù)和能源交易平臺(tái)、移動(dòng)定位、電子商務(wù)、在線游戲和復(fù)雜配置管理系統(tǒng)等行業(yè)項(xiàng)目中,從事程序員、架構(gòu)師、技術(shù)指導(dǎo)和顧問(wèn)等工作。 譯者張昌貴,軟件開(kāi)發(fā)經(jīng)理,CSM, CSPO, CSP,敏捷軟件開(kāi)發(fā)參與者,軟件開(kāi)源運(yùn)動(dòng)擁護(hù)者。譯者張博超,軟件開(kāi)發(fā)工程師,CSM, CSPO, CSP。關(guān)注敏捷開(kāi)發(fā),積極實(shí)踐并推廣各種敏捷方法。譯者石永超,軟件開(kāi)發(fā)工程師,CSM,CSPO,敏捷愛(ài)好者,InfoQ中文站編輯。關(guān)注高效、高質(zhì)量的軟件開(kāi)發(fā)方法。 本文節(jié)選自《實(shí)例化需求:團(tuán)隊(duì)如何交付正確的軟件》一書(shū),Gojko Adzic著,張昌貴、張博超、石永超譯,人民郵電出版社出版。 |
|
來(lái)自: just_person > 《文摘》