需求開發(fā)與需求管理 消除軟件開發(fā)百病之源林 銳 博士_第1頁
需求開發(fā)與需求管理 消除軟件開發(fā)百病之源林 銳 博士_第2頁
需求開發(fā)與需求管理 消除軟件開發(fā)百病之源林 銳 博士_第3頁
需求開發(fā)與需求管理 消除軟件開發(fā)百病之源林 銳 博士_第4頁
需求開發(fā)與需求管理 消除軟件開發(fā)百病之源林 銳 博士_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

需求開發(fā)與需求管理——消除軟件開發(fā)百病之源林銳博士linrui@目錄1.什么是需求2.了解客戶、最終用戶、間接用戶3.需求工程基本概念4.需求開發(fā)的主要困難與對策5.如何開展需求調(diào)查6.如何進行需求分析7.什么是好的需求規(guī)格說明書8.如何定義產(chǎn)品需求9.需求管理:確認、跟蹤、變更控制人們并不清楚應該做什么,卻一直忙碌不停地開發(fā)。1.什么是需求1.1需求的基本概念

寬泛地講,需求來源于用戶的一些“需要”,這些“需要”被分析、確認后形成完整的文檔,該文檔詳細地說明了產(chǎn)品“必須或應當”做什么。所以如果只有一些零碎的對話、資料或郵件,你就以為自己已經(jīng)掌握了需求,那是自欺欺人。1.2需求的重要性FrederickBrooks在他1987年經(jīng)典文章“NoSilverBullet”中闡述了需求的重要性:開發(fā)軟件系統(tǒng)最困難的部分就是準確說明開發(fā)什么。最困難的概念性工作是編寫出詳細的需求,包括所有面向用戶、面向機器和其它軟件系統(tǒng)的接口。此工作一旦做錯,將會給系統(tǒng)帶來極大的損害,并且以后對它修改也極為困難。

需求是產(chǎn)品的根源,需求工作的優(yōu)劣對產(chǎn)品影響最大。就像一條河流,如果源頭被污染了,那么整條河流也就被污染了。

國內(nèi)軟件業(yè)的痼疾:人們并不清楚究竟該做什么,但卻一直忙碌不停地開發(fā)。

1.什么是需求1.3需求開發(fā)失敗的案例

上海貝爾某事業(yè)部一群高智商的開發(fā)人員集體犯需求觀念錯誤的案例。故事是這樣的…需求問題有時如同愛情問題,真是“當局者迷,旁觀者清”啊。

2.了解客戶、最終用戶、間接用戶2.1基本概念“用戶”(user)是一種泛稱,它可細分為“客戶”(customer)、“最終用戶”(theenduser)和“間接用戶”(或稱為關系人)。掏錢買軟件的用戶稱為客戶,而真正操作軟件的用戶叫最終用戶??蛻襞c最終用戶可能是同一個人也可能不是同一個人。2.2客戶是掏錢買軟件的人,所以他是“上帝”

某飯店經(jīng)理在解釋“先有雞還是先有蛋”這個哲學問題時,精辟地闡述了客戶的地位:如果顧客先點雞,那么就先有雞;如果顧客先點蛋,那么就先有蛋?!艾F(xiàn)代營銷學之父”菲利普?科特勒所著的《市場營銷導論》是這樣描述客戶的:客戶永遠是本公司的座上客??蛻舨⒉灰蕾囄覀儯覀儏s依賴客戶??蛻舨皇俏覀児ぷ鞯恼系K,而是我們工作的目標。我們并不因為服務于他而對他有恩,他卻因為給予我們服務于他的機會而有恩于我們??蛻舨皇俏覀円c之爭辯和斗智的人。從未有人曾在與客戶的爭辯中獲勝??蛻羰前阉挠麕Ыo我們的人,因此我們的工作就是滿足這些欲望,從而使客戶和我們共同獲益。與客戶打交道的主要目的是:一是獲取需求,二是簽合同。不要把錢仍到水里。2.了解客戶、最終用戶、間接用戶2.3即使最終用戶不是上帝,也算是“上帝”的“親戚”,同樣怠慢不得。如果項目規(guī)模比較大,那么開發(fā)方與最終用戶的來往就比較多。如從最終用戶那里獲取詳細的需求,請最終用戶試驗軟件,對最終用戶進行培訓等等。公司新員工上產(chǎn)品培訓課,有位小領導匆匆趕來作指示:“隔壁班正在給電信局的員工們進行培訓,他們都是上帝派來的,大家要注意形象。由于休息室空間有限,請大家自覺讓位。午休時他們可以躺著睡,我們只能坐在位置上打個盹兒…….?!?.4重視“間接用戶”,千萬別“大意失荊州”

