需求分析的20條原則

0 評論 30964 瀏覽 37 收藏 23 分鐘

對商業(yè)用戶來說,他們后面是成百上千個供應(yīng)商,前面是成千上萬個消費(fèi)顧客。怎樣利用軟件管理錯綜復(fù)雜的供應(yīng)商和消費(fèi)顧客,如何做好精細(xì)到一個小小調(diào)料包的進(jìn)、銷、調(diào)、存的商品流通工作,這些都是商業(yè)企業(yè)需要信息管理系統(tǒng)的理由。軟件開發(fā)的意義也就在于此。而弄清商業(yè)用戶如此復(fù)雜需求的真面目,正是軟件開發(fā)成功的關(guān)鍵所在。

經(jīng)理:“我們要建立一套完整的商業(yè)管理軟件系統(tǒng),包括商品的進(jìn)、銷、調(diào)、存管理,是總 部-門店的連鎖經(jīng)營模式。通過通信手段門店自動訂貨,供應(yīng)商自動結(jié)算,賣場通過掃條碼實(shí)現(xiàn)銷售,管理人員能夠隨時(shí)查詢門店商品銷售和庫存情況。另外,我們 也得為政府部門提供關(guān)于商品營運(yùn)的報(bào)告?!?/p>

分析員:“我已經(jīng)明白這個項(xiàng)目的大體結(jié)構(gòu)框架,這非常重要,但在制定計(jì)劃之前,我們必須收集一些需求?!?/p>

經(jīng)理覺得奇怪:“我不是剛告訴你我的需求了嗎?”

分析員:“實(shí)際上,您只說明了整個項(xiàng)目的概念和目標(biāo)。這些高層次的業(yè)務(wù)需求不足以提供開 發(fā)的內(nèi)容和時(shí)間。我需要與實(shí)際將要使用系統(tǒng)的業(yè)務(wù)人員進(jìn)行討論,然后才能真正明白達(dá)到業(yè)務(wù)目標(biāo)所需功能和用戶要求,了解清楚后,才可以發(fā)現(xiàn)哪些是現(xiàn)有組件 即可實(shí)現(xiàn)的,哪些是需要開發(fā)的,這樣可節(jié)省很多時(shí)間。”

經(jīng)理:“業(yè)務(wù)人員都在招商。他們非常忙,沒有時(shí)間與你們詳細(xì)討論各種細(xì)節(jié)。你能不能說明一下你們現(xiàn)有的系統(tǒng)?”

分析員盡量解釋從用戶處收集需求的合理性:“如果我們只是憑空猜想用戶的要求,結(jié)果不會 令人滿意。我們只是軟件開發(fā)人員,而不是采購專家、營運(yùn)專家或是財(cái)務(wù)專家,我們并不真正明白您這個企業(yè)內(nèi)部運(yùn)營需要做些什么。我曾經(jīng)嘗試過,未真正明白這 些問題就開始編碼,結(jié)果沒有人對產(chǎn)品滿意?!?/p>

經(jīng)理堅(jiān)持道:“行了,行了,我們沒有那么多的時(shí)間。讓我來告訴您我們的需求。實(shí)際上我也很忙。請馬上開始開發(fā),并隨時(shí)將你們的進(jìn)展情況告訴我。”

風(fēng)險(xiǎn)躲在需求的迷霧之后

以上我們看到的是某客戶項(xiàng)目經(jīng)理與系統(tǒng)開發(fā)小組的分析人員討論業(yè)務(wù)需求。在項(xiàng)目開發(fā)中, 所有的項(xiàng)目風(fēng)險(xiǎn)承擔(dān)者都對需求分析階段備感興趣。這里所指的風(fēng)險(xiǎn)承擔(dān)者包括客戶方面的項(xiàng)目負(fù)責(zé)人和用戶,開發(fā)方面的需求分析人員和項(xiàng)目管理者。這部分工作 做得到位,能開發(fā)出很優(yōu)秀的軟件產(chǎn)品,同時(shí)也會令客戶滿意。若處理不好,則會導(dǎo)致誤解、挫折、障礙以及潛在的質(zhì)量和業(yè)務(wù)價(jià)值上的威脅。因此可見——需求分 析奠定了軟件工程和項(xiàng)目管理的基礎(chǔ)。

