做正確的事情比正確的做事情要重要得多,可以說,需求是軟件項(xiàng)目中“做正確事情”定義的基礎(chǔ),因?yàn)檐浖?shí)施過程的一大目標(biāo)是實(shí)現(xiàn)需求。在這一部分內(nèi)容中,先從理論上介紹軟件的需求層次,然后分別說明我們?cè)趯?shí)際項(xiàng)目中如何進(jìn)行需求開發(fā)。
在這里,開發(fā)軟件需求指的是行業(yè)軟件研發(fā)項(xiàng)目實(shí)施時(shí)需求調(diào)研、需求分析以及與客戶確認(rèn)需求的一個(gè)過程
§1.2.1 軟件需求層次
理論上,軟件需求包括三個(gè)不同的層次,分別是業(yè)務(wù)需求、用戶需求和功能需求。業(yè)務(wù)需求(Business Requirement)反映了客戶對(duì)軟件系統(tǒng)或產(chǎn)品高層次的目標(biāo)要求。用戶需求(User Requirement) 文檔描述了用戶使用軟件系統(tǒng)或產(chǎn)品必須要完成的任務(wù),換句話說就是用戶期望利用信息技術(shù)、使用軟件系統(tǒng)或產(chǎn)品替代手工可以完成的業(yè)務(wù)操作。功能需求(Functional Requirement)定義了軟件系統(tǒng)或產(chǎn)品必須實(shí)現(xiàn)的功能,使得用戶能完成他們的任務(wù),從而滿足業(yè)務(wù)需求。
在實(shí)際項(xiàng)目中,我們是這樣理解的:
1. 業(yè)務(wù)需求面向客戶高層,回答的問題是:Why?也就是軟件系統(tǒng)或產(chǎn)品存在的理由,為什么要做這套軟件?在項(xiàng)目范圍說明書中予以描述。這里,項(xiàng)目范圍說明書的定義與PMBOK中的定義基本一致,目的在于確定干系人的期望、項(xiàng)目的可交付成果、項(xiàng)目的邊界和驗(yàn)收的標(biāo)準(zhǔn)。
2. 用戶需求面向客戶中的最終用戶,回答的問題是:What?Who?When?也就是這個(gè)業(yè)務(wù)是什么?有什么業(yè)務(wù)價(jià)值,需要達(dá)到什么目標(biāo)?有什么業(yè)務(wù)規(guī)則?牽涉到什么人(角色)?這些人(角色)分別要完成的任務(wù)是什么?業(yè)務(wù)何時(shí)發(fā)生?等。這些內(nèi)容通過業(yè)務(wù)需求說明書描述。
3. 功能需求面向開發(fā)人員,回答的問題是:How?也就是軟件系統(tǒng)或產(chǎn)品如何達(dá)到業(yè)務(wù)需求和用戶需求所描述的業(yè)務(wù)價(jià)值。這些內(nèi)容在需求規(guī)格說明書(SRS)中描述。
業(yè)務(wù)需求說明書和需求規(guī)格說明書作為項(xiàng)目范圍說明書中產(chǎn)品需求說明書的一部分在項(xiàng)目范圍說明書中引用。
§1.2.2 開發(fā)業(yè)務(wù)需求
如前所述,開發(fā)業(yè)務(wù)需求的目標(biāo)主要是確定項(xiàng)目高層次的需求、項(xiàng)目的目標(biāo)、項(xiàng)目邊界以及驗(yàn)收標(biāo)準(zhǔn)。具體做法上,我們?cè)陧?xiàng)目啟動(dòng)時(shí),由實(shí)施部門根據(jù)項(xiàng)目的招標(biāo)文件、投標(biāo)文件整理項(xiàng)目范圍說明書,主要從較高的層次上說明該項(xiàng)目需要完成的任務(wù),理清項(xiàng)目的邊界,然后組織銷售、售前、質(zhì)量控制部等部門與客戶召開評(píng)審會(huì)議,要求客戶對(duì)此文檔進(jìn)行書面確認(rèn)。
由于不同的客戶信息化水平程度不同,需要針對(duì)不同的客戶制定相應(yīng)的策略。比如,對(duì)于信息化程度較低的,主要由銷售負(fù)責(zé),從中標(biāo)開始對(duì)客戶高層到具體負(fù)責(zé)項(xiàng)目的信息部門負(fù)責(zé)人反復(fù)灌輸相關(guān)的概念,有時(shí)候這個(gè)過程需要反復(fù)多次才能奏效。當(dāng)然,也有一些不愿意簽字的客戶,這時(shí)候只能通過對(duì)照合同,對(duì)合同中范圍說明不清晰的,在項(xiàng)目范圍說明書中予以說明,有必要的召開協(xié)調(diào)會(huì)議,通過會(huì)議紀(jì)要的形式明確這部分內(nèi)容。會(huì)議紀(jì)要作為正式的項(xiàng)目文件,通過郵件發(fā)送給相關(guān)各方人員,如無問題,則視為默認(rèn)。
§1.2.3 開發(fā)用戶需求
用戶需求主要通過系統(tǒng)演示、需求會(huì)議、評(píng)審會(huì)議的方式討論和捕獲。在每一個(gè)迭代過程中,我們均采用以下的需求開發(fā)流程:
1. 項(xiàng)目經(jīng)理指定需求負(fù)責(zé)人,一般由熟悉業(yè)務(wù)的系統(tǒng)分析員擔(dān)任,同時(shí),與客戶溝通,要求客戶方指定相應(yīng)的需求負(fù)責(zé)人,形成由甲乙雙方組成需求調(diào)研和分析小組,共同對(duì)需求負(fù)責(zé);
2. 系統(tǒng)分析員編寫需求調(diào)研問題。調(diào)研問題主要目的用于明確不清晰、不確定的需求,采用問答的形式組織;
3. 項(xiàng)目經(jīng)理根據(jù)進(jìn)度與客戶溝通,確定需求調(diào)研會(huì)