當(dāng)軟件開發(fā)公司在承接軟件外包項(xiàng)目時(shí),需求公司團(tuán)隊(duì)進(jìn)行項(xiàng)目開發(fā),交付產(chǎn)品,需求分析是一個(gè)非常主要核心的過程,所以我們對(duì)需求分析進(jìn)行分解。
1到用戶前的準(zhǔn)備
1.1 組織隊(duì)伍
根據(jù)實(shí)際的工作量及其他情況,組建需求調(diào)研團(tuán)隊(duì),提供辦公設(shè)備,明確崗位職責(zé)、召開項(xiàng)目啟動(dòng)會(huì)。1.2準(zhǔn)備相應(yīng)文檔
乙方的系統(tǒng)分析師同甲方的需求提供人員正式接觸前,制定一個(gè)問詢表及需求分析計(jì)劃。一般情況下只需要完成一個(gè)整體細(xì)節(jié)問詢表,問詢用戶為明確需求已經(jīng)完成的文檔情況(如果可以在進(jìn)行正式接觸前可以得到并了解完成好)、業(yè)務(wù)目的、當(dāng)前目標(biāo)、長遠(yuǎn)目標(biāo)、當(dāng)前準(zhǔn)備情況、完成的業(yè)務(wù)功能列表、將來系統(tǒng)操作人員的業(yè)務(wù)及電腦技術(shù)了解情況、終操作用戶、當(dāng)前及將來的硬件、軟件及網(wǎng)絡(luò)環(huán)境等問題。
由軟件開發(fā)公司的系統(tǒng)分析師根據(jù)對(duì)業(yè)務(wù)的了解程度,適當(dāng)編寫各業(yè)務(wù)功能細(xì)節(jié)問詢表。不過業(yè)務(wù)功能細(xì)節(jié)問詢表的使用,是在業(yè)務(wù)需求調(diào)研過程中用戶表明其需求后,再根據(jù)問題還沒有明確的情況下再進(jìn)行問詢的。
其他業(yè)務(wù)相關(guān)政策法規(guī)、技術(shù)文檔、技術(shù)支持人員的通信錄等也要進(jìn)行相應(yīng)的準(zhǔn)備。
1.3 聯(lián)系及了解用戶方
同用戶進(jìn)行聯(lián)系并取得對(duì)方的人員名單、分工情況、權(quán)重、工作計(jì)劃、工作時(shí)間、節(jié)假日安排(特別是用戶公司內(nèi)部的額外規(guī)定),如果可能的情況下要求也有用戶的IT人員參加需求過程,實(shí)際的需求如果沒有IT人員的參加,在后面的更改一般是IT人員提出的。應(yīng)在需求過程中把用戶IT人員的需求調(diào)研,作為業(yè)務(wù)調(diào)研中一部分。1.4 編寫計(jì)劃
根據(jù)當(dāng)前情況,編寫需求分析計(jì)劃,明確正式開始日期,中間階段性日期(時(shí)間段可多個(gè),調(diào)研時(shí)間不大于3天),結(jié)束時(shí)間,人員名單,分工情況,需用戶提供的幫助等。將計(jì)劃發(fā)送給用戶請(qǐng)其確認(rèn),在可能的情況下協(xié)調(diào)用戶和開發(fā)商的計(jì)劃,以便共同開展工作。對(duì)于計(jì)劃如果能編寫及控制到每日是好的,但是否可以達(dá)到真正可控制到日,那就看你的能力了。如果每3天為一個(gè)中間性階段進(jìn)行控制,延遲的時(shí)間可以通過加班來彌補(bǔ)。計(jì)劃好根據(jù)一天工作8小時(shí)進(jìn)行。如果要去用戶所在地進(jìn)行工作,還要準(zhǔn)備相應(yīng)的辦公工具,人手一臺(tái)筆記本電腦(電源插座及網(wǎng)絡(luò)互連線也要考慮)是比較好的資源配置。2需求調(diào)研
2.1 需求調(diào)研啟動(dòng)
本次所說的第一日是軟件開發(fā)公司的系統(tǒng)開發(fā)人員到用戶處正式需求調(diào)研過程的第一日。如果是異地調(diào)研,那么在第一日前一日軟件開發(fā)公司的系統(tǒng)開發(fā)人員應(yīng)到達(dá)用戶所在地,住宿,了解住宿地周邊情況。好是早些休息,為第一日工作開始做好準(zhǔn)備。一般第一日的上午是軟件開發(fā)公司的系統(tǒng)分析人員和用戶業(yè)務(wù)需要者進(jìn)行整體介紹,了解辦公環(huán)境,建立需求調(diào)研過程辦公環(huán)境。如果是小型項(xiàng)目涉及人員不多(雙方人員共同不多于3人),一般上午可以進(jìn)行調(diào)研工作1到2小時(shí),不然下午才能正式開始工作(也就說做計(jì)劃時(shí)第1天一般只有半日的工作時(shí)間)。2.2 調(diào)研過程
調(diào)研的過程推薦軟件開發(fā)公司系統(tǒng)開發(fā)人員有專人進(jìn)行會(huì)議記錄,并在每日會(huì)議結(jié)束后,當(dāng)場(chǎng)宣布本次會(huì)議的結(jié)果,并由參加會(huì)議人員進(jìn)行簽字。第二日復(fù)印或發(fā)送電子文件給參加會(huì)議人員及相關(guān)人員。以便做到有據(jù)可查,明確過程。軟件開發(fā)公司系統(tǒng)開發(fā)人員每周對(duì)用戶提供開發(fā)周報(bào),告訴用戶當(dāng)前開發(fā)的進(jìn)展、是否有問題、是否用戶協(xié)助等,這是一個(gè)好的加強(qiáng)雙方溝通的方法。注意:在調(diào)研過程的中系統(tǒng)開發(fā)人員的變更會(huì)對(duì)計(jì)劃產(chǎn)生重大的影響,不要簡單認(rèn)為是人員更換的問題。因?yàn)樵谡{(diào)研過程中對(duì)業(yè)務(wù)的理解,不是通過看看文檔就可以達(dá)到。3天通過討論達(dá)到對(duì)需求理解的程序,9天對(duì)文檔的學(xué)習(xí)也不一定能達(dá)到。
2.3 三個(gè)階段
分析的初期,即總體分析階段,需要得到整體意義上的輪廓需求,此時(shí),應(yīng)與客戶方總工以上層次的人員進(jìn)行交流,這一層次的人,對(duì)未來的系統(tǒng)會(huì)有完整的描繪,可以劃分出子系統(tǒng)、及其之間的關(guān)系,這也是高級(jí)管理層對(duì)系統(tǒng)的期望??梢砸源俗鳛榫V領(lǐng)性的文檔指導(dǎo)進(jìn)一步的分析,并約束后續(xù)的分析過程,避免需求范圍漫無邊際的擴(kuò)大;專業(yè)系統(tǒng)分析階段,通常,客戶單位都會(huì)有專業(yè)分工,彼此之間既相互獨(dú)立,又會(huì)在某些點(diǎn)上發(fā)生聯(lián)系。此階段應(yīng)與客戶方專業(yè)人員進(jìn)行深入的討論。這一層次的人,對(duì)自己的專業(yè)相當(dāng)熟悉,對(duì)專業(yè)內(nèi)的需求會(huì)非常到位,大都年富力強(qiáng),有相當(dāng)?shù)拈啔v和理解能力,甚至自己都可以繪制業(yè)務(wù)流圖,總結(jié)業(yè)務(wù)功能點(diǎn)。對(duì)他們應(yīng)充分鼓勵(lì),盡量調(diào)動(dòng)其積極性;系統(tǒng)關(guān)聯(lián)分析階段,在各專業(yè)系統(tǒng)得到充分分析的基礎(chǔ)上,緊接著就要理清它們之間的關(guān)系,這是提升需求檔次的關(guān)鍵階段,也是高級(jí)領(lǐng)導(dǎo)層和專業(yè)人員都關(guān)心的階段。通常,客戶單位都會(huì)有一些零散的軟件,如財(cái)務(wù)軟件,部頒軟件等,這些專業(yè)軟件都發(fā)揮著重要的作用,但都是些信息孤島,客戶會(huì)很自然的希望能把這些信息融合到整個(gè)系統(tǒng)中來,為更多的人所共享。同時(shí),也希望數(shù)據(jù)能夠在各專業(yè)系統(tǒng)間順暢的流動(dòng),從而減少重復(fù)勞動(dòng),提高工作效率。此階段應(yīng)把總工層和專業(yè)人員召集到一起,共同理清系統(tǒng)間的接口。經(jīng)過這三個(gè)階段,對(duì)需求的描述將比較準(zhǔn)確和完整。3 一般情況下需明確的問題
當(dāng)前整體業(yè)務(wù)需求的目的
要求提供的需求功能列表
將來發(fā)展的設(shè)想
明確服務(wù)器、客戶機(jī)的軟、硬件及性能要求(容量、速度、可操作性等)
用戶目前相關(guān)的技術(shù)人員和業(yè)務(wù)人員情況
將來終系統(tǒng)操作人員的技術(shù)及業(yè)務(wù)人員情況
用戶需求的系統(tǒng)及用戶本身或其它系統(tǒng)的接口要求
用戶的其它要求
要求提供的需求功能列表
將來發(fā)展的設(shè)想
明確服務(wù)器、客戶機(jī)的軟、硬件及性能要求(容量、速度、可操作性等)
用戶目前相關(guān)的技術(shù)人員和業(yè)務(wù)人員情況
將來終系統(tǒng)操作人員的技術(shù)及業(yè)務(wù)人員情況
用戶需求的系統(tǒng)及用戶本身或其它系統(tǒng)的接口要求
用戶的其它要求
4 需求完全明確情況
對(duì)于整體調(diào)研過后就要進(jìn)行各個(gè)具體業(yè)務(wù)需求的調(diào)研,對(duì)于具體需求調(diào)研如果是用戶提供的現(xiàn)有文檔,軟件開發(fā)公司的系統(tǒng)分析人員只是對(duì)業(yè)務(wù)進(jìn)行了解及進(jìn)行修改為系統(tǒng)分析人員及業(yè)務(wù)人員全可以看懂的需求說明書,那么這個(gè)過程就比較容易。只要系統(tǒng)分析人員把業(yè)務(wù)文檔看懂看明白,并且對(duì)于一些難理解的業(yè)務(wù)描述修改為易懂(有些業(yè)務(wù)名詞有一定的專業(yè)性就要進(jìn)行額外的說明)、明確進(jìn)出的單據(jù)(數(shù)據(jù)項(xiàng))就可以。當(dāng)然編寫需求說明書具體的細(xì)節(jié)可以參見其他的眾多的書籍及文件模版。
5 需求不完全明確情況
如果用戶對(duì)于自己的需求在調(diào)研開始并沒有完全明確,需要進(jìn)行引導(dǎo)及細(xì)化,那么這個(gè)過程就比較麻煩了。對(duì)于用戶本身需求不明情況下,對(duì)于業(yè)務(wù)要先從基本業(yè)務(wù)進(jìn)行細(xì)化,對(duì)于不明業(yè)務(wù)或不確定業(yè)務(wù)在后面進(jìn)行。對(duì)于進(jìn)出的單據(jù)一般在這種情況下用戶當(dāng)沒有現(xiàn)存文檔,這個(gè)過程只需明確單據(jù)進(jìn)出的必須數(shù)據(jù)源就可以,如果做到細(xì)節(jié),由用戶在需求調(diào)研期確定單證,是不太可能的----只是設(shè)計(jì)單據(jù)的樣式、風(fēng)格就不是短時(shí)間可以完成的。對(duì)于報(bào)表也只能明確基本報(bào)表要求及數(shù)據(jù)項(xiàng)。一般這種情況使用原型法進(jìn)行,先做一個(gè)簡單的,在簡單的上面再進(jìn)行完善。對(duì)于用戶本身需求不明情況下的調(diào)研要做每日(或2到3天,多3天為間隔)的工作(分析進(jìn)展)記錄,由雙方簽字,因?yàn)檎{(diào)研過程會(huì)出現(xiàn)為用戶要求添加一支新業(yè)務(wù),對(duì)新業(yè)務(wù)進(jìn)行分析后,因某些原因發(fā)現(xiàn)不能添加。這個(gè)過程的結(jié)果是一個(gè)0,但為證明是0這結(jié)果可能花了很長的時(shí)間。要記錄這個(gè)過程,說明調(diào)研過程中做了什么事情,有時(shí)有些人可能會(huì)說為什么這么長時(shí)間才出這點(diǎn)點(diǎn)東西,到時(shí)以便說明原因。
6 需求分析的方法
- 繪制系統(tǒng)關(guān)聯(lián)圖,這種關(guān)聯(lián)圖是用于定義系統(tǒng)與系統(tǒng)外部實(shí)體間的界限和接口的簡單模型。同時(shí)它也明確了通過接口的信息流和物質(zhì)流。
- 創(chuàng)建用戶界面原型,當(dāng)開發(fā)人員或用戶不能確定需求時(shí),開發(fā)一個(gè)用戶界面原型——一個(gè)可能的局部實(shí)現(xiàn),這樣使得許多概念和可能發(fā)生的事更為直觀明了。用戶通過評(píng)價(jià)原型將使項(xiàng)目參與者能更好地相互理解所要解決的問題。
- 分析需求可行性,在允許的成本、性能要求下,分析每項(xiàng)需求實(shí)施的可行性,明確與每項(xiàng)需求實(shí)現(xiàn)相聯(lián)系的風(fēng)險(xiǎn),包括與其它需求的沖突,對(duì)外界因素的依賴和技術(shù)障礙。
- 確定需求的優(yōu)先級(jí)別,應(yīng)用分析方法來確定使用實(shí)例、產(chǎn)品特性或單項(xiàng)需求實(shí)現(xiàn)的優(yōu)先級(jí)別。以優(yōu)先級(jí)為基礎(chǔ)確定產(chǎn)品版本將包括哪些特性或哪類需求。當(dāng)允許需求變更時(shí),在特定的版本中加入每一項(xiàng)變更,并在那個(gè)版本計(jì)劃中作出需要的變更。
- 為需求建立模型,需求的圖形分析模型是軟件需求規(guī)格說明極好的補(bǔ)充說明。它們能提供不同的信息與關(guān)系以有助于找到不正確的、不一致的、遺漏的和冗余的需求。這樣的模型包括數(shù)據(jù)流圖、實(shí)體關(guān)系圖、狀態(tài)變換圖、對(duì)話框圖、對(duì)象類及交互作用圖。
- 依據(jù)分析階段確定合適的客戶方配合人員。
- 多方位描述同一需求
- 清晰化每一數(shù)據(jù)項(xiàng)
- 充分挖掘潛在需求
對(duì)這些潛在需求,會(huì)有兩種處理方式:告訴客戶,客戶會(huì)得到啟發(fā),可能進(jìn)一步提出新的需求,會(huì)有一些更大膽的想法,從而擴(kuò)大了需求范圍,增加了工作量,甚至?xí)绊懙焦て?;不告訴客戶,等客戶想到了再說。
這些需求如果對(duì)于產(chǎn)品軟件,可能會(huì)是一個(gè)賣點(diǎn),要盡可能的去挖掘。但對(duì)項(xiàng)目軟件,考慮各種風(fēng)險(xiǎn),有時(shí)候可能會(huì)回避,或?qū)蛻綦[瞞。
- 積累領(lǐng)域知識(shí)
- 抱著學(xué)習(xí)與指導(dǎo)并存的態(tài)度
7 完成需求確認(rèn)
對(duì)于需求終的確認(rèn)需求先由系統(tǒng)開發(fā)人員對(duì)編寫的文檔進(jìn)行內(nèi)部審核及修訂,然后交由用戶業(yè)務(wù)人員進(jìn)行確認(rèn),明確系統(tǒng)開發(fā)人員已經(jīng)了解業(yè)務(wù)需求,并進(jìn)行簽字確認(rèn)。
8 誤區(qū)
在進(jìn)行需求分析的時(shí)候,容易陷入一些誤區(qū),導(dǎo)致分析結(jié)果不理想。
8.1 分析結(jié)果越復(fù)雜越好
這是技術(shù)型分析人員經(jīng)常碰到的情況,認(rèn)為分析出錯(cuò)綜復(fù)雜的關(guān)系,花哨的圖表才能顯示出分析水平高。其實(shí),分析經(jīng)常要經(jīng)歷"簡單-復(fù)雜-簡單"的過程,前一個(gè)簡單表現(xiàn)為分析人員"認(rèn)為簡單";隨著分析的深入,原以為簡單的問題會(huì)越來越復(fù)雜;后,經(jīng)過概括、消化、分解,使得需求簡單明了。8.2 必須一次到位
由于項(xiàng)目工期緊,或者客戶單位地理位置偏遠(yuǎn),不想反復(fù)去現(xiàn)場(chǎng),希望通過一次需求分析就能得到完整的、不再改變的結(jié)果。有這種情況時(shí),表現(xiàn)為分析人員對(duì)客戶方配合人員窮追猛問,或堅(jiān)持要求配合人員做出保證,承諾需求范圍不再擴(kuò)大等等。結(jié)果往往是雙方關(guān)系緊張,配合人員怕?lián)?zé)任,提出過多的靈活的、可配置的一些要求,無端增加了后續(xù)設(shè)計(jì)和編碼的工作量。一次到位的想法是不現(xiàn)實(shí)的,隨著開發(fā)工作的進(jìn)行,用戶經(jīng)常會(huì)提出以前沒想到的需求,或者更改已有的需求。需求必然有一個(gè)迭代的過程,變是不可避免的,關(guān)鍵是對(duì)于變化的控制,比如通過正規(guī)而繁復(fù)的流程提高需求變化時(shí)客戶付出的代價(jià):告知客戶如此變化將會(huì)使工期延長,或需要追加資金等等,盡管對(duì)于"軟件屬于買方市場(chǎng)"的現(xiàn)狀來說,開發(fā)方往往叫不起這個(gè)板,但這樣的控制還是有一定的效果的。8.3 客戶的需求必須全部滿足
陷入這一誤區(qū)的分析人員,往往自己的領(lǐng)域知識(shí)欠缺,對(duì)客戶的需求是否合理,缺乏分辨能力,只能由客戶牽著走,這樣會(huì)帶來很大的風(fēng)險(xiǎn):造成需求冗余,項(xiàng)目返工,更有對(duì)需求變化失去控制的危險(xiǎn),隨著項(xiàng)目的開展,整個(gè)軟件開發(fā)團(tuán)隊(duì)會(huì)越來越痛苦。所以必須加深自己的領(lǐng)域知識(shí),變被動(dòng)接受為主動(dòng)引導(dǎo),進(jìn)而拒絕客戶的不合理需求。【北京華盛恒輝科技有限公司 ——(hivekion)是一家軟件定制開發(fā)公司,專注IT產(chǎn)品研發(fā)與服務(wù),堅(jiān)持穩(wěn)健經(jīng)營、持續(xù)創(chuàng)新、開放合作,在安全生產(chǎn)、大數(shù)據(jù)處理等領(lǐng)域構(gòu)筑了端到端的解決方案優(yōu)勢(shì),為企業(yè)客戶提供有競(jìng)爭力的IT解決方案、 產(chǎn)品和服務(wù)。】