間接用戶既不掏錢買該軟件產(chǎn)品,也不使用該軟件,但是它可能對軟件產(chǎn)品有很大的影響。例如,財務軟件開發(fā)商在把“財務軟件”賣給客戶之前,這個“財務軟件”必須得到國家財政部的批準。否則即使該軟件的功能是完美的,但卻被政府認為是非法的。所以國家財政部就是所有財務軟件的間接用戶,它不僅不付錢給財務軟件開發(fā)商,反而要收取鑒定費、手續(xù)費等。同理,市面上流通的信息安全軟件、殺病毒軟件必須得到國家公安部的批準,否則軟件開發(fā)商被逮住后戴上“非法經(jīng)營”的帽子就慘了。

3.需求工程基本概念3.1什么是需求工程把所有與需求直接相關的活動通稱為需求工程。需求工程中的活動可分為兩大類,一類屬于需求開發(fā),另一類屬于需求管理。需求工程的結(jié)構(gòu)圖

3.需求工程基本概念3.2需求開發(fā)過程域

需求開發(fā)的目的是通過調(diào)查與分析,獲取用戶需求并定義產(chǎn)品需求。

需求調(diào)查的目的是通過各種途徑獲取用戶的需求信息(原始材料),產(chǎn)生《用戶需求說明書》。

需求分析的目的是對各種需求信息進行分析,消除錯誤,刻畫細節(jié)等。常見的需求分析方法有“問答分析法”和“建模分析法”兩類。

需求定義的目的是根據(jù)需求調(diào)查和需求分析的結(jié)果,進一步定義準確無誤的產(chǎn)品需求,產(chǎn)生《產(chǎn)品需求規(guī)格說明書》。系統(tǒng)設計人員將依據(jù)《產(chǎn)品需求規(guī)格說明書》開展系統(tǒng)設計工作。3.3需求管理過程域

需求管理的目的是在客戶與開發(fā)方之間建立對需求的共同理解,維護需求與其它工作成果的一致性,并控制需求的變更。需求確認是指開發(fā)方和客戶共同對需求文檔進行評審,雙方對需求達成共識后作出書面承諾,使需求文檔具有商業(yè)合同效果。

需求跟蹤是指通過比較需求文檔與后續(xù)工作成果之間的對應關系,建立與維護“需求跟蹤矩陣”,確保產(chǎn)品依據(jù)需求文檔進行開發(fā)。需求變更控制是指依據(jù)“變更申請-審批-更改-重新確認”的流程處理需求的變更,防止需求變更失去控制而導致項目發(fā)生混亂。

3.需求工程基本概念3.4需求工程的一些感悟不論是合同項目還是自主研發(fā)的產(chǎn)品,都必須開展需求開發(fā)和需求管理活動。

開發(fā)者對待需求工程的態(tài)度可分“被動型”、“主動型”和“領先型”三種,只有后兩種才有可能開發(fā)出成功的產(chǎn)品?!氨粍有汀笔侵搁_發(fā)者被動地對待需求工程中的各項活動,能少干則少干,能偷懶則偷懶。他們認為需求是用戶的事情而不是自己的事情。開發(fā)過程中經(jīng)常發(fā)生需求變更,導致產(chǎn)品迷失方向,不是半途而廢就是陷入半死不活的狀態(tài)?!爸鲃有汀笔侵搁_發(fā)者積極地開展需求工程中的各項活動。他們把獲取準確的需求當作自己的職責,會想盡一切辦法克服需求開發(fā)和需求管理過程中的困難,而不是找借口推卸責任。俗話說“良好的開端是成功的一半”,“主動型”需求工程是開發(fā)成功產(chǎn)品的必備條件?!邦I先型”是需求工程的最高境界。開發(fā)者發(fā)掘了連用戶自己都沒有意識到的需求,導致用戶跟著新產(chǎn)品跑而不是新產(chǎn)品圍著用戶轉(zhuǎn),這叫引導消費。需求工程做到這個份上,才能使產(chǎn)品立于不敗之地,長盛不衰。4.需求開發(fā)的主要困難與對策4.1知識技能問題

應用域的知識是無邊無際的,任何人都不可能是“萬事通”。俗話說“隔行如隔山”,需求分析員可能是某一領域的專家,但當他接手陌生的業(yè)務時,他可能是個“無知”者。一個企業(yè)要謀求發(fā)展,不能總在做老的業(yè)務。人一生中會有許多充滿挫折的“第一次”,不可以逃避。當需求分析員缺乏應用域知識時,他該怎么辦?首先他要有勇氣做事,否則連實踐的機會都沒有。其次他應當趕緊補習應用域知識,不論是通過自學還是培訓的方式,否則他很難與用戶交流。如果可能的話,開發(fā)方最好請既懂軟件又懂應用域知識的行家來幫忙。4.2態(tài)度問題

相當多的開發(fā)人員習慣于被動地對待需求開發(fā)。每當遇到麻煩、挫折時,他們會發(fā)牢騷,找出一堆用戶的毛病。很多開發(fā)人員錯誤地以為:需求是用戶的事情,不是我們的事情。我們?yōu)橛脩糸_發(fā)軟件,難道用戶不該告訴我們應當開發(fā)什么嗎?如果用戶說不清楚需求,或者經(jīng)常變更需求,這類問題是用戶產(chǎn)生的,應當由他們自己負責。