撥開需求分析的迷霧

像這樣的對話經(jīng)常出現(xiàn)在軟件開發(fā)的過程中。客戶項(xiàng)目經(jīng)理的需求對分析人員來講,像“霧里看花”般模糊并令開發(fā)者感到困惑。那么,我們就撥開霧影,分析一下需求的具體內(nèi)容:

·業(yè)務(wù)需求——反映了組織機(jī)構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,通常在項(xiàng)目定義與范圍文檔中予以說明。

·用戶需求——描述了用戶使用產(chǎn)品必須要完成的任務(wù),這在使用實(shí)例或方案腳本中予以說明。

·功能需求——定義了開發(fā)人員必須實(shí)現(xiàn)的軟件功能,使用戶利用系統(tǒng)能夠完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。

·非功能性的需求——描述了系統(tǒng)展現(xiàn)給用戶的行為和執(zhí)行的操作等,它包括產(chǎn)品必須遵從的標(biāo)準(zhǔn)、規(guī)范和約束,操作界面的具體細(xì)節(jié)和構(gòu)造上的限制。

·需求分析報(bào)告——報(bào)告所說明的功能需求充分描述了軟件系統(tǒng)所應(yīng)具有的外部行為?!靶枨蠓治鰣?bào)告”在開發(fā)、測試、質(zhì)量保證、項(xiàng)目管理以及相關(guān)項(xiàng)目功能中起著重要作用。

前面提到的客戶項(xiàng)目經(jīng)理通常闡明產(chǎn)品的高層次概念和主要業(yè)務(wù)內(nèi)容,為后繼工作建立了一個指導(dǎo)性的框架。其他任何說明都應(yīng)遵循“業(yè)務(wù)需求”的規(guī)定,然而“業(yè)務(wù)需求”并不能為開發(fā)人員提供開發(fā)所需的許多細(xì)節(jié)說明。

下一層次需求——用戶需求,必須從使用產(chǎn)品的用戶處收集。因此,這些用戶構(gòu)成了另一種軟件客戶,他們清楚要使用該產(chǎn)品完成什么任務(wù)和一些非功能性的特性需求。例如:程序的易用性、健壯性和可靠性,而這些特性將會使用戶很好地接受具有該特點(diǎn)的軟件產(chǎn)品。

經(jīng)理層有時(shí)試圖代替實(shí)際用戶說話,但通常他們無法準(zhǔn)確說明“用戶需求”。用戶需求來自產(chǎn)品的真正使用者,必須讓實(shí)際用戶參與到收集需求的過程中。如果不這樣做,產(chǎn)品很可能會因缺乏足夠的信息而遺留不少隱患。

在實(shí)際需求分析過程中,以上兩種客戶可能都覺得沒有時(shí)間與需求分析人員討論,有時(shí)客戶還 希望分析人員無須討論和編寫需求說明就能說出用戶的需求。除非遇到的需求極為簡單;否則不能這樣做。如果您的組織希望軟件成功,那么必須要花上數(shù)天時(shí)間來 消除需求中模糊不清的地方和一些使開發(fā)者感到困惑的方面。

優(yōu)秀的軟件產(chǎn)品建立在優(yōu)秀的需求基礎(chǔ)之上,而優(yōu)秀的需求源于客戶與開發(fā)人員之間有效的交流和合作。只有雙方參與者都明白自己需要什么、成功的合作需要什么時(shí),才能建立起一種良好的合作關(guān)系。

由于項(xiàng)目的壓力與日俱增,所有項(xiàng)目風(fēng)險(xiǎn)承擔(dān)者有著一個共同目標(biāo),那就是大家都想開發(fā)出一個既能實(shí)現(xiàn)商業(yè)價(jià)值又能滿足用戶要求,還能使開發(fā)者感到滿足的優(yōu)秀軟件產(chǎn)品。

