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