用戶說不清楚需求或者需求發(fā)生變更,這些都是常見的問題,并不是絕癥,是人們可以設法解決的??杀氖情_發(fā)人員把這些問題當成了借口,不愿主動攻克問題,導致需求問題擴散到整個軟件開發(fā)過程,產(chǎn)生太多的后患。軟件企業(yè)的領導應當給具有錯誤觀念的開發(fā)人員們洗腦:需求分析員的天職就是在有限的時間內(nèi)獲取準確而細致的用戶需求,如果做不到就是失職,不要找借口。

4.需求開發(fā)的主要困難與對策4.3合作關系如果需求分析員不能與用戶建立良好的合作關系,那么他們在需求開發(fā)過程中會很疲憊。倘若用戶不能很好地配合需求分析員,那并不表示他是個壞蛋。因為用戶有他自己的想法:我回答了你們的問題,講了該講的。我們付錢給你們,難道還要我伺候你們不成?我還要干自己的事情,別打擾我了。你們自己想辦法把活干好吧

……。

對于一些競標項目,在合同未簽訂之前的需求開發(fā)工作尤為困難。用戶未必會買你的產(chǎn)品,他不會投入很多精力來協(xié)助你搞需求開發(fā)。需求分析員不是銷售人員,他們不可能象銷售人員那樣通過某些手段籠絡住用戶就能成功。出色的需求分析員不僅要有過硬的專業(yè)知識,還要具備較強的交流、溝通能力。開發(fā)方與用戶的合作關系對需求開發(fā)而言是至關重要的。對于重大的、復雜的項目,我們不能完全期望雙方能夠自發(fā)地建立起良好地合作關系,這樣風險太大。開發(fā)方和用戶方在開展需求開發(fā)之前,雙方協(xié)商并撰寫“用戶在需求工程中的權利與義務”,即以協(xié)議的方式確定合作關系。“好話”和“丑話”都說在前頭,這樣能減少今后的摩擦。如果條件允許的話,開發(fā)方最好為用戶舉辦關于需求工程的培訓,這樣的培訓將使用戶明白需求的重要性以及忽視需求的危害性,從而促使他們積極友善地參加需求工程中的各項活動。4.需求開發(fā)的主要困難與對策用戶在需求工程中的“權利”1.有權要求開發(fā)方派遣資質(zhì)合格的需求分析員和相關人員。2.有權要求開發(fā)方采用用戶熟悉的語言來描述需求,即開發(fā)方必須提供用戶看得懂得需求文檔。3.有權審查需求文檔,并對有爭議的需求作出決策。如果認為需求文檔不能準確地反映用戶真實的意愿,可以拒絕在需求文檔上簽字。4.如果用戶想要變更需求,有權要求開發(fā)方對該變更將產(chǎn)生的影響作出真實可信的評估,以便用戶決定是否變更需求。用戶在需求工程中的“義務”1.以積極友善的態(tài)度與開發(fā)方人員交流、協(xié)作,盡可能地為開發(fā)方人員提供工作和生活上的便利。2.樂意接受需求分析員的采訪,在不泄漏機密的前提下盡可能地回答需求分析員的問題。3.在不泄漏機密的前提下,盡可能地向需求分析員提供與需求相關的材料。4.與需求分析員共同評審需求文檔,確保需求文檔準確地反映用戶真實的意愿。4.需求開發(fā)的主要困難與對策4.4用戶說不清楚需求用戶說不清楚需求是普遍現(xiàn)象,這是讓開發(fā)人員頭痛的大問題。有些用戶真的不知道需求是什么,或者對需求只有朦朧的感覺,他當然說不清楚需求。例如開發(fā)方的營銷人員水平比較高,他能夠在用戶不清楚自己要什么的情況下引導用戶“消費”。例如前些年全國各地的很多政府機構(gòu)大搞網(wǎng)絡建設。這些機構(gòu)的領導和辦公人員大多數(shù)不清楚網(wǎng)絡干什么用,就讓開發(fā)人員替他們設想需求吧,反正是花公家的錢。有些用戶雖然心里明白想要什么,但卻說不清楚需求。

比如說買鞋子。我們非常了解自已的腳,但很難用語言說清楚腳的大小和形狀。通常拿鞋子去試,試穿時感覺到舒服才會買鞋。需求分析員絕不能以用戶說不清楚需求為借口而草率地對待需求開發(fā)工作,否則會連累整個開發(fā)團隊的。無論是什么原因?qū)е掠脩粽f不清楚需求,需求分析員必須設法搞清楚用戶真正的需求,這是需求分析員的職責,也是職業(yè)的挑戰(zhàn)。