客戶的需求觀

客戶與開發(fā)人員交流需要好的方法。下面建議20條法則,客戶和開發(fā)人員可以通過評審以下內(nèi)容并達(dá)成共識。如果遇到分歧,將通過協(xié)商達(dá)成對各自義務(wù)的相互理解,以便減少以后的磨擦(如一方要求而另一方不愿意或不能夠滿足要求)。

1、 分析人員要使用符合客戶語言習(xí)慣的表達(dá)

需求討論集中于業(yè)務(wù)需求和任務(wù),因此要使用術(shù)語??蛻魬?yīng)將有關(guān)術(shù)語(例如:采價(jià)、印花商品等采購術(shù)語)教給分析人員,而客戶不一定要懂得計(jì)算機(jī)行業(yè)的術(shù)語。

2、分析人員要了解客戶的業(yè)務(wù)及目標(biāo)

只有分析人員更好地了解客戶的業(yè)務(wù),才能使產(chǎn)品更好地滿足需要。這將有助于開發(fā)人員設(shè)計(jì) 出真正滿足客戶需要并達(dá)到期望的優(yōu)秀軟件。為幫助開發(fā)和分析人員,客戶可以考慮邀請他們觀察自己的工作流程。如果是切換新系統(tǒng),那么開發(fā)和分析人員應(yīng)使用 一下目前的舊系統(tǒng),有利于他們明白目前系統(tǒng)是怎樣工作的,其流程情況以及可供改進(jìn)之處。s

3、 分析人員必須編寫軟件需求報(bào)告

分析人員應(yīng)將從客戶那里獲得的所有信息進(jìn)行整理,以區(qū)分業(yè)務(wù)需求及規(guī)范、功能需求、質(zhì)量 目標(biāo)、解決方法和其他信息。通過這些分析,客戶就能得到一份“需求分析報(bào)告”,此份報(bào)告使開發(fā)人員和客戶之間針對要開發(fā)的產(chǎn)品內(nèi)容達(dá)成協(xié)議。報(bào)告應(yīng)以一種 客戶認(rèn)為易于翻閱和理解的方式組織編寫??蛻粢u審此報(bào)告,以確保報(bào)告內(nèi)容準(zhǔn)確完整地表達(dá)其需求。一份高質(zhì)量的“需求分析報(bào)告”有助于開發(fā)人員開發(fā)出真正 需要的產(chǎn)品。

4、 要求得到需求工作結(jié)果的解釋說明

分析人員可能采用了多種圖表作為文字性“需求分析報(bào)告”的補(bǔ)充說明,因?yàn)楣ぷ鲌D表能很清 晰地描述出系統(tǒng)行為的某些方面,所以報(bào)告中各種圖表有著極高的價(jià)值;雖然它們不太難于理解,但是客戶可能對此并不熟悉,因此客戶可以要求分析人員解釋說明 每個圖表的作用、符號的意義和需求開發(fā)工作的結(jié)果,以及怎樣檢查圖表有無錯誤及不一致等。

5、 開發(fā)人員要尊重客戶的意見

如果用戶與開發(fā)人員之間不能相互理解,那關(guān)于需求的討論將會有障礙。共同合作能使大家“兼聽則明”。參與需求開發(fā)過程的客戶有權(quán)要求開發(fā)人員尊重他們并珍惜他們?yōu)轫?xiàng)目成功所付出的時(shí)間,同樣,客戶也應(yīng)對開發(fā)人員為項(xiàng)目成功這一共同目標(biāo)所做出的努力表示尊重。

6、 開發(fā)人員要對需求及產(chǎn)品實(shí)施提出建議和解決方案

