過(guò)程中并在其中不斷變更、迭代和完善。
敏捷需求分析認(rèn)為,需求應(yīng)建立在以用例為中心的需求文檔體系,采取協(xié)作式而非合同式的溝通方式之上。具體可分為五個(gè)關(guān)鍵點(diǎn):
用例;
協(xié)作;
迭代,即需求不是一次最終確定,而是先完成主要框架,再通過(guò)迭代逐步精化;
整個(gè)過(guò)程中以分析為支撐,做需求同時(shí)也在做分析,分析模型的輸出結(jié)果應(yīng)跟需求分開;
把用例分解到用戶故事,在整個(gè)軟件生命周期過(guò)程中來(lái)驅(qū)動(dòng)開發(fā)和測(cè)試。
業(yè)務(wù)/技術(shù)溝通頻現(xiàn)“兩份需求”
同時(shí)還要考慮到的是,將兩份需求改為一份文檔,而不必死摳CMMI概念區(qū)分出用戶和軟件需求。首份需求稿將由SA(系統(tǒng)分析師)來(lái)牽頭完成,負(fù)責(zé)各方協(xié)調(diào)和溝通的工作。理想的情況下,整個(gè)團(tuán)隊(duì)在項(xiàng)目開始前就應(yīng)搭建完畢,包括客戶、開發(fā)測(cè)試人員都參與的寫作和迭代,而不是以往的由技術(shù)人員對(duì)用戶進(jìn)行里程碑式的教輔。通常來(lái)說(shuō),一個(gè)項(xiàng)目里一名SA同時(shí)對(duì)應(yīng)5~9名開發(fā)人員是比較合適的。
需求文檔化與敏捷的平衡點(diǎn)
至于用例和用戶故事。按照敏捷大師Martin博客中的說(shuō)法,兩者都是組織需求的方式,只是目的不同而已,用例的目的是為了把需求描述清楚,而用戶故事的目的是把需求分解成可用于迭代計(jì)劃的單元。對(duì)應(yīng)到產(chǎn)品級(jí)和項(xiàng)目級(jí)文檔,用例是產(chǎn)品級(jí),例如做咖啡機(jī),不管有多少不同版本,有些核心功能是不改變的,這些都是產(chǎn)品級(jí)需求。而用戶故事則是項(xiàng)目級(jí),屬于做完就扔的“拋棄型”。
進(jìn)一步理解的話,用戶故事其實(shí)是一個(gè)或多個(gè)完整的業(yè)務(wù)場(chǎng)景,而用例是場(chǎng)景的抽象,一個(gè)用例里可以包含成百上千個(gè)場(chǎng)景。用戶故事是基于開發(fā)思想的,不光要考慮業(yè)務(wù),還要考慮如何實(shí)現(xiàn)包括工作量大小、任務(wù)分配、項(xiàng)目風(fēng)險(xiǎn)以及架構(gòu)風(fēng)險(xiǎn)等多重因素。有人認(rèn)為寫用戶故事是極簡(jiǎn)單的事,但在吳穹看來(lái),現(xiàn)在有很多人都還在用功能點(diǎn)套用用戶故事,顯得不倫不類,而沒有理解到用戶故事的精髓。
以ATM取款為例,正常流程是插卡、取錢、把錢拿走。這個(gè)看似簡(jiǎn)單的場(chǎng)景其實(shí)工作量很大,可以在整個(gè)流程中做一些必要的簡(jiǎn)化。有人認(rèn)為既然用戶故事是一個(gè)場(chǎng)景,那就把它變成一個(gè)場(chǎng)景步驟吧,于是就成了功能點(diǎn)。其實(shí)他們忽略了一點(diǎn),用戶故事還是一個(gè)簡(jiǎn)化了但還保證完整業(yè)務(wù)價(jià)值的場(chǎng)景。ATM取款建立用戶故事會(huì)涉及哪些因素呢?取款是否需要輸入密碼?小額取款時(shí)能否取消密碼輸入的步驟?取錢后打印賬單,查詢余額等,在這里面哪些功能是風(fēng)險(xiǎn)級(jí)別高的,哪些需要與銀行核心數(shù)據(jù)通信?這不僅涉及(功能)優(yōu)先級(jí)的問(wèn)題,還可以根據(jù)原則簡(jiǎn)化用戶故事。例如可以考慮做一個(gè)用戶故事,儲(chǔ)戶用不需驗(yàn)密的卡,限額是一千塊,取幾百塊錢的時(shí)候,把去銀行驗(yàn)證的過(guò)程取消掉。這種情形下很多時(shí)候都要考慮到賬戶的風(fēng)險(xiǎn)情況,這些都需要多方溝通。類似的用戶故事簡(jiǎn)化的情形有很多,但這時(shí)一定基于黑盒方式來(lái)做簡(jiǎn)化。而在簡(jiǎn)化的過(guò)程中,考慮如何實(shí)現(xiàn)如何合理調(diào)整工作量提高效率,這些都是找(用戶)故事的過(guò)程,也是一個(gè)白盒的過(guò)程。
在實(shí)現(xiàn)上,除了強(qiáng)調(diào)快速交付或生命周期很短、業(yè)務(wù)模式高度可變的互聯(lián)網(wǎng)、網(wǎng)游等項(xiàng)目,可以采用純用例的模式,現(xiàn)階段讓(大型)企業(yè)IT項(xiàng)目全面接納需求完全無(wú)文檔化還是不現(xiàn)實(shí)的,更實(shí)際的解決辦法是在文檔化和敏捷需求分析之間找到一個(gè)平衡,一份需求用例加上用戶故事,然后驅(qū)動(dòng)開發(fā)這種方式,目前看來(lái),這是現(xiàn)階段更適合大型企業(yè)的敏捷需求實(shí)踐模式。