4.需求開發(fā)的主要困難與對策4.5雙方誤解需求人們在交流的時候,經(jīng)常會發(fā)生“問非所求,答非所問”的事情。有時用戶會把開發(fā)人員的建議或答復給想歪了:有一個軟件開發(fā)人員滔滔不絕地向用戶講解在“信息高速公路上做廣告”的種種好處,用戶聽得津津有味。最后,心動的用戶對軟件開發(fā)人員說:“好得很,就讓我們馬上行動起來吧。請您決定廣告牌的尺寸和放在哪條高速公路上,我立即派人去做?!倍脩舯磉_的需求,不同的開發(fā)人員可能有不同的理解。如果需求分析員誤解了需求,那會導致后續(xù)的不少開發(fā)人員將錯就錯、白干活。就像作文寫跑題了,寫得再好也白搭。這類錯誤連高智商的外星人都不能避免:有個外星人間諜潛伏到地球刺探情報,它給上司寫了一份報告:“主宰地球的是車。它們喝汽油,靠四個輪子滾動前進。嗓門極大,在夜里雙眼能射出強光?!腥さ氖?,車里住著一種叫作‘人’的寄生蟲,這些寄生蟲完全控制了車?!辈徽撌菑碗s的項目還是簡單的項目,需求分析員和用戶都有可能誤解需求。所以需求確認工作(屬于需求管理)必不可少。

4.需求開發(fā)的主要困難與對策4.需求開發(fā)的主要困難與對策4.6開發(fā)人員寫不好需求文檔需求調(diào)查工作不充分,獲取的需求信息太少或者太亂,以至于寫不成需求文檔。古時候,一書生在考試前補習“寫文章”,成天愁眉苦臉。其夫人甚為不解,問:“相公,你寫文章比我生小孩還難嗎?”書生長嘆一聲:“娘子你哪里知道我的難處啊!你生小孩時肚子里有東西,可我寫文章時肚子里沒東西啊?!彼砸雽懗龊玫男枨笪臋n,前提條件是把需求調(diào)查工作做好。

開發(fā)人員寫作能力比較差,雖然在調(diào)查過程中已經(jīng)獲得了不少需求信息,卻寫不出好的需求文檔來。可以毫不夸張地說,國內(nèi)90%以上的軟件開發(fā)人員,他們的寫作能力遠不及開發(fā)能力。提高開發(fā)人員寫作能力的根本辦法就是讓他們多練習寫文檔,熟能生巧。另外,企業(yè)應當提供合適的文檔模板以及比較好的示例文檔,盡可能地降低寫作難度。

4.需求開發(fā)的主要困難與對策4.7用戶經(jīng)常變更需求需求變更通常會對項目的進度、人力資源、經(jīng)費產(chǎn)生很大的影響,這是開發(fā)商非常畏懼的問題。如果在項目開發(fā)的初始階段,開發(fā)人員和用戶沒有搞清楚需求或者搞錯了需求,到了項目開發(fā)后期才將需求糾正過來,導致產(chǎn)品的部分內(nèi)容需要重新開發(fā)。毫無疑問,這種需求變更將使項目付出額外的代價。這種損失是由于雙方工作失誤造成的,雙方應當好好反省,認真學習需求開發(fā)和管理的方法,避免再犯相似的錯誤。如果由于市場變化而導致產(chǎn)品需求發(fā)生變更,開發(fā)商大可不必為此煩惱,應當高興才對。倘若市場靜如死水,那么開發(fā)商吃了“上一頓”就沒有“下一頓”。正因為市場在變化,才會產(chǎn)生更多商機,聰明的開發(fā)商才會有活干,有錢賺。

其實需求變更并不可怕,可怕的是需求變更失去控制,導致項目混亂。所以需求變更控制是需求工程的重要活動。

5.如何開展需求調(diào)查5.1準備調(diào)查

首先,需求分析員應當起草需求調(diào)查問題表,將調(diào)查重點鎖定在該問題表內(nèi),否則調(diào)查工作將變得漫無邊際。問題表可以有多份,隨著調(diào)查的深入,問題表將不斷地被細化。根據(jù)經(jīng)驗,用戶通常沒有耐心回答復雜的論述題,所以問題表應當以“選擇題”和“是非題”為主。制定問題表最簡便的方法就是從《用戶需求說明書》的模板中提取需求問題。

其次,需求分析員應當確定需求調(diào)查的方式,例如:與用戶交談,向用戶提問題。向用戶群體發(fā)調(diào)查問卷。參觀用戶的工作流程,觀察用戶的操作。與同行、專家交談,聽取他們的意見。分析已經(jīng)存在的同類軟件產(chǎn)品,提取需求。從行業(yè)標準、規(guī)則中提取需求。從Internet上搜查相關資料。最后,需求分析員與被調(diào)查者建立聯(lián)系,確定調(diào)查的時間、地點、人員等,撰寫需求調(diào)查計劃。要特別留意的是不要漏掉典型的用戶。