通??蛻羲f的“需求”已經(jīng)是一種實(shí)際可行的實(shí)施方案,分析人員應(yīng)盡力從這些解決方法中 了解真正的業(yè)務(wù)需求,同時(shí)還應(yīng)找出已有系統(tǒng)與當(dāng)前業(yè)務(wù)不符之處,以確保產(chǎn)品不會無效或低效;在徹底弄清業(yè)務(wù)領(lǐng)域內(nèi)的事情后,分析人員就能提出相當(dāng)好的改進(jìn) 方法,有經(jīng)驗(yàn)且有創(chuàng)造力的分析人員還能提出增加一些用戶沒有發(fā)現(xiàn)的很有價(jià)值的系統(tǒng)特性。

7、 描述產(chǎn)品使用特性

客戶可以要求分析人員在實(shí)現(xiàn)功能需求的同時(shí)還注意軟件的易用性,因?yàn)檫@些易用特性或質(zhì)量 屬性能使客戶更準(zhǔn)確、高效地完成任務(wù)。例如:客戶有時(shí)要求產(chǎn)品要“界面友好”或“健壯”或“高效率”,但對于開發(fā)人員來講,太主觀了并無實(shí)用價(jià)值。正確的 做法是,分析人員通過詢問和調(diào)查了解客戶所要的“友好、健壯、高效所包含的具體特性,具體分析哪些特性對哪些特性有負(fù)面影響,在性能代價(jià)和所提出解決方案 的預(yù)期利益之間做出權(quán)衡,以確保做出合理的取舍。

8、 允許重用已有的軟件組件

需求通常有一定靈活性,分析人員可能發(fā)現(xiàn)已有的某個軟件組件與客戶描述的需求很相符,在 這種情況下,分析人員應(yīng)提供一些修改需求的選擇以便開發(fā)人員能夠降低新系統(tǒng)的開發(fā)成本和節(jié)省時(shí)間,而不必嚴(yán)格按原有的需求說明開發(fā)。所以說,如果想在產(chǎn)品 中使用一些已有的商業(yè)常用組件,而它們并不完全適合您所需的特性,這時(shí)一定程度上的需求靈活性就顯得極為重要了。

9、 要求對變更的代價(jià)提供真實(shí)可靠的評估

有時(shí),人們面臨更好、也更昂貴的方案時(shí),會做出不同的選擇。而這時(shí),對需求變更的影響進(jìn) 行評估從而對業(yè)務(wù)決策提供幫助,是十分必要的。所以,客戶有權(quán)利要求開發(fā)人員通過分析給出一個真實(shí)可信的評估,包括影響、成本和得失等。開發(fā)人員不能由于 不想實(shí)施變更而隨意夸大評估成本。

10、 獲得滿足客戶功能和質(zhì)量要求的系統(tǒng)

每個人都希望項(xiàng)目成功,但這不僅要求客戶要清晰地告知開發(fā)人員關(guān)于系統(tǒng)“做什么”所需的所有信息,而且還要求開發(fā)人員能通過交流了解清楚取舍與限制,一定要明確說明您的假設(shè)和潛在的期望,否則,開發(fā)人員開發(fā)出的產(chǎn)品很可能無法讓您滿意。

11、 給分析人員講解您的業(yè)務(wù)

分析人員要依靠客戶講解業(yè)務(wù)概念及術(shù)語,但客戶不能指望分析人員會成為該領(lǐng)域的專家,而只能讓他們明白您的問題和目標(biāo);不要期望分析人員能把握客戶業(yè)務(wù)的細(xì)微潛在之處,他們可能不知道那些對于客戶來說理所當(dāng)然的“常識”。

12、 抽出時(shí)間清楚地說明并完善需求

客戶很忙,但無論如何客戶有必要抽出時(shí)間參與“頭腦高峰會議”的討論,接受采訪或其他獲 取需求的活動。有些分析人員可能先明白了您的觀點(diǎn),而過后發(fā)現(xiàn)還需要您的講解,這時(shí)請耐心對待一些需求和需求的精化工作過程中的反復(fù),因?yàn)樗侨藗兘涣髦?很自然的現(xiàn)象,何況這對軟件產(chǎn)品的成功極為重要。

13、 準(zhǔn)確而詳細(xì)地說明需求

