很多需求分析的工作是從需求調(diào)研開始的,我們就從這里說起吧。需求調(diào)研是需求分析最重要的一環(huán),也最集中地體現(xiàn)了需求分析的特點(diǎn)——既是一份體力活兒,更是一份技術(shù)活兒。它既要求我們具有一種理解能力、設(shè)計(jì)能力,更要求我們具有一種與人交往、溝通的能力。
在一個(gè)陽光明媚的下午,項(xiàng)目經(jīng)理帶領(lǐng)著項(xiàng)目組成員,參加了客戶組織的見面會(huì),一個(gè)新的軟件研發(fā)項(xiàng)目就這樣開始了。雙方在一種友好的氣氛中進(jìn)行,相互寒暄,介紹與會(huì)人員,拉拉家常。逐漸地,會(huì)議開始進(jìn)入了正題。初次接觸客戶,對(duì)于項(xiàng)目團(tuán)隊(duì)意義重大。對(duì)方對(duì)你印象的好壞,今后如何與你交往,都在這個(gè)階段被確定下來。然而,在客戶至上的今天,與客戶保持適當(dāng)?shù)闹t卑是有必要的,但過于的謙卑卻常常給項(xiàng)目日后的進(jìn)程帶來風(fēng)險(xiǎn)。為什么這么說呢?過于的謙卑,處處都是諾諾諾,客戶說什么就是什么,就會(huì)使客戶變得非常強(qiáng)勢(shì)。這樣的結(jié)果就是,客戶提出了許多變態(tài)的、不太現(xiàn)實(shí)的、不合理的需求,而我們呢卻是一味地服從,客戶說什么就是什么。最后我們做得很累,結(jié)果卻不能讓客戶滿意。
正確的做法是,我們對(duì)客戶提出的需求進(jìn)行深入理解以后,運(yùn)用我們專業(yè)知識(shí),提出比客戶的原始需求更加合理、可操作的解決方案,讓客戶感覺你說的正是他們想要的。如果能夠這樣,客戶不僅能夠欣然接收你提出的方案,而且會(huì)感覺你非常專業(yè),你在客戶心目中的形象也會(huì)無形中提高,使你有更多的機(jī)會(huì)提出有利于開發(fā)的可行方案,降低開發(fā)的風(fēng)險(xiǎn)。這毫無疑問會(huì)形成一個(gè)良性循環(huán),但要做到這一點(diǎn)并不容易,毫無疑問,在與客戶接觸初期的表現(xiàn)起到了極其關(guān)鍵的作用。
人與人交往,往往在接觸的初期就決定了相互的行為方式,與客戶交往也是一樣。起初的唯唯諾諾,客戶說啥就是啥,必然造成客戶不再關(guān)注你的意見,對(duì)你發(fā)號(hào)施令就可以了。相反,起初展現(xiàn)出一位技術(shù)專家的姿態(tài),能大方而得體地提出自己的意見,會(huì)使客戶重視你的意見,甚至主動(dòng)征求你的意見。這一方面要求我們對(duì)自己要有足夠的自信,另一方面也要有循循善誘的表達(dá)能力。如果我們做到了這些,就會(huì)客戶心目中形成一種威信,使項(xiàng)目向著一種良性的方向前進(jìn)。
同時(shí),這樣的會(huì)議又是一個(gè)項(xiàng)目啟動(dòng)會(huì)議。客戶方領(lǐng)導(dǎo)要在會(huì)議上傳達(dá)給與會(huì)代表一個(gè)清晰的信號(hào),那就是與會(huì)代表今后要積極配合我們完成今后的工作。這時(shí)候,我們要弄清,客戶方有哪些角色,誰是這些角色的需求提出者與決策者。這是什么意思呢?在軟件項(xiàng)目中,特別是管理型軟件項(xiàng)目中,客戶都代表的是一個(gè)群體,而不是個(gè)人。他們代表的可能是一個(gè)單位、一個(gè)集團(tuán),甚至是一系列組織機(jī)構(gòu)。在這樣一個(gè)群體中,他們按照職能被劃分成了不同的角色。拿一個(gè)單位來說,橫向可能劃分成不同的部門,財(cái)務(wù)部、銷售部、采購部、生產(chǎn)部······不同的部門,由于業(yè)務(wù)的不同,對(duì)軟件的需求自然是不同的,因此我們?cè)谶M(jìn)行需求調(diào)研的時(shí)候,什么部門的需求就應(yīng)當(dāng)跟什么部門談。同時(shí),縱向又可以劃分為多個(gè)層次,如高層領(lǐng)導(dǎo)、中層領(lǐng)導(dǎo)與基層人員,理解這些方面格外重要:
1. 高層領(lǐng)導(dǎo)高層領(lǐng)導(dǎo)關(guān)心的是宏觀的目標(biāo),因此軟件研發(fā)目標(biāo)、宏觀統(tǒng)計(jì)報(bào)表、決策支持功能,都應(yīng)當(dāng)與高層領(lǐng)導(dǎo)談。他們關(guān)系的都是宏觀的問題,因此不要與他們談那些細(xì)枝末節(jié);
2. 中層領(lǐng)導(dǎo)中層領(lǐng)導(dǎo)關(guān)心的是具體的效益,即軟件給各個(gè)部門信息化管理方面帶來的效益,因此,中層領(lǐng)導(dǎo)是各項(xiàng)業(yè)務(wù)流程、功能模塊的需求決策者。他們關(guān)心功能的定義、業(yè)務(wù)流轉(zhuǎn)的銜接、查詢報(bào)表的設(shè)計(jì),但不太關(guān)心一些具體的操作,以及一些具體業(yè)務(wù)流程的細(xì)節(jié);
3. 基層人員基層人員是每一項(xiàng)業(yè)務(wù)流程的操作者,也是軟件今后真正的使用者。他們是真正了解你所要開發(fā)的軟件的業(yè)務(wù)需求的領(lǐng)域?qū)<?,是你進(jìn)行需求調(diào)研的重點(diǎn)對(duì)象。但是,基層人員往往受到自身視野的局限,可能只清楚自己工作涉及的十分狹小的一個(gè)范圍,因此我們需要努力尋找那些業(yè)務(wù)涉及面廣,經(jīng)驗(yàn)豐富,又有一定大局觀的真正的專家。另外,他們就是軟件今后真正的使用者,讓他們參加,會(huì)讓他們成為今后軟件推行的忠實(shí)支持者,對(duì)其他操作人員的指導(dǎo)者,益處多多。而他們關(guān)心的則是每項(xiàng)操作的細(xì)節(jié)。
劃分清楚角色,弄清楚每個(gè)角色的需求提出者與決策者,就是為了在今后的需求調(diào)研中找對(duì)正確的人,使今后的調(diào)研工作事半功倍。另外,如果客戶方是一個(gè)集團(tuán)、一個(gè)多組織機(jī)構(gòu)的政府機(jī)關(guān)、事業(yè)單位,需求的多元化問題必須引起我們的足夠重視。什么是多元化問題呢?比如同樣一個(gè)業(yè)務(wù)操作,在同一級(jí)別的A單位是這樣操作的,而在B單位卻是那樣操作的。需求的多元化往往會(huì)給今后的軟件開發(fā)帶來巨大挑戰(zhàn)。因此,我們要在需求調(diào)研階段降低軟件的多元化需求。要解決這樣的問題,首先應(yīng)當(dāng)從高層領(lǐng)導(dǎo)著手,提出規(guī)范化管理的口號(hào)。同時(shí),在進(jìn)行需求調(diào)研時(shí),盡可能地召集各個(gè)單位的代表在一起開會(huì)討論。同時(shí),應(yīng)當(dāng)有高層領(lǐng)導(dǎo),或者指定一個(gè)負(fù)責(zé)人,在出現(xiàn)分歧的時(shí)候最終拍板決策。這些都需要在項(xiàng)目啟動(dòng)的時(shí)候事先規(guī)劃好。
最后,與客戶方領(lǐng)導(dǎo)制訂出軟件目標(biāo),是相當(dāng)重要但常常被我們忽視的一個(gè)步驟。軟件信息化管理不是包治百病的神藥。很多項(xiàng)目的失敗都?xì)w因與項(xiàng)目目標(biāo)不明確造成的項(xiàng)目范圍的失控。因此,這時(shí)討論項(xiàng)目目標(biāo),既重要又適時(shí)。
也許在此之前我們已經(jīng)做足了功課,對(duì)業(yè)務(wù)需求進(jìn)行了一番詳細(xì)的整理,有了一大堆疑問急需解答。但是,在這時(shí),不是解答具體問題的地方,這是我們常常會(huì)犯的一個(gè)毛病。在這樣一個(gè)會(huì)議上,我們應(yīng)當(dāng)詢問客戶方領(lǐng)導(dǎo)對(duì)這個(gè)項(xiàng)目的期望,渴望達(dá)到的項(xiàng)目預(yù)期,而我們應(yīng)當(dāng)描述的,是對(duì)達(dá)到這些預(yù)期的整體解決方案,凡此等等。
俗話說:萬事開頭難。如果你在項(xiàng)目開始的時(shí)候總感覺千頭萬緒不知如何著手,在這里我給大家的三點(diǎn)建議:1)樹立良好的職業(yè)威信;2)進(jìn)行詳細(xì)角色分析,將與會(huì)各方代表對(duì)號(hào)入座;3)從宏觀上制訂目標(biāo)與方案。隨后的工作,就是與各方代碼建立聯(lián)系,逐一拜訪他們,將需求調(diào)研工作一步一步進(jìn)行下去。
我們應(yīng)當(dāng)怎樣做需求分析我們應(yīng)當(dāng)怎樣做需求調(diào)研:初識(shí)我們應(yīng)當(dāng)怎樣做需求調(diào)研:拜訪我們應(yīng)當(dāng)怎樣做需求調(diào)研:研討會(huì)我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求研討我們應(yīng)當(dāng)怎樣做需求調(diào)研:迭代我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(上)我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(下)我們應(yīng)當(dāng)怎樣做需求分析:功能角色分析與用例圖我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(上)我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(下)我們應(yīng)當(dāng)怎樣做需求分析:用例說明我們應(yīng)當(dāng)怎樣做需求分析:查詢報(bào)表分析我們應(yīng)當(dāng)怎樣做需求分析:子用例與擴(kuò)展用例我們應(yīng)當(dāng)怎樣做需求分析:行動(dòng)圖和狀態(tài)圖我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)領(lǐng)域分析我們應(yīng)當(dāng)怎樣做需求分析:原文分析法我們應(yīng)當(dāng)怎樣做需求分析:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)我們應(yīng)當(dāng)怎樣做需求分析:非功能需求我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求列表我們應(yīng)當(dāng)怎樣做需求確認(rèn):一個(gè)需求列表的實(shí)例我們應(yīng)當(dāng)怎樣做需求確認(rèn):快速原型法我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求規(guī)格說明書我們應(yīng)當(dāng)怎樣做需求確認(rèn):評(píng)審與簽字確認(rèn)會(huì)(續(xù))