5.如何開展需求調(diào)查5.2執(zhí)行調(diào)查準備工作完畢后,需求分析員按照計劃執(zhí)行調(diào)查。在調(diào)查過程中隨時記錄(或存儲)需求信息。需求分析員與用戶面談時應當注意以下事項:如果與用戶約好了時間,切勿遲到或早退。要注意禮節(jié),盡可能獲得用戶的好感,并為下次打擾他們埋下伏筆。需求分析員應事先了解用戶的身份、背景,以便隨機應變。IT人士不可貌相,有些大企業(yè)的領導其外表很土氣,象農(nóng)民。如果你路上碰到他,以為是個勤雜工,說:“喂,老師傅,來幫我拎東西?!币苍S這筆生意就泡湯了。需求調(diào)查不象偵探推理那樣從蛛絲馬跡著手,應該先了解宏觀問題,再了解細節(jié)問題。如果雙方氣氛融洽,可以采用靈活的訪談形式,輕易不要打斷用戶的談話。當雙方對某些問題的交流合乎邏輯地結(jié)束后,即可繼續(xù)討論問題表中的其它問題。盡可能避免為用戶添麻煩,但也不能怕給用戶添麻煩而降低需求調(diào)查的力度。避免片面地聽取某些用戶的需求而忽視其它用戶的需求。5.如何開展需求調(diào)查5.3《用戶需求說明書》與《產(chǎn)品需求規(guī)格說明書》的主要區(qū)別與聯(lián)系前者主要采用自然語言(和應用域術語)來表達用戶需求,其內(nèi)容相對于后者而言比較粗略,不夠詳細。后者是前者的細化,更多地采用計算機語言和圖形符號來刻畫需求,產(chǎn)品需求是軟件系統(tǒng)設計的直接依據(jù)。兩者之間可能并不存在一一影射關系,因為軟件開發(fā)商會根據(jù)產(chǎn)品發(fā)展戰(zhàn)略、企業(yè)當前狀況適當?shù)卣{(diào)整產(chǎn)品需求,例如用戶需求可能被分配到軟件的數(shù)個版本中。軟件開發(fā)人員應當依據(jù)《產(chǎn)品需求規(guī)格說明書》來開發(fā)當前產(chǎn)品。5.4撰寫《用戶需求說明書》用戶需求說明書的參考模板6.如何進行需求分析6.1基本概念

為了得到用戶的金錢,企業(yè)不得不鼓吹:用戶就是上帝,用戶永遠是正確的。誰都知道這不是真的。事實上,很多時候用戶說不清楚需求、會說錯需求或者提出一些無法實現(xiàn)的需求。需求分析是指在需求開發(fā)過程中,對所獲取的需求信息進行分析,及時排除錯誤和彌補不足,確保需求文檔正確地反映用戶的真實意圖。

需求分析是需求開發(fā)過程中最費腦子的工作。分析方法大體有兩類:“問答分析法”和“建模分析法”。后者技術性比較強,寫出來有學術味,故大多數(shù)軟件工程書籍都有論述。前者就是一些常識而已,雖然寫不成文章,但是簡單易用(保你一學就會),很有實用價值。“問答分析法”比較適合于用戶需求調(diào)查階段“建模分析法”比較適合于產(chǎn)品需求定義階段。

6.如何進行需求分析6.2問答分析方法問答分析方法很簡單:刨根究底地問,如果問題都被解答了,那么需求也就分析清楚了。一個人可以“自問自答”地分析需求,幾個人分析需求則稱為“研討”。問答分析最重要的問題是:“是什么”和“為什么”。每個需求都應當用陳述句說明“是什么”,如果“是什么”的內(nèi)涵不夠清晰,則應補充說明“不是什么”。如果“是什么”和“不是什么”并不是“理所當然”的,那么應當解釋“為什么”,以便加深讀者的理解。追究“是什么”和“為什么”的目的是獲得正確、清楚的需求。

其它常見的問題有:

需求存在二義性嗎?

需求文檔的上下文有矛盾嗎?

需求完備嗎?

需求是必要的嗎?

需求可實現(xiàn)嗎?

需求可驗證嗎?

需求的優(yōu)先級確定了嗎?

6.如何進行需求分析6.3建模分析法人們都有這樣地感受:有些時候用語言描述某個問題特別費勁,而采用圖形則使人一目了然,所謂“一圖低千言”就是這個道理。在需求開發(fā)過程中,對于某些類型的信息,用圖形表示要比文本表示更加有效。所以將圖形與文本結(jié)合起來描述需求是很自然的方法。需求建模就是指用圖形符號來表示、刻畫需求。建模分析方法主要有兩大類:“結(jié)構(gòu)化分析法”和“面向?qū)ο蠓治龇ā薄?/p>