編寫一份清晰、準(zhǔn)確的需求文檔是很困難的。由于處理細(xì)節(jié)問題不但煩人而且耗時(shí),因此很容易留下模糊不清的需求。但是在開發(fā)過程中,必須解決這種模糊性和不準(zhǔn)確性,而客戶恰恰是為解決這些問題作出決定的最佳人選,否則,就只好靠開發(fā)人員去正確猜測了。

在需求分析中暫時(shí)加上“待定”標(biāo)志是個方法。用該標(biāo)志可指明哪些是需要進(jìn)一步討論、分析 或增加信息的地方,有時(shí)也可能因?yàn)槟硞€特殊需求難以解決或沒有人愿意處理它而標(biāo)注上“待定”。客戶要盡量將每項(xiàng)需求的內(nèi)容都闡述清楚,以便分析人員能準(zhǔn)確 地將它們寫進(jìn)“軟件需求報(bào)告”中去。如果客戶一時(shí)不能準(zhǔn)確表達(dá),通常就要求用原型技術(shù),通過原型開發(fā),客戶可以同開發(fā)人員一起反復(fù)修改,不斷完善需求定 義。

14、 及時(shí)作出決定

分析人員會要求客戶作出一些選擇和決定,這些決定包括來自多個用戶提出的處理方法或在質(zhì) 量特性沖突和信息準(zhǔn)確度中選擇折衷方案等。有權(quán)作出決定的客戶必須積極地對待這一切,盡快做處理,做決定,因?yàn)殚_發(fā)人員通常只有等客戶做出決定才能行動, 而這種等待會延誤項(xiàng)目的進(jìn)展。

15、 尊重開發(fā)人員的需求可行性及成本評估

所有的軟件功能都有其成本??蛻羲M哪承┊a(chǎn)品特性可能在技術(shù)上行不通,或者實(shí)現(xiàn)它要付出極高的代價(jià),而某些需求試圖達(dá)到在操作環(huán)境中不可能達(dá)到的性能,或試圖得到一些根本得不到的數(shù)據(jù)。開發(fā)人員會對此作出負(fù)面的評價(jià),客戶應(yīng)該尊重他們的意見。

16、 劃分需求的優(yōu)先級

絕大多數(shù)項(xiàng)目沒有足夠的時(shí)間或資源實(shí)現(xiàn)功能性的每個細(xì)節(jié)。決定哪些特性是必要的,哪些是重要的,是需求開發(fā)的主要部分,這只能由客戶負(fù)責(zé)設(shè)定需求優(yōu)先級,因?yàn)殚_發(fā)者不可能按照客戶的觀點(diǎn)決定需求優(yōu)先級;開發(fā)人員將為您確定優(yōu)先級提供有關(guān)每個需求的花費(fèi)和風(fēng)險(xiǎn)的信息。

在時(shí)間和資源限制下,關(guān)于所需特性能否完成或完成多少應(yīng)尊重開發(fā)人員的意見。盡管沒有人愿意看到自己所希望的需求在項(xiàng)目中未被實(shí)現(xiàn),但畢竟是要面對現(xiàn)實(shí),業(yè)務(wù)決策有時(shí)不得不依據(jù)優(yōu)先級來縮小項(xiàng)目范圍或延長工期,或增加資源,或在質(zhì)量上尋找折衷。

17、 評審需求文檔和原型

客戶評審需求文檔,是給分析人員帶來反饋信息的一個機(jī)會。如果客戶認(rèn)為編寫的“需求分析報(bào)告”不夠準(zhǔn)確,就有必要盡早告知分析人員并為改進(jìn)提供建議。

更好的辦法是先為產(chǎn)品開發(fā)一個原型。這樣客戶就能提供更有價(jià)值的反饋信息給開發(fā)人員,使他們更好地理解您的需求;原型并非是一個實(shí)際應(yīng)用產(chǎn)品,但開發(fā)人員能將其轉(zhuǎn)化、擴(kuò)充成功能齊全的系統(tǒng)。

18、 需求變更要立即聯(lián)系

不斷的需求變更,會給在預(yù)定計(jì)劃內(nèi)完成的質(zhì)量產(chǎn)品帶來嚴(yán)重的不利影響。變更是不可避免 的,但在開發(fā)周期中,變更越在晚期出現(xiàn),其影響越大;變更不僅會導(dǎo)致代價(jià)極高的返工,而且工期將被延誤,特別是在大體結(jié)構(gòu)已完成后又需要增加新特性時(shí)。所 以,一旦客戶發(fā)現(xiàn)需要變更需求時(shí),請立即通知分析人員。

19、 遵照開發(fā)小組處理需求變更的過程

為將變更帶來的負(fù)面影響減少到最低限度,所有參與者必須遵照項(xiàng)目變更控制過程。這要求不放棄所有提出的變更,對每項(xiàng)要求的變更進(jìn)行分析、綜合考慮,最后做出合適的決策,以確定應(yīng)將哪些變更引入項(xiàng)目中。

20、 尊重開發(fā)人員采用的需求分析過程

軟件開發(fā)中最具挑戰(zhàn)性的莫過于收集需求并確定其正確性,分析人員采用的方法有其合理性。 也許客戶認(rèn)為收集需求的過程不太劃算,但請相信花在需求開發(fā)上的時(shí)間是非常有價(jià)值的;如果您理解并支持分析人員為收集、編寫需求文檔和確保其質(zhì)量所采用的 技術(shù),那么整個過程將會更為順利。

“需求確認(rèn)”意味著什么

在“需求分析報(bào)告”上簽字確認(rèn),通常被認(rèn)為是客戶同意需求分析的標(biāo)志行為,然而實(shí)際操作中,客戶往往把“簽字”看作是毫無意義的事情?!八麄円以谛枨笪臋n的最后一行下面簽名,于是我就簽了,否則這些開發(fā)人員不開始編碼?!?/p>

這種態(tài)度將帶來麻煩,譬如客戶想更改需求或?qū)Ξa(chǎn)品不滿時(shí)就會說:“不錯,我是在需求分析報(bào)告上簽了字,但我并沒有時(shí)間去讀完所有的內(nèi)容,我是相信你們的,是你們非讓我簽字的?!?/p>

同樣問題也會發(fā)生在僅把“簽字確認(rèn)”看作是完成任務(wù)的分析人員身上,一旦有需求變更出現(xiàn),他便指著“需求分析報(bào)告”說:“您已經(jīng)在需求上簽字了,所以這些就是我們所開發(fā)的,如果您想要別的什么,您應(yīng)早些告訴我們。”

這兩種態(tài)度都是不對的。因?yàn)椴豢赡茉陧?xiàng)目的早期就了解所有的需求,而且毫無疑問地需求將會出現(xiàn)變更,在“需求分析報(bào)告”上簽字確認(rèn)是終止需求分析過程的正確方法,所以我們必須明白簽字意味著什么。

對“需求分析報(bào)告”的簽名是建立在一個需求協(xié)議的基線上,因此我們對簽名應(yīng)該這樣理解: “我同意這份需求文檔表述了我們對項(xiàng)目軟件需求的了解,進(jìn)一步的變更可在此基線上通過項(xiàng)目定義的變更過程來進(jìn)行。我知道變更可能會使我們重新協(xié)商成本、資 源和項(xiàng)目階段任務(wù)等事宜?!睂π枨蠓治鲞_(dá)成一定的共識會使雙方易于忍受將來的摩擦,這些摩擦來源于項(xiàng)目的改進(jìn)和需求的誤差或市場和業(yè)務(wù)的新要求等。

需求確認(rèn)將迷霧撥散,顯現(xiàn)需求的真面目,給初步的需求開發(fā)工作畫上了雙方都明確的句號,并有助于形成一個持續(xù)良好的客戶與開發(fā)人員的關(guān)系,為項(xiàng)目的成功奠定了堅(jiān)實(shí)的基礎(chǔ)。

來源:http://hi.baidu.com/cacosen/blog/item/e3b49776c41bf410b051b934.html

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!