我們?cè)鯓幼鲂枨蠓治鯻第1頁
我們?cè)鯓幼鲂枨蠓治鯻第2頁
我們?cè)鯓幼鲂枨蠓治鯻第3頁
我們?cè)鯓幼鲂枨蠓治鯻第4頁
我們?cè)鯓幼鲂枨蠓治鯻第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

-.z.我們應(yīng)當(dāng)怎樣做需求分析又到新年了,日歷又要從2021年翻到2021年了,這使我有太多的感慨,進(jìn)而勾起了對(duì)太多往事的回憶。過去的10年,毫無疑問是中國(guó)軟件業(yè)開展最快的10年。當(dāng)我們剛剛畢業(yè)的時(shí)候,還在使用VB、PB開發(fā)一些簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用,而現(xiàn)在卻幾乎看不到它們的蹤影,換來的是諸如J2EE和.NET這樣的大型web應(yīng)用。而這期間,RUP、*P、敏捷開發(fā)、持續(xù)集成??????一個(gè)接一個(gè)的新概念層出不窮,令人眼花繚亂?,F(xiàn)在想來,恍如隔世。但更令我印象深刻而難以忘懷的,是我親自經(jīng)歷的、親眼目睹的、道聽途說的一個(gè)又一個(gè)的軟件工程,它們有的獲得了成功,但更多的是令人沮喪的失敗。套用一下大文豪托爾斯泰體:幸福的家庭都是一樣的,不幸的家庭卻各有各的不幸;幸福的軟件工程都是一樣的,不幸的軟件工程卻各有各的不幸;或者說,成功的軟件工程都是一樣的,失敗的工程卻各有各的問題。我常常在想,我們的工程開發(fā)到底怎么了,進(jìn)而把它們一個(gè)一個(gè)的剝開來深入分析,竟然觸目驚心。它們有的是需求的問題,有的是客戶關(guān)系的問題,還有設(shè)計(jì)的問題、技術(shù)的問題、時(shí)間管理的問題、人員培養(yǎng)的問題??????但歸根到底更多的還是需求的問題。需求分析既是一份體力活兒,更是一份技術(shù)活兒,它既是人際交往的藝術(shù),又是邏輯分析與嚴(yán)密思考的產(chǎn)物。正是我們?cè)谛枨蠓治鲞^程存在的巨大隱患,最終導(dǎo)致了則多工程的失敗。也許你認(rèn)為我在危言聳聽,好吧,我來舉幾個(gè)典型事例分析分析吧。我的第一個(gè)故事來自大名鼎鼎的東軟。我在2005年接一個(gè)工程的時(shí)候,聽說這個(gè)工程之前是東軟做的。當(dāng)時(shí)東軟在做這個(gè)工程的時(shí)候,整個(gè)過程經(jīng)歷了10屢次構(gòu)造性的大變更,局部性的調(diào)整更是不計(jì)其數(shù)。據(jù)說*天早上,客戶對(duì)*個(gè)功能不滿意,他們不得不對(duì)幾百處程序進(jìn)展修改。之后客戶對(duì)修改的內(nèi)容還是不滿意,又不得不將幾百處修改重新改回來。最后這個(gè)工程導(dǎo)致的結(jié)果是,整個(gè)這個(gè)工程組的所有成員都離開了東軟,并似乎從此不愿涉足軟件開發(fā)領(lǐng)域。多么慘痛的教訓(xùn)啊!我常常聽到網(wǎng)友抱怨客戶總是對(duì)需求改來改去,但客戶對(duì)需求改來改去的真正原因是什么呢?當(dāng)我們對(duì)客戶的需求沒有真正理解清楚時(shí),我們做出來的東西客戶必然不滿意??蛻糁恢浪粷M意,但怎樣才能使他滿意呢?他不知道,于是就在一點(diǎn)兒一點(diǎn)兒試,于是這種反復(fù)變更就這樣發(fā)生了。如果我們明白了這一點(diǎn),深入地去理解客戶的業(yè)務(wù),進(jìn)而想到客戶的心坎兒上去,最后做出來的東西必然是客戶滿意的。記住,當(dāng)客戶提出業(yè)務(wù)變更的時(shí)候,我們一定不能被客戶牽著走,客戶說啥就是啥。我們要從業(yè)務(wù)角度深入的去分析,他為什么提出變更,提得合不合理,我有沒有更合理的方案滿足這個(gè)需求。當(dāng)我們提出更加合理的方案時(shí),客戶是樂于承受的,變更也變得可控了。第二個(gè)故事來自我自己的工程,一個(gè)早期的工程。在這個(gè)工程中,客戶扔給了我們很多他們目前正在使用的統(tǒng)計(jì)報(bào)表,要我們按照?qǐng)?bào)表的格式做出來。這些報(bào)表都是手工報(bào)表,許多格式既不標(biāo)準(zhǔn),又很難于被計(jì)算機(jī)實(shí)現(xiàn)。這些報(bào)表令我消耗了不少腦細(xì)胞,直到最終工程失敗都沒法完成。這件事留給我的深刻教訓(xùn)是,不能客戶怎么說軟件就怎么做??蛻籼岢龅脑夹枨笸遣豢紤]技術(shù)實(shí)現(xiàn),基于非計(jì)算機(jī)管理的操作模式提出來的。他們提出的很多需求常常比擬理想而不切實(shí)際,畢竟人家是非技術(shù)的。但我們作為技術(shù)人員,需求分析必須實(shí)事求是的、基于技術(shù)可以實(shí)現(xiàn)的角度去考慮。那種"有條件要上,沒有條件創(chuàng)造條件也要上〞的魯莽行事,結(jié)果必然是悲慘的。所以我們必須要基于技術(shù)實(shí)現(xiàn)去引導(dǎo)客戶的需求。同時(shí),計(jì)算機(jī)信息化管理就是一次改革,對(duì)以往手工管理模式的改革。如果我們上了信息化管理系統(tǒng),采用的管理模式卻依然是過去的手工模式,新系統(tǒng)的優(yōu)勢(shì)從何而來呢?因此,我們做需求就應(yīng)當(dāng)首先理解現(xiàn)有的管理模式,然后站在信息化管理的角度去審視他們的管理模式是否合理,最后一步一步地去引導(dǎo)他們按照更加合理的方式去操作與管理。2007年,我參與了一個(gè)集團(tuán)信息化建立的工程。這個(gè)工程中的客戶是一個(gè)龐大的群體,他們分別扮演著各種角色。從機(jī)構(gòu)層次劃分,有集團(tuán)領(lǐng)導(dǎo)、二級(jí)機(jī)構(gòu)人員、三級(jí)機(jī)構(gòu)人員;從職能角色劃分,有高層領(lǐng)導(dǎo)、財(cái)務(wù)人員、生產(chǎn)管理員、采購(gòu)人員、銷售人員,等等。在這樣一個(gè)復(fù)雜場(chǎng)景中,不同人員對(duì)這個(gè)工程的需求是各自不同的。非常遺憾的是,我們?cè)谶M(jìn)展需求分析的時(shí)候沒有認(rèn)真分析清楚所有類型人員的需求。在進(jìn)展需求調(diào)研的時(shí)候,總是集團(tuán)領(lǐng)導(dǎo)帶著我們到基層單位,然后基層單位將各方面的人員叫來開大會(huì)。這樣的大會(huì),各類型的人員七嘴八舌各說各自的需求,還有很多基層人員在大會(huì)上因?yàn)樾邼揪蜎]有提出自己的需求。這樣經(jīng)過數(shù)次開會(huì),需求調(diào)研就草草收?qǐng)觥N覀兡弥粋€(gè)不充分的需求分析結(jié)果就開場(chǎng)工程開發(fā),最終的結(jié)果可想而知。直到工程上線以后,我們才發(fā)現(xiàn)許多更加細(xì)節(jié)的業(yè)務(wù)需求都沒能分析到,系統(tǒng)根本沒法運(yùn)行,不得不宣告失敗。一個(gè)軟件工程的需求調(diào)研首先必須要進(jìn)展角色分析,然后對(duì)不同的角色分別進(jìn)展調(diào)研。需求調(diào)研的初期需要召開工程發(fā)動(dòng)大會(huì),這是十分必要的。但真正要完成需求分析,應(yīng)該是一個(gè)一個(gè)的小會(huì),1~3個(gè)業(yè)務(wù)專家,只討論*個(gè)領(lǐng)域的業(yè)務(wù)需求,并且很多問題都不是能一蹴而就完成的,我們必須與專家建立聯(lián)系,反復(fù)溝通后完成。需求分析必須遵從的是一定的科學(xué)方法,而不是盲目的大上快上。我的最后一個(gè)故事可能典型到幾乎每個(gè)人都曾經(jīng)遇到過。我們的工程從需求分析到設(shè)計(jì)、開發(fā)、測(cè)試都十分順利。但到了工程進(jìn)展的后期,快到達(dá)最后期限時(shí),我們將我們的開發(fā)成果提交給客戶看,客戶卻對(duì)開發(fā)結(jié)果不滿意,提出了一大堆修改,而且這些修改工作量還不小。怎么辦呢?加班、趕工,測(cè)試時(shí)間被最大限度壓縮。最后工程倒是如期上線了,但大家疲憊不堪,并且上線以后才發(fā)現(xiàn)許多的BUG。需求分析不是一蹴而就的,它應(yīng)當(dāng)貫穿整個(gè)開發(fā)周期,不斷的分析確認(rèn)的過程。以上這個(gè)事例,如果我們提早將開發(fā)成果給客戶看,提早解決問題,后面的情況就將不再發(fā)生。這就是敏捷開發(fā)倡導(dǎo)的需求反應(yīng)。敏捷開發(fā)認(rèn)為,需求分析階段不可能解決所有的需求問題,因此在設(shè)計(jì)、開發(fā)、測(cè)試,直到最終交付客戶,這整個(gè)過程都應(yīng)當(dāng)不停地用開發(fā)的成果與客戶交流,及時(shí)獲得反應(yīng)。只有這樣才能及時(shí)糾正需求理解的偏差,保證工程的成功。以上的故事各有各自的不幸,各自都在不同的開發(fā)環(huán)節(jié)出現(xiàn)了問題。但經(jīng)過深入的分析,各自的問題最終都?xì)w結(jié)為需求分析出現(xiàn)了問題。為了使我們今后的軟件工程不會(huì)重蹈覆轍,似乎真的有必要討論一下我們應(yīng)該怎樣做需求分析。一、初識(shí)很多需求分析的工作是從需求調(diào)研開場(chǎng)的,我們就從這里說起吧。需求調(diào)研是需求分析最重要的一環(huán),也最集中地表達(dá)了需求分析的特點(diǎn)——既是一份體力活兒,更是一份技術(shù)活兒。它既要求我們具有一種理解能力、設(shè)計(jì)能力,更要求我們具有一種與人交往、溝通的能力。在一個(gè)陽光明媚的下午,工程經(jīng)理帶著著工程組成員,參加了客戶組織的見面會(huì),一個(gè)新的軟件研發(fā)工程就這樣開場(chǎng)了。雙方在一種友好的氣氛中進(jìn)展,相互應(yīng)酬,介紹與會(huì)人員,拉拉家常。逐漸地,會(huì)議開場(chǎng)進(jìn)入了正題。初次接觸客戶,對(duì)于工程團(tuán)隊(duì)意義重大。對(duì)方對(duì)你印象的好壞,今后如何與你交往,都在這個(gè)階段被確定下來。然而,在客戶至上的今天,與客戶保持適當(dāng)?shù)闹t卑是有必要的,但過于的謙卑卻常常給工程日后的進(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ì)無形中提高,使你有更多的時(shí)機(jī)提出有利于開發(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ì)客戶心目中形成一種威信,使工程向著一種良性的方向前進(jìn)。同時(shí),這樣的會(huì)議又是一個(gè)工程啟動(dòng)會(huì)議??蛻舴筋I(lǐng)導(dǎo)要在會(huì)議上傳達(dá)給與會(huì)代表一個(gè)清晰的信號(hào),那就是與會(huì)代表今后要積極配合我們完成今后的工作。這時(shí)候,我們要弄清,客戶方有哪些角色,誰是這些角色的需求提出者與決策者。這是什么意思呢?在軟件工程中,特別是管理型軟件工程中,客戶都代表的是一個(gè)群體,而不是個(gè)人。他們代表的可能是一個(gè)單位、一個(gè)集團(tuán),甚至是一系列組織機(jī)構(gòu)。在這樣一個(gè)群體中,他們按照職能被劃分成了不同的角色。拿一個(gè)單位來說,橫向可能劃分成不同的部門,財(cái)務(wù)部、銷售部、采購(gòu)部、生產(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ū)<遥悄氵M(jìn)展需求調(diào)研的重點(diǎn)對(duì)象。但是,基層人員往往受到自身視野的局限,可能只清楚自己工作涉及的十分狹小的一個(gè)范圍,因此我們需要努力尋找那些業(yè)務(wù)涉及面廣,經(jīng)歷豐富,又有一定大局觀的真正的專家。另外,他們就是軟件今后真正的使用者,讓他們參加,會(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)著手,提出標(biāo)準(zhǔn)化管理的口號(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í)候最終拍板決策。這些都需要在工程啟動(dòng)的時(shí)候事先規(guī)劃好。最后,與客戶方領(lǐng)導(dǎo)制訂出軟件目標(biāo),是相當(dāng)重要但常常被我們無視的一個(gè)步驟。軟件信息化管理不是包治百病的神藥。很多工程的失敗都?xì)w因與工程目標(biāo)不明確造成的工程范圍的失控。因此,這時(shí)討論工程目標(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è)工程的期望,渴望到達(dá)的工程預(yù)期,而我們應(yīng)當(dāng)描述的,是對(duì)到達(dá)這些預(yù)期的整體解決方案,凡此等等。俗話說:萬事開頭難。如果你在工程開場(chǎng)的時(shí)候總感覺千頭萬緒不知如何著手,在這里我給大家的三點(diǎn)建議:1〕樹立良好的職業(yè)威信;2〕進(jìn)展詳細(xì)角色分析,將與會(huì)各方代表對(duì)號(hào)入座;3〕從宏觀上制訂目標(biāo)與方案。隨后的工作,就是與各方代碼建立聯(lián)系,逐一拜訪他們,將需求調(diào)研工作一步一步進(jìn)展下去。二、拜訪工程組經(jīng)過一番努力,獲得了一些初步的成果。首先是給客戶留下了一個(gè)良好的印象,這是一個(gè)開端,但要在他們心目中樹立自己的職業(yè)威信還要看你今后的表現(xiàn)。同時(shí),我們與客戶一起為工程制訂了短期與長(zhǎng)期目標(biāo)。不要小看了這些目標(biāo),它們就是我們的尚方寶劍。正是因?yàn)橛辛怂窈蠊こ讨械挠嘘P(guān)各方就應(yīng)當(dāng)協(xié)助實(shí)現(xiàn)這個(gè)目標(biāo)。我們應(yīng)當(dāng)清晰地向客戶表達(dá)這樣一個(gè)意思,要完成這樣的目標(biāo),不是*一方的努力,而是雙方共同努力的結(jié)果。這也是客戶方召開這樣一個(gè)工程啟動(dòng)會(huì)議的重要意義。最后一個(gè)成果,也是最重要的成果,就是與各種角色、各個(gè)類型的客戶建立了聯(lián)系。下面,我們將一個(gè)一個(gè)去拜訪他們,展開我們的需求調(diào)研。與西方人不同,中國(guó)人做事往往比擬重視感情,這是與中國(guó)數(shù)千年的文化分不開的。讓我們來聽聽一位金牌銷售員是怎么做生意的:"我跟客戶頭幾次見面,絕對(duì)不提生意的事,玩,就是玩。吃飯啦,唱卡拉OK啦,打球啦??????先建立關(guān)系,關(guān)系好了再慢慢提生意的事兒。〞這說得比擬夸*,畢竟他是在做銷售,但至少傳達(dá)出一個(gè)概念,那就是做事先培養(yǎng)感情,感情培養(yǎng)起來才好慢慢做事,需求調(diào)研也是一樣。需求調(diào)研不是一蹴而就的事情,是一件持續(xù)數(shù)月甚至數(shù)年的工作〔假設(shè)工程還有后期維護(hù)〕。在這漫長(zhǎng)的時(shí)間里,我們需要依靠客戶這個(gè)群體的幫助,一步一步掌握真實(shí)可靠的業(yè)務(wù)需求。不僅如此,技術(shù)這東西總有不如意甚至實(shí)現(xiàn)不了的地方,我們需要客戶的理解與包容,這都需要有良好的客戶關(guān)系。按照現(xiàn)在的軟件運(yùn)作理念,軟件工程已經(jīng)不是一錘子的買賣,而是長(zhǎng)期的、持續(xù)不斷的提供效勞。按照這樣的理念,軟件供給商與客戶建立的是長(zhǎng)期共贏的戰(zhàn)略協(xié)作關(guān)系,這更需要我們與客戶建立長(zhǎng)期友好的關(guān)系。盡管如此,我們也不能總是期望客戶中的所有人都能與我們合作,很多工程都不可防止地存在阻礙工程開展的人。如很多ERP工程會(huì)損害采購(gòu)和銷售人員的利益,因?yàn)樾畔⒒墓芾頂嗔怂麄兊呢?cái)路;很多企業(yè)管理軟件會(huì)遭到來自基層操作人員的抵抗,因?yàn)樗鼤?huì)給基層操作人員帶來更多的工作量負(fù)擔(dān)。有一次,我們給一個(gè)集團(tuán)開發(fā)一套軟件,當(dāng)我們下到基層單位時(shí),才發(fā)現(xiàn),一些基層單位已經(jīng)有了相應(yīng)的管理軟件。我們的軟件成功上線,必然就意味著這些基層單位的管理軟件壽終正寢,這必然影響到基層信息化管理專員的利益和政績(jī)。分析一個(gè)客戶人群的關(guān)系,就是在分析這個(gè)人群中,誰有意愿支持我們,而誰卻在自覺不自覺地阻礙我們。那些通過這個(gè)工程可以提高政績(jī),提高自身價(jià)值的人,都是我們可以爭(zhēng)取的盟友。他們是我們最可以依賴的人,我們一定要與他們站在一起,榮辱與共,建立戰(zhàn)略合作伙伴關(guān)系。另一種人,即使軟件獲得了成功,也與他沒有太多關(guān)系,但你與他相處得好,卻可以給予你巨大的幫助,這種人是我們需要拼命爭(zhēng)取的人。所謂領(lǐng)域?qū)<?,他可以給你多講點(diǎn)兒,但隨便打發(fā)你,對(duì)他也沒太大影響。報(bào)著謙虛慎重、相互尊重的態(tài)度,大方地與他們交往。當(dāng)他們幫助我們以后,真誠(chéng)地予以感謝。這是我總結(jié)出來的,與他們交往的準(zhǔn)則。最后,就是那些對(duì)我們懷有敵意的人。盡管有敵意,但我們能夠坦蕩的,敞開心扉的與他們交往。雖然不能奢望太多,但拿出誠(chéng)意去爭(zhēng)取他們,也還是有時(shí)機(jī)化干戈為玉帛、化敵為友。如果能夠那樣,那是再好不過了。經(jīng)過一番交往,我們將逐漸在客戶中結(jié)識(shí)一批可以幫助我們的人。今后一段日子里,我們將依靠他們?nèi)W(xué)習(xí)和認(rèn)識(shí)業(yè)務(wù)知識(shí),收集業(yè)務(wù)需求,為日后的軟件研發(fā)提供素材。三、研討會(huì)經(jīng)過一番努力,我們終于在客戶中找到了一批人,可以解答困擾我們多時(shí)的業(yè)務(wù)問題了,真是不容易呀。但是,如何以適宜的時(shí)間、適宜的地點(diǎn)、通過適宜的形式與客戶研討業(yè)務(wù)需求,是擺在工程經(jīng)理面前的一道難題。在我所經(jīng)歷的工程中,業(yè)務(wù)研討會(huì)沒有一個(gè)是一樣的。我曾經(jīng)做過一個(gè)政府機(jī)關(guān)的工程,在這個(gè)工程中,從總局到省、地市、區(qū)縣,形成了一個(gè)多組織機(jī)構(gòu)的管理系統(tǒng)。雖然全國(guó)管理流程大體一樣,但各地因各地實(shí)際情況的不同、領(lǐng)導(dǎo)管理思路和政策理解的不同,管理模式在許多細(xì)節(jié)上存在著差異,也就是說,這個(gè)工程存在著需求個(gè)性化的問題。在工程進(jìn)展之初,客戶方領(lǐng)導(dǎo)提前意識(shí)到這方面的問題,因此在組織需求研討時(shí),分別從各個(gè)省市抽調(diào)業(yè)務(wù)人員,集中在一起進(jìn)展研討。同時(shí),在研討時(shí),根據(jù)與會(huì)人員的業(yè)務(wù)特點(diǎn),將他們分成假設(shè)干個(gè)業(yè)務(wù)組,分別對(duì)*個(gè)相對(duì)獨(dú)立的業(yè)務(wù)模塊的需求進(jìn)展研討。采用這樣的組織形式,各地的業(yè)務(wù)差異在會(huì)上都會(huì)被提出來。一些地區(qū)不合理的管理模式,一經(jīng)提出,就會(huì)得到其它地區(qū)業(yè)務(wù)人員的糾正,進(jìn)而防止了不合理需求的提出。當(dāng)然業(yè)務(wù)人員之間也會(huì)出現(xiàn)意見分歧。在會(huì)議啟動(dòng)之時(shí),高層領(lǐng)導(dǎo)就明確提出了必須形成全國(guó)統(tǒng)一版本。因此,一旦出現(xiàn)分歧時(shí),業(yè)務(wù)人員就會(huì)通過劇烈辯論、各抒己見,進(jìn)而形成統(tǒng)一意見。如果分歧雙方誰都說服不了誰,業(yè)務(wù)組指定的組長(zhǎng)則拍板采用哪個(gè)方案。如果他不能做出決定,就立即反映到總局領(lǐng)導(dǎo)那里當(dāng)場(chǎng)做出決定。采用這種集中式的研討,可以使問題的處理變得高效而及時(shí)。當(dāng)然,也會(huì)因地區(qū)化差異而出現(xiàn)多個(gè)方案,每個(gè)方案都是合理的,我們必須在軟件中分別對(duì)其進(jìn)展處理的情況。出現(xiàn)這種情況時(shí),至少我們很容易理清楚有幾種情況,有沒有可以合并的地方,使得差異最小化,最終在軟件維護(hù)中表達(dá)出來,讓客戶自己去選擇自己的管理模式。另外,將業(yè)務(wù)人員劃分為多個(gè)業(yè)務(wù)組也是一項(xiàng)比擬成功的經(jīng)歷。由于業(yè)務(wù)人員自身的局限,不可能對(duì)所有業(yè)務(wù)領(lǐng)域的細(xì)節(jié)全面掌握,往往總是有自己熟悉的局部,也有自己不熟悉的局部。劃分業(yè)務(wù)組,可以讓業(yè)務(wù)人員分別在自己最熟悉的業(yè)務(wù)范圍內(nèi)參與討論,可以有效提高業(yè)務(wù)討論的質(zhì)量。同時(shí),一個(gè)管理系統(tǒng)涉及的業(yè)務(wù)是復(fù)雜而系統(tǒng)的,如果劃分成多個(gè)模塊并行地進(jìn)展業(yè)務(wù)討論,也可以大大提高業(yè)務(wù)研討的工作效率。這個(gè)工程采用這種方式,使這個(gè)工程在運(yùn)行數(shù)年后依然能保持統(tǒng)一的版本,而不至于形成一個(gè)一個(gè)的地方版本。統(tǒng)一的版本使得軟件的升級(jí)維護(hù)本錢大大降低,使工程進(jìn)入良性的進(jìn)化、完善的循環(huán)中。以上講的是一種集中式的業(yè)務(wù)研討形式。采用這是形式固然好處多多,但并非所有軟件工程都能夠采用這種模式。我參與過的另一個(gè)工程就沒有如此幸運(yùn)了。在這個(gè)工程中,雖然也是多組織機(jī)構(gòu)管理系統(tǒng),但總公司對(duì)各分子公司的管理是松散的,所以很難組織各地的業(yè)務(wù)代表集中在一起討論,甚至不能要求各分子公司采用統(tǒng)一的管理模式。企業(yè)信息化的目的就是要建立統(tǒng)一的、標(biāo)準(zhǔn)化的管理形式,它本身就是一場(chǎng)企業(yè)管理的變革。我們的軟件,如果不能標(biāo)準(zhǔn)各分支機(jī)構(gòu)的管理,抑制個(gè)性化差異,而是照貓畫虎地一家一家為分子公司做軟件,不僅我們的本錢是巨大的,客戶的信息化管理效果也不能發(fā)揮出來,而且為日后的運(yùn)行維護(hù)帶來巨大的隱患。毫無疑問,它是我們做管理軟件的一個(gè)雷區(qū),我們必須小心應(yīng)對(duì)。起先,總公司領(lǐng)導(dǎo)帶著我們一家一家地去分子公司開需求研討會(huì)。每個(gè)需求研討會(huì),我們都要著力注意各個(gè)單位管理模式的差異。當(dāng)業(yè)務(wù)代表在描述自己業(yè)務(wù)流程的時(shí)候,我們常常提示業(yè)務(wù)代表,×××公司是這樣管理的。這時(shí)候,業(yè)務(wù)代表會(huì)思考,采用×××公司的管理模式是否會(huì)更好,或者采用×××公司的管理模式行不行。如果他提出×××公司的管理模式可能會(huì)出現(xiàn)什么什么問題時(shí),我們也會(huì)著力記錄下來,下次再和×××公司討論,他們是不是會(huì)出現(xiàn)這些問題。采用這種分散式的業(yè)務(wù)研討形式,讓我們作為外人來標(biāo)準(zhǔn)客戶的管理模式,常常會(huì)有這樣那樣的不便,但這也是我們可能面對(duì)得最多的需求研討形式。在這樣的形式中,尋找一個(gè)典型范例也許可以算是一種最正確實(shí)踐。當(dāng)我們面對(duì)管理松散的多組織機(jī)構(gòu)時(shí),尋找一個(gè)管理標(biāo)準(zhǔn)、對(duì)我們的支持度高的分支機(jī)構(gòu),首先將他們的信息化系統(tǒng)建立起來,產(chǎn)生預(yù)期的效益,這就樹立了一個(gè)范例。它的成功就會(huì)為其它分支機(jī)構(gòu)帶來一種精神動(dòng)力和成功案例,照著做肯定不會(huì)錯(cuò)。這樣就可以更容易地說服其它分支機(jī)構(gòu),摒棄現(xiàn)有的管理模式而朝著標(biāo)準(zhǔn)化管理邁進(jìn)。業(yè)務(wù)研討形式比擬容易出現(xiàn)的另一個(gè)問題,就是將各個(gè)方面的業(yè)務(wù)代表拉過來開大會(huì)。在大會(huì)上,你說你的,我說我的,雜亂無章,一些重要的需求被不經(jīng)意地漏掉。遇上這樣的情形,工程經(jīng)理應(yīng)當(dāng)有清醒的認(rèn)識(shí),我們需要再下來開小會(huì)。銷售部門的需求跟銷售部門談,采購(gòu)部門的需求跟采購(gòu)部門談??????既然是小會(huì),每次談的時(shí)候人不在多,在精,參會(huì)的業(yè)務(wù)人員對(duì)自己的業(yè)務(wù)了解精細(xì)而全面。這樣的會(huì)議,通常有一至三個(gè)業(yè)務(wù)人員,和一個(gè)負(fù)責(zé)人〔負(fù)責(zé)拍板〕參加。會(huì)議之后,我們最好詢問與會(huì)人員的聯(lián)系方式,便于日后建立長(zhǎng)期的聯(lián)系,畢竟業(yè)務(wù)需求不是一蹴而就的事情。同時(shí),如果我們今后采用的是迭代式開發(fā),他們也就成為了我們業(yè)務(wù)驗(yàn)證的客戶代表。業(yè)務(wù)研討會(huì)是重要的,但同時(shí)又是靈活的,沒有一個(gè)定式,甚至有時(shí)都不能稱之為會(huì)議。工程經(jīng)理需要根據(jù)實(shí)際情況,合理地與客戶組織研討會(huì)。但不管怎樣組織,必須注意兩點(diǎn):有效抑制個(gè)性化差異、分模塊組織專項(xiàng)研討會(huì)。四、需求研討前面我們探討了業(yè)務(wù)研討會(huì)應(yīng)當(dāng)怎樣組織,下面我們?cè)倬唧w討論一下我們應(yīng)當(dāng)怎樣與客戶討論業(yè)務(wù)需求。如果說組織業(yè)務(wù)研討會(huì)是工程經(jīng)理的功底,則討論業(yè)務(wù)需求就是需求分析人員的功底。以往我們常常認(rèn)為,需求分析是一件最簡(jiǎn)單的事情。客戶說他們需要做一個(gè)什么軟件,有些什么功能,我們照著做就可以了,所謂的需求分析員就是需求的記錄員。我要說,這是一個(gè)極大的錯(cuò)誤,許多失敗的軟件工程,或者說軟件工程中的需求問題,大多都源于此。經(jīng)過人們多年的研究發(fā)現(xiàn),在需求分析過程中,客戶存在的最大問題就是提不出正確的需求,這表現(xiàn)為幾種形式:1.由于對(duì)軟件不了解,客戶提不出需求,不知道軟件最終會(huì)做成什么樣子。這類客戶在需求討論過程中,往往只能描述目前自己手工管理的方式是怎樣的,不知道計(jì)算時(shí)機(jī)怎樣管理。2.能提出一些業(yè)務(wù)需求,但當(dāng)軟件做出來擺在自己面前時(shí),需求就變了。這類客戶,他們能熟練使用電腦,對(duì)信息化管理是清楚的。他們提出的業(yè)務(wù)需求從整體上應(yīng)當(dāng)是八九不離十的。但是,由于沒有實(shí)物,在軟件中的一些具體操作并沒有完全想清楚。因此,當(dāng)軟件真正做出來擺在自己面前時(shí),甚至經(jīng)過一系列流程操作以后,會(huì)對(duì)一些操作提出變更需求。他們正如那句經(jīng)典的話說的:"Ihavechangedwhenitsawit.〞3.能非常詳細(xì)地提出業(yè)務(wù)需求,甚至有時(shí)候該怎么做的提出來了。這類客戶,參與過很多軟件信息化建立,甚至有些還是軟件開發(fā)的半專業(yè)人士。但是他們提出的業(yè)務(wù)需求過于具體,甚至怎樣實(shí)現(xiàn)都說出來了,但這些有時(shí)候不是最正確設(shè)計(jì)方案、可能在技術(shù)上難于實(shí)現(xiàn),甚至有些就是過于理想化而不可實(shí)現(xiàn)。因此,我在進(jìn)展需求研討的時(shí)候,首先跟客戶探討的不是軟件功能,而是客戶現(xiàn)有的業(yè)務(wù)知識(shí),用專業(yè)的話叫"業(yè)務(wù)領(lǐng)域分析〞??蛻衄F(xiàn)有的業(yè)務(wù)流程是什么樣的,都有些什么操作?客戶在業(yè)務(wù)中都有些什么事物,什么專用名詞,都是怎樣定義的,相互之間的關(guān)系是什么?客戶在每一項(xiàng)操作中的目的是什么,為什么要這樣做,他們制作的手工報(bào)表都說明了什么問題?后面我會(huì)更加詳細(xì)地描述怎么進(jìn)展業(yè)務(wù)領(lǐng)域分析。在認(rèn)識(shí)了客戶的業(yè)務(wù)領(lǐng)域之后,我們才能去分析他們提出的所有原始需求。他們?yōu)槭裁匆岢鲞@項(xiàng)需求,提這項(xiàng)需求的目的是什么?只有經(jīng)過這樣的分析,我們才能深刻地理解需求,進(jìn)而運(yùn)用我們的專業(yè)知識(shí),提出更加合理的技術(shù)方案。但非常遺憾,我們?cè)谛枨蠓治鲋谐32皇沁@樣做的,甚至當(dāng)軟件都開發(fā)出來了,需求分析人員都說不出客戶為什么要提出這個(gè)需求,更談不上了解業(yè)務(wù)操作流程。一句經(jīng)典的話是:"客戶讓我們這樣做的。〞總之,我們做需求分析,眼界不能僅僅停留在軟件本身,應(yīng)當(dāng)更開闊一些,應(yīng)當(dāng)擴(kuò)展到跟這個(gè)業(yè)務(wù)有關(guān)的那些領(lǐng)域知識(shí)中。當(dāng)然,另一個(gè)極端就是為了開發(fā)軟件,無限地?cái)U(kuò)大學(xué)習(xí)領(lǐng)域知識(shí)的范圍。為了開發(fā)財(cái)務(wù)軟件去考會(huì)計(jì)師,為了開發(fā)稅務(wù)軟件去學(xué)習(xí)稅法等等。開發(fā)軟件不是讓我們成為這個(gè)領(lǐng)域的專家。我們學(xué)習(xí)領(lǐng)域知識(shí)是為了更好地理解和開發(fā)軟件,是學(xué)習(xí)與這個(gè)軟件有關(guān)的領(lǐng)域知識(shí),而不是成為一個(gè)專家。在客戶提出的所有原始需求中那些與業(yè)務(wù)實(shí)現(xiàn)有關(guān)的需求都是無效的需求,它們僅僅只能作為我們的一個(gè)參考。什么是與業(yè)務(wù)實(shí)現(xiàn)有關(guān)的需求呢?比方要求做成什么界面,數(shù)據(jù)要求怎樣處理,等等。為什么是無效的呢?因?yàn)榭蛻舢吘故欠菍I(yè),我們應(yīng)當(dāng)有這種自信,在理解客戶真實(shí)意圖以后,能夠提出比客戶更優(yōu)的解決方案。還有一些是技術(shù)難于實(shí)現(xiàn)或者根本就無法實(shí)現(xiàn)的需求,我們應(yīng)當(dāng)耐心地說服和引導(dǎo)客戶,并給他提出一個(gè)更加合理的方案。注意最后一句話:"給他提出一個(gè)更加合理的方案〞。蒼白的拒絕客戶往往會(huì)讓客戶產(chǎn)生抵觸情緒,但當(dāng)我們提出一個(gè)更加合理的方案時(shí),客戶往往會(huì)欣然承受,當(dāng)然這是在我們對(duì)客戶提出的業(yè)務(wù)需求的真實(shí)意圖進(jìn)展深入分析之后。認(rèn)識(shí)到這一點(diǎn)非常重要,為了更加清楚地說明這一點(diǎn),我舉一個(gè)我的例子吧。有一次我給客戶做一個(gè)價(jià)格管理系統(tǒng)時(shí),客戶提出要做一個(gè)動(dòng)態(tài)報(bào)表的需求。這個(gè)動(dòng)態(tài)報(bào)表要求能讓客戶從無到有,完全自由的定制自己的報(bào)表。毫無疑問,這是一個(gè)典型的不切實(shí)際的業(yè)務(wù)需求。接到這個(gè)需求以后,我們將它作為一個(gè)疑問,在整個(gè)需求調(diào)研過程中著力進(jìn)展了考察,明白了客戶為什么提出這樣的需求。當(dāng)客戶在向他們的客戶報(bào)價(jià)時(shí),他們的客戶在各個(gè)方面都要求他們報(bào)出價(jià)格細(xì)目,而且不同的客戶要求他們報(bào)的價(jià)格細(xì)目格式還不一樣。但經(jīng)過仔細(xì)分析,發(fā)現(xiàn)他們面對(duì)的客戶就是固定的幾家,而這幾家的要求的報(bào)表雖然格式不盡一樣,但其數(shù)據(jù)項(xiàng)大體是一樣的。最后,我們給客戶提出兩個(gè)方案,一個(gè)是按照客戶所說的動(dòng)態(tài)報(bào)表,但要求客戶在制作報(bào)表時(shí)必須能夠詳細(xì)設(shè)計(jì)報(bào)表中數(shù)據(jù)項(xiàng)的來源、工程的類型,以及繪制報(bào)表格式,讓他們意識(shí)到,即使做出來,作為非專業(yè)的他們也是很難自己完成的。同時(shí),我們提出另一個(gè)方案:我們?yōu)榭蛻魷?zhǔn)備好他們需要填寫的各種客戶報(bào)表所需的所有數(shù)據(jù)項(xiàng),讓他們自由刪減。同時(shí),為他們的不同客戶提供各自相應(yīng)的報(bào)表模板,這些模板可以在少量的范圍內(nèi)進(jìn)展修改,以此滿足他們的客戶的不同需要。當(dāng)客戶拿到這樣的方案,既能滿足他們自己的需要,還操作簡(jiǎn)便、易懂、不費(fèi)事,當(dāng)然就欣然接收啦。因此,需求分析不是一種簡(jiǎn)單的你說我記的收集活動(dòng),而是在大量業(yè)務(wù)分析與技術(shù)可行性分析根底上的分析活動(dòng)。只有建立在這種分析根底上的軟件研發(fā),才能保證需求的正確與變更的可控。五、迭代前面我一直在反復(fù)強(qiáng)調(diào)這樣一個(gè)觀點(diǎn),需求分析不是一蹴而就的,是一個(gè)反復(fù)迭代的過程。它將從第一次需求分析開場(chǎng),一直持續(xù)到整個(gè)工程生命周期。為什么這樣說呢?讓我們一起來分析分析。在第一次的需求分析階段,我們?cè)谝欢螘r(shí)期內(nèi)需要與客戶進(jìn)展反復(fù)地討論,這個(gè)過程往往是這樣一個(gè)反復(fù)循環(huán)的過程:需求捕獲->需求整理->需求驗(yàn)證->再需求捕獲??????需求捕獲,就是我們與客戶在一起開研討會(huì),討論需求的活動(dòng)??蛻艨赡軙?huì)描述他們的業(yè)務(wù)流程,這時(shí)我們?cè)诩埳侠L制簡(jiǎn)單的流程草圖,及時(shí)地記錄下來;客戶在描述業(yè)務(wù)的同時(shí),可能會(huì)反復(fù)提到一些業(yè)務(wù)名詞,詳細(xì)詢問這些名詞的含義,以及它們與其它名詞的關(guān)系,用類圖或者對(duì)象圖繪制簡(jiǎn)單的草圖;客戶在描述業(yè)務(wù)的同時(shí),還會(huì)提出今后的軟件希望實(shí)現(xiàn)的功能,如能夠展示*個(gè)報(bào)表、能夠?qū)С鑫募?,以需求列表的形式記錄下來。一個(gè)功能,在需求列表中會(huì)有多個(gè)需求,而每個(gè)需求應(yīng)當(dāng)能夠用1、2句話,在20個(gè)字以內(nèi)就可以描述清楚。需求列表是客戶提出的最最原始的需求,他不摻雜任何分析設(shè)計(jì),是我們的每項(xiàng)功能必須實(shí)現(xiàn)的內(nèi)容。需求列表是需求驗(yàn)證以及日后的用戶驗(yàn)收測(cè)試的依據(jù),不管我們今后如何分析和設(shè)計(jì)這些功能,都要能如實(shí)地實(shí)現(xiàn)這個(gè)列表中提出的需求。〔需求列表應(yīng)當(dāng)如何編寫,將在后面的章節(jié)詳細(xì)描述?!承枨笳?,就是在需求研討會(huì)后,需求分析人員對(duì)研討內(nèi)容的分析和整理的過程。首先,需求分析人員應(yīng)當(dāng)通過用例模型,劃分整個(gè)系統(tǒng)的功能模塊,以及各個(gè)模塊的業(yè)務(wù)流程。用例模型分析是一個(gè)由粗到細(xì)的過程,這樣一個(gè)過程也是符合人類認(rèn)識(shí)世界的思維習(xí)慣的一個(gè)過程。最先,我們應(yīng)當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論