恰當?shù)厥褂脠D形符號:現(xiàn)代建模工具如Rose有非常豐富的圖形符號和文字標注,能很好地表達模型的細節(jié)。要注意的是:在建模時使用花樣過多的圖形符號或文字意味著模型表示的復雜化,將使開發(fā)人員更難掌握,而且使圖形文檔更加雜亂。世上不存在一個包羅萬象的圖——它能完整地描述需求。需求建模不可能取代文字描述。在需求文檔中,文字描述是第一重要的,建模主要是起分析、解釋作用。建議將模型存放在需求文檔的附錄中,便于正文引用。

6.如何進行需求分析6.4作出決策當需求從四面八方收集來后,需求的沖突在所難免。對于那些難以達成共識的需求而言,經(jīng)常會發(fā)生“公說公有理,婆說婆有理”的現(xiàn)象。那么需求分析員究竟應該聽誰的呢?如果一群人對需求有爭議,并不是誰聲音最響就聽誰的。根據(jù)生活經(jīng)驗,最保險的辦法是:先聽官兒大的或者威望高的,如果大家的職位和威望都差不多,那么采用“少數(shù)服從大多數(shù)”的原則。如果一個產(chǎn)品可以賣給幾類客戶,但是各類客戶都要求產(chǎn)品按照他們的喜好來開發(fā)。此時對需求的決策應當以商業(yè)利益為導向,即哪一類客戶出錢最多就先滿足他們的需求,以后再做那些獲利相對較少的需求。當開發(fā)者想象中的產(chǎn)品與客戶所提的需求有沖突時,一般應當尊重客戶的觀點。但是不要陷入“客戶總是對的”陷阱里,需求分析員應當糾正明顯不合理的客戶需求。如果產(chǎn)品很復雜,雙方都不太明白需求,此時最好請開發(fā)人員快速構(gòu)造軟件的原型,雙方看著軟件原型再分析需求。7.什么是好的需求規(guī)格說明書7.1正確

需求規(guī)格說明書應當正確地反映用戶的真實意圖,“正確”是《產(chǎn)品需求規(guī)格說明書》最重要的屬性。如果“不正確”僅僅是由于錯別字造成的,那么多檢查幾遍文檔就能解決問題。真正的困難是開發(fā)者和用戶自己都不明白用戶究竟“想要什么”和“不要什么”。為確保需求是正確的,開發(fā)方和用戶必須對《需求規(guī)格說明書》進行確認。7.2清楚

清楚的需求讓人易讀易懂。清楚的反義詞是“難讀”、“難理解”。你可以采用反問的方式來判斷需求文檔是否清楚:文檔的結(jié)構(gòu)、段落是否亂七八糟?上下文是否不連貫?

文檔的語句是否含糊其詞、羅里羅嗦?

看了半天是否還不明白需求究竟是什么?

7.3無二義性

“無二義性”是指每個需求只有唯一的含義。如果一個人說的話,不同的人可能有不同的理解,那么這句話就有二義性。如果需求存在二義性,將會導致人們誤解需求而開發(fā)出偏離需求的產(chǎn)品。為了使需求無二義性,人們在寫《產(chǎn)品需求規(guī)格說明書》時措詞應當準確,切勿模棱兩可。7.什么是好的需求規(guī)格說明書7.4一致

“一致”(Consistent)是指《產(chǎn)品需求規(guī)格說明書》中各個需求之間不會發(fā)生矛盾。矛盾常常潛伏在需求文檔的上下文中。7.5必要

《產(chǎn)品需求規(guī)格說明書》中的各項需求對用戶而言應當都是必要的??梢园选氨匾北扔鳛椤把┲兴吞俊??!氨匾蓖耙徊?,要么是“畫蛇添足”要么是“錦上添花”?!爱嬌咛碜恪憋@然是壞事,會導致開發(fā)人員多干一些吃力不討好的工作。所以要盡量剔除需求規(guī)格說明書中“畫蛇添足”的那些需求。“錦上添花”是好事,可能會讓用戶獲得比期望更多的喜悅,但是眼前用戶不會為此多付錢。開發(fā)者應當集中精力先完成必要的需求,如果條件允許則再做“錦上添花”的需求。為了避免主次顛倒,應當在《產(chǎn)品需求規(guī)格說明書》中將那些“錦上添花”的需求設置為較低的優(yōu)先級。7.6完備“完備”(Complete)是指《產(chǎn)品需求規(guī)格說明書》中沒有遺漏一些必要的需求。人們往往傾向于關注系統(tǒng)的特色功能,而忽視了其它一些不起眼的但卻是必需的功能。不完備的《產(chǎn)品需求規(guī)格說明書》將導致產(chǎn)生功能不完整的軟件,用戶在使用該軟件時可能無法完成預期的任務。7.什么是好的需求規(guī)格說明書7.7可實現(xiàn)

《產(chǎn)品需求規(guī)格說明書》中的各項需求對開發(fā)方而言應當都是可實現(xiàn)的(Attainable)?!翱蓪崿F(xiàn)”意味著在技術上是可行的,并且滿足時間、費用、質(zhì)量等約束。營銷人員和用戶談生意時,為了能拿到“單子”,他們往往對用戶提出的需求“來者不拒”。吹牛皮雖然不犯法,但是《產(chǎn)品需求規(guī)格說明書》可是白紙黑字啊。經(jīng)過雙方確認的《產(chǎn)品需求規(guī)格說明書》相當于商業(yè)合同,如果開發(fā)方不能夠?qū)崿F(xiàn)《產(chǎn)品需求規(guī)格說明書》中的內(nèi)容,那就是違約,可能會被罰款的。對于合同項目,如果開發(fā)方不能確信某些需求是否可實現(xiàn),則應事先與用戶協(xié)商,達成一致的處理意見,避免將來發(fā)生商業(yè)糾紛。7.8可驗證

《產(chǎn)品需求規(guī)格說明書》中的各項需求對用戶方而言應當都是可驗證的(Verifiable)。如果需求是不可驗證的,那么用戶就無法驗收軟件,可能會發(fā)生商業(yè)糾紛。例如,摩天大樓的一項需求是“抗十二級臺風”,這個需求看起來堂而皇之,但是如何驗證呢?當摩天大樓完工后驗收時,用戶又不是巫師,他怎能造個十二級臺風來試驗?如果雙方都認可“采用計算機模擬十二級臺風”等效于實際測試,那么這項需求就是“可驗證”的。7.什么是好的需求規(guī)格說明書7.9確定優(yōu)先級為什么要確定需求的“優(yōu)先級”?理論上講,軟件的所有需求都應當被實現(xiàn)。但是在現(xiàn)實之中,項目存在“進度、費用、人力資源”等限制。在項目剛開始的時候,開發(fā)方和客戶比較樂觀,什么都要做,可是做著做著,人們常常會面臨“進度延誤、費用超支、人員不足”等問題,這時就亂套了。人們想出了“取舍”辦法:先做優(yōu)先級高的需求,后做(甚至放棄)優(yōu)先級低的需求,這樣可以將風險降到最低。需求的優(yōu)先級其實就是需求“輕重緩急”的分級表述,例如劃分為“高、中、低”三級。一般地,由用戶和開發(fā)方共同確定需求的優(yōu)先級。7.10闡述“做什么”而不是“怎么做”《產(chǎn)品需求規(guī)格說明書》的重點是闡述“做什么”,而不是闡述“怎么做”?!霸趺醋觥笔窍到y(tǒng)設計和實現(xiàn)階段的事情。國內(nèi)的很多軟件公司里,開發(fā)人員常常身兼數(shù)職,可能把需求開發(fā)、系統(tǒng)設計、編程等工作從頭做到尾。所以他們在調(diào)查、分析、定義需求時,自然會想到“怎么做”,這并沒有什么過錯。如果在調(diào)查、定義需求時想好了“怎么做”,當然應該寫下來,否則豈不浪費!關鍵是不要將“怎么做”寫到需求規(guī)格說明書里面,記錄在其它文檔里就行了。8.如何定義產(chǎn)品需求8.1規(guī)程第一步:細化并分析用戶需求

需求分析員首先對《用戶需求說明書》進行細化,對比較復雜的用戶需求進行建模分析,以幫助軟件開發(fā)人員更好地理解需求。例如采用Rational的Rose工具進行需求的建模分析,建模分析產(chǎn)生的文檔可以作為《產(chǎn)品需求規(guī)格說明書》的附件。補充說明:建模分析的技術難度比較高,需求分析員應當根據(jù)自身水平進行取舍。第二步:撰寫產(chǎn)品需求規(guī)格說明書

需求分析員按照指定的文檔模板撰寫《產(chǎn)品需求規(guī)格說明書》。如果待開發(fā)的產(chǎn)品分為軟件和硬件兩部分的話,則應當撰寫《軟件需求規(guī)格說明書》和《硬件需求規(guī)格說明書》。第三步:進行需求確認項目經(jīng)理邀請同行專家和用戶(包括客戶和最終用戶)一起評審《產(chǎn)品需求規(guī)格說明書》,盡最大努力使《產(chǎn)品需求規(guī)格說明書》能夠正確無誤地反映用戶的真實意愿。需求評審之后,開發(fā)方和客戶方的責任人對《產(chǎn)品需求規(guī)格說明書》作書面承諾。8.2軟件需求規(guī)格說明書的參考模板軟件需求說明書的參考模板9.需求管理:確認、跟蹤、變更控制9.1需求確認(評審和承諾)需求確認是指開發(fā)方和客戶方共同對《產(chǎn)品需求規(guī)格說明書》進行評審,雙方對需求達成共識后作出承諾。需求確認包含兩個重要工作:“需求評審”和“需求承諾”。

9.2需求評審面臨的困難需求評審的一個通病是“虎頭蛇尾”。需求評審的確乏味,也比較費腦子。剛開始評審時,大家都比較認真,越到后頭越馬虎。

需求評審涉及的人員可能比較多,有些時候讓這么多人聚在一起花費比較長的時間開會并不容易(例如有些人可能出差在外,有些人可能事務纏身)。沒有必要把所有事情擠在一塊做,需求開發(fā)是循序漸進的過程,需求評審也可以分段進行。這樣每次評審的時間比較短,參加評審的人員也少一些,組織會議就比較容易。開評審會議時經(jīng)常會“跑題”,導致評審效率很低。有時話匣子一打開后關不上,大家越扯越遠,結(jié)果評審會議變成了聊天會議。主持人應當控制話題,避免大家討論與主題無關的東西。

開評審會議時經(jīng)常會發(fā)生爭議。適當?shù)臓幾h有利于澄清問題,比什么東西都一致贊成要好。然而當爭議變?yōu)闋幊硶r就壞事了,爭吵不僅對評審工作沒有好處,而且會無意中傷害同事們的感情。人們在很多時候分不清楚自己究竟是“堅持真理”還是“固執(zhí)己見”。毫不妥協(xié)或者輕易妥協(xié)都不是好辦法。我們應當養(yǎng)成良好的習慣:不要一棍子打死異己的觀點,嘗試著讓自己站在他人的立場思考問題,這樣你會找到比較滿意的答案。

9.需求管理:確認、跟蹤、變更控制9.3需求承諾需求承諾是指開發(fā)方和客戶方的責任人對通過了正式技術評審的《產(chǎn)品需求規(guī)格說明書》作出承諾,該承諾具有商業(yè)合同的效果。需求承諾的“八股文”如下:本《產(chǎn)品需求規(guī)格說明書》建立在雙方對需求的共同理解基礎之上,我同意后續(xù)的開發(fā)工作根據(jù)該《產(chǎn)品需求規(guī)格說明書》開展。如果需求發(fā)生變化,我們將按照“變更控制規(guī)程”執(zhí)行。我明白需求的變更將導致雙方重新協(xié)商成本、資源和進度等。甲方簽字

乙方簽字人們在作出承諾之前務必要認真閱讀文檔,一定要明白簽字意味著什么。

9.需求管理:確認、跟蹤、變更控制9.4需求跟蹤需求跟蹤的目的是建立與維護“需求-設計-編程-測試”之間的一致性,確保所有的工作成果符合用戶需求。

需求跟蹤有兩種方式:

正向跟蹤。檢查《產(chǎn)品需求規(guī)格說明書》中的每個需求是否都能在后繼工作成果中找到對應點。

逆向跟蹤。檢查設計文檔、代碼、測試用例等工作成果是否都能在《產(chǎn)品需求規(guī)格說明書》中找到出處。

正向跟蹤和逆向跟蹤合稱為“雙向跟蹤”。不論采用何種跟蹤方式,都要建立與維護需求跟蹤矩陣(即表格)。需求跟蹤矩陣保存了需求與后繼工作成果的對應關系。

9.需求管理:確認、跟蹤、變更控制9.5需求變更控制

需求發(fā)生變更的起因主要有:隨著項目的進展,人們(包括開發(fā)方和客戶方)對需求的了解越來越深入。原先的需求文檔可能存在這樣那樣的錯誤或不足,因此要變更需求。市場發(fā)生了變化,原先的需求文檔可能跟不上當前的市場需求,因此要變更需求。提出需求變更的動機是好的,目的是希望產(chǎn)品更加符合用戶的需求。對項目開發(fā)小組而言,變更需求意味著要調(diào)整資源、重新分配任務、修改前期工作成果等,開發(fā)小組要為此付出較重的代價。如果每次需求變更請求都被采納的話,這個項目也許永遠不能按時完成。需求變更控制的目的:如果需求變更帶來的好處大于壞處,那么允許變更,但必須按照已定義的變更規(guī)程執(zhí)行,以免變更失去控制。如果需求變更帶來的壞處大于好處,那么拒絕變更。需求變更控制過程中最難辦的事情是莫過于“拒絕客戶提出的需求變更請求”。通常情況下開發(fā)方是不敢得罪客戶的,但是無原則地退讓將使開發(fā)小組陷入困境。解決這個問題最好的辦法是事先建立“游戲規(guī)則”:開發(fā)方與客戶方達成“事不過三”的約定(符合中國人的習慣),即允許客戶變更三次需求;如果客戶第四此變更需求,開發(fā)方有權拒絕,除非客戶愿意補償開發(fā)方的損失。如果事先沒有“游戲規(guī)則”的話,開發(fā)方需要一些社交技巧來減緩矛盾。例如建議在開發(fā)該產(chǎn)品新版本時修改需求。gPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6F3B0u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOH5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(uZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0

溫馨提示

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

評論

0/150

提交評論