發(fā)布若干個(gè)小版本,明確每個(gè)小版本的需求邊界。這好比長(zhǎng)跑途中的若干個(gè)里程碑,每跨過一個(gè)里程碑就意味著向重點(diǎn)又前進(jìn)了一步。
每個(gè)小版本都包含有限的功能需求,測(cè)試工程師可以針對(duì)這些功能需求同步展開測(cè)試工作,提早觸發(fā)Bug,盡量爭(zhēng)取測(cè)試時(shí)間??蛻粢部梢詮倪@些小版本中提前看到真實(shí)系統(tǒng)的雛形;隨著版本的逐步升級(jí),項(xiàng)目距離發(fā)布日期也越來(lái)越近,和需求的差距也越來(lái)越小。
工欲善其事,必先利其器。我們可以利用一些現(xiàn)成的工具來(lái)管理需求邊界和跟蹤Bug,比如JIRA。JIRA是集項(xiàng)目計(jì)劃、任務(wù)分配、需求管理、錯(cuò)誤跟蹤于一體的商業(yè)軟件,其提供了問題跟蹤管理、問題跟進(jìn)情況的分析報(bào)告、項(xiàng)目類別管理、組件/模塊負(fù)責(zé)人、項(xiàng)目email地址等功能。許多著名的開源項(xiàng)目都采用了JIRA。
通過JIRA,可以整合客戶、項(xiàng)目經(jīng)理、開發(fā)人員、測(cè)試人員,使各種角色各司其職,團(tuán)隊(duì)內(nèi)部信息能夠很快得到交流和反饋,潛在的問題提前暴露,促進(jìn)項(xiàng)目的可控。
JIRA以工作流的思想融合了項(xiàng)目管理、任務(wù)管理和缺陷管理等思維,允許設(shè)定項(xiàng)目的模塊和版本,并為每個(gè)需求設(shè)置預(yù)期日期,將任務(wù)的處理指定到人。 JIRA允許為每個(gè)項(xiàng)目設(shè)置優(yōu)先級(jí),比如Blocker、Critical、Major、Minor、Trivial,標(biāo)識(shí)每個(gè)任務(wù)的重要程度。如果任務(wù)定義了優(yōu)先級(jí),那么在每個(gè)人的桌面上,任務(wù)會(huì)自動(dòng)排列。這點(diǎn)對(duì)于多任務(wù)的項(xiàng)目尤其重要。
預(yù)見到需求迭代的被動(dòng)性后,Diapers項(xiàng)目團(tuán)隊(duì)在Diapers項(xiàng)目上全面啟動(dòng)了JIRA進(jìn)行項(xiàng)目管理,將需求分解細(xì)化后進(jìn)入JIRA,排定任務(wù)的優(yōu)先級(jí)并指定到人,確定每次小版本發(fā)布的需求編號(hào),不定期的發(fā)布小版本。結(jié)合SVN等版本控制工具,Diapers項(xiàng)目團(tuán)隊(duì)能夠?qū)⒐δ苄枨蟮牧6瓤刂频阶钚。?xiàng)目逐步推進(jìn),客戶對(duì)項(xiàng)目的進(jìn)度有充分的了解,項(xiàng)目經(jīng)理也能夠準(zhǔn)確把握項(xiàng)目的進(jìn)度,團(tuán)隊(duì)中充滿了樂觀的情緒。
5、安撫團(tuán)隊(duì)成員的情緒
工程師對(duì)于冗長(zhǎng)的需求說明書有天生的恐懼感,開發(fā)周期拉得太長(zhǎng),似乎需求迭代無(wú)窮無(wú)盡。如果需求的迭代周期不在可控范圍之內(nèi),項(xiàng)目的發(fā)布邊界模糊不清,項(xiàng)目發(fā)布的日期自然也遙遙無(wú)期。由此帶來(lái)的結(jié)果是團(tuán)隊(duì)每天緊趕慢趕的跟蹤需求迭代,消化處理新的需求,工作氣氛也是高度緊張。每一次需求迭代,都會(huì)進(jìn)一步增加這種緊張情緒。
項(xiàng)目經(jīng)理應(yīng)該把握項(xiàng)目的進(jìn)展情況以及客戶的真實(shí)需求,也要知悉客戶的需求底線,更要在必要的時(shí)候安撫團(tuán)隊(duì)成員的情緒。
當(dāng)原始需求第一次被抽象出來(lái)的時(shí)候,團(tuán)隊(duì)的第一要?jiǎng)?wù)是快速構(gòu)建原型系統(tǒng)作為和客戶溝通的主要媒介和依據(jù),項(xiàng)目經(jīng)理應(yīng)該引導(dǎo)團(tuán)隊(duì)把握這一點(diǎn)。
之后的每一次需求迭代,項(xiàng)目經(jīng)理要將需求分解細(xì)化,控制需求的粒度,并且確定優(yōu)先級(jí),消除團(tuán)隊(duì)成員的焦急情緒,按照先后順序逐步的處理每一個(gè)粒度的需求,以發(fā)布每階段的小版本為階段性的目標(biāo)。在這個(gè)過程中,需求細(xì)化到最小粒度,還需要注意到每個(gè)需求之間的關(guān)聯(lián)關(guān)系,關(guān)聯(lián)的需求要優(yōu)先集中處理,是降低每個(gè)小版本之間的耦合度。
Diapers項(xiàng)目自從將需求細(xì)化成一個(gè)個(gè)任務(wù)并進(jìn)入JIRA控制之后,軟件工程師每天的只需要按照順序處理JIRA上面的任務(wù),并及時(shí)將代碼以最小粒度的形式通過SVN工具提交;測(cè)試人員根據(jù)發(fā)布邊界所指定的版本號(hào)從SVN下載最新代碼測(cè)試,確認(rèn)并關(guān)閉相應(yīng)的任務(wù);項(xiàng)目經(jīng)理引導(dǎo)團(tuán)隊(duì)成員遵循規(guī)范的需求迭代程序,有條不紊的處理需求,輕松應(yīng)對(duì)需求迭代。