軟件需求分析方法大體分為如下四類:結(jié)構(gòu)化方法、面向?qū)ο蠓椒?、面向控制方法和面向?shù)據(jù)方法。限于篇幅,將主要從結(jié)構(gòu)化方法和面向?qū)ο蠓椒ㄒ约癛UP三個(gè)方面進(jìn)行簡(jiǎn)要的探討。 面向?qū)ο螅∣bject Oriented, OO)的方法把分析建立在系統(tǒng)對(duì)象以及對(duì)象間交互的基礎(chǔ)之上,使得我們能以3個(gè)最基本的方法框架——對(duì)象及其屬性、分類結(jié)構(gòu)和集合結(jié)構(gòu)來定義和溝通需求。面向?qū)ο蟮膯栴}分析模型從3個(gè)側(cè)面進(jìn)行描述,即對(duì)象模型(對(duì)象的靜態(tài)結(jié)構(gòu))、動(dòng)態(tài)模型(對(duì)象相互作用的順序)和功能模型(數(shù)據(jù)變換及功能依存關(guān)系)。需求工程的抽象原則、層次原則和分割原則同樣適用于面向?qū)ο蠓椒ǎ磳?duì)象抽象與功能抽象原則是一樣的,也是從高級(jí)到低級(jí)、從邏輯到物理,逐級(jí)細(xì)分.每一級(jí)抽象都重復(fù)對(duì)象建模(對(duì)象識(shí)別)一動(dòng)態(tài)建模(事件識(shí)別)一功能建模(操作識(shí)別)的過程,直到每一個(gè)對(duì)象實(shí)例在物理(程序編碼)上全部實(shí)現(xiàn)為止。
面向?qū)ο笮枨蠓治觯∣ORA)利用一些基本概念來建立相應(yīng)模型,以表達(dá)目標(biāo)系統(tǒng)的不同側(cè)面。盡管不同的方法所采用的具體模型不盡相同,但都無外乎用如下五個(gè)基本模型來描述軟件需求:
整體—部分模型:該模型描述對(duì)象(類)是如何由簡(jiǎn)單的對(duì)象(類)構(gòu)成的。將一個(gè)復(fù)雜對(duì)象(類)描述成一個(gè)由交互作用的若干對(duì)象(類)構(gòu)成的結(jié)構(gòu)的能力是OO途徑的突出優(yōu)點(diǎn)。該模型亦稱聚合模型。
分類模型:分類模型描述類之間的繼承關(guān)系。與聚合關(guān)系不同,它說明的是一個(gè)類可以繼承另一個(gè)或另一些類的成分,以實(shí)現(xiàn)類中成分的復(fù)用。
類—對(duì)象模型:分析過程必須描述屬于每個(gè)類的對(duì)象所具有的行為,這種行為描述的詳細(xì)程度可以根據(jù)具體情況而定。既可以只說明行為的輸入、輸出和功能,也可以采用比較形式的途徑來精確地描述其輸入、輸出及其相應(yīng)的類型甚至使用偽碼或小說明的形式來詳細(xì)刻畫。
對(duì)象交互模型:一個(gè)面向?qū)ο蟮南到y(tǒng)模型必須描述其中對(duì)象的交互方法。如前所述,對(duì)象交互是通過消息傳遞來實(shí)現(xiàn)的。事實(shí)人對(duì)象交互也可看作是對(duì)象行為之間的引用關(guān)系。因此,對(duì)象交互模型就要刻畫對(duì)象之間的消息流。對(duì)應(yīng)于不同的詳細(xì)程度,有不同的消息流描述分析,分析人員應(yīng)根據(jù)具體館況而選擇。一般地,一個(gè)詳細(xì)的對(duì)象交互模型能夠說明對(duì)象之間的消息及其流向,并且同時(shí)說明該消息將激活的對(duì)象及行為。一個(gè)不太詳細(xì)的對(duì)象交互模型可以只說明對(duì)象之間有消息,并指明其流向即可。還有一種狀況就是介于此兩者之間。
狀態(tài)模型:在狀態(tài)模型中,把一個(gè)對(duì)象看作是一個(gè)有限狀態(tài)機(jī),由一個(gè)狀態(tài)到另一狀態(tài)的轉(zhuǎn)變稱作狀態(tài)轉(zhuǎn)換。狀態(tài)模型將對(duì)象的行為描述成其不同狀態(tài)之間的通路。它也可以刻畫動(dòng)態(tài)系統(tǒng)中對(duì)象的創(chuàng)建和廢除,并稱由對(duì)象的創(chuàng)建到對(duì)象的廢除狀態(tài)之間的退路為對(duì)象的生存期。
狀態(tài)模型既可以用狀態(tài)轉(zhuǎn)換因的圖形化手段,又可用決策表或稱決策矩陣的形式來表。 RUP(Rational Unified Process)是Rational公司開發(fā)和維護(hù)的過程產(chǎn)品。RUP是工程化的軟件開發(fā)過程,它提供了在開發(fā)機(jī)構(gòu)中分派任務(wù)和責(zé)任的紀(jì)律化方法。RUP不僅僅是一個(gè)簡(jiǎn)單的過程,而是一個(gè)通用的過程框架,可用于各種不同類型的軟件系統(tǒng)、各種不同的應(yīng)用領(lǐng)域、各種不同類型的組織、各種不同的功能級(jí)別以及各種不同的項(xiàng)目規(guī)模。RUP的突出特點(diǎn)可以由以下三個(gè)關(guān)鍵詞來體現(xiàn)——用例驅(qū)動(dòng)、以構(gòu)架為中心、迭代和增量的。這些是RUP所特有的,也是同等重要的。構(gòu)架提供了一種結(jié)構(gòu)來指導(dǎo)迭代過程中的工作,而用例則確定了目標(biāo)井驅(qū)動(dòng)每次迭代的工作。
進(jìn)行需求分析的基礎(chǔ)是要獲得用戶的需要,為了完成這一工作,必須建立業(yè)務(wù)模型,通過描述業(yè)務(wù)規(guī)則、業(yè)務(wù)邏輯,明確業(yè)務(wù)過程并對(duì)其進(jìn)行規(guī)范、優(yōu)化。對(duì)于一個(gè)系統(tǒng),在建立業(yè)務(wù)模型時(shí),應(yīng)從3個(gè)方面來描述其特性:功能、行為、數(shù)據(jù),對(duì)應(yīng)于這些特性。 基于上述分析可知,結(jié)構(gòu)化分析方法與面向?qū)ο蠓治龇椒ǖ膮^(qū)別主要體現(xiàn)在兩個(gè)方面:
* 將系統(tǒng)分解成于系統(tǒng)的方式不同。前者將系統(tǒng)描述成一組交互作用的處理,后者則描述成一組交互作用的對(duì)象。
* 子系統(tǒng)之間的交互關(guān)系的描述方式不一樣。前者加工之間的交互是通過不太精確的數(shù)據(jù)流來表示的,而后者對(duì)象之間通過消息傳遞交互關(guān)系。
因此,面向?qū)ο筌浖枨蠓治龅慕Y(jié)果能更好地刻畫現(xiàn)實(shí)世界,處理復(fù)雜問題,對(duì)象比過程更具有穩(wěn)定性,便于維護(hù)與復(fù)用。
一、過濾需求的方法做后端系統(tǒng),要學(xué)會(huì)的第一個(gè)技能就是砍需求。
也就是過濾需求。這不是一個(gè)貶義詞,反而是體現(xiàn)后端產(chǎn)品價(jià)值判斷的基礎(chǔ)。
過濾需求的方法,就是通過一定的手段判斷需求是否是偽需求,應(yīng)該被過濾掉。1. 用戶場(chǎng)景模擬法后端產(chǎn)品的出發(fā)點(diǎn)就是幫助業(yè)務(wù)用戶,因此在調(diào)研需求的時(shí)候要模擬業(yè)務(wù)的場(chǎng)景,分析業(yè)務(wù)用戶提到的需求是否能解決他的問題。
如果不能幫助用戶,那么這個(gè)需求就可能是偽需求。以下面的案例說明:背景:“貨到付款”類型的訂單會(huì)因?yàn)槿必浂鵁o法發(fā)出,如果超過一定的時(shí)間,客服就會(huì)跟顧客溝通,幫顧客取消訂單。
需求:由于這種訂單的數(shù)量還是蠻多的,逐個(gè)取消太費(fèi)時(shí)間,因此業(yè)務(wù)用戶要求在“缺貨訂單”列表頁增加“批量取消訂單”按鈕。分析:調(diào)研到業(yè)務(wù)操作場(chǎng)景,是先找到該類缺貨訂單,然后和顧客溝通,顧客同意刪除,才進(jìn)行刪除。
也就是逐個(gè)溝通確認(rèn),再逐個(gè)取消訂單的,所以“批量取消訂單”無法被有效使用。因此,該需求是個(gè)偽需求,應(yīng)該被過濾掉。
2. 功能歸屬分析專門的系統(tǒng)做專職功能,有助于合理的產(chǎn)品體系建設(shè)。因此需求調(diào)研的時(shí)候,可以通過系統(tǒng)的定位,判斷需求是否應(yīng)該在該系統(tǒng)完成。
如果不屬于該系統(tǒng)范疇,那么直接說服需求方更換方案。以下面的案例說明:背景:CRM系統(tǒng)(顧客關(guān)系管理系統(tǒng))有一個(gè)顧客標(biāo)簽生成功能,就是根據(jù)顧客的消費(fèi)行為數(shù)據(jù),自動(dòng)對(duì)應(yīng)關(guān)聯(lián)上標(biāo)簽,如優(yōu)質(zhì)顧客、高潛力顧客、欺詐顧客等。
需求:業(yè)務(wù)用戶提出需求,除了做上述的基礎(chǔ)標(biāo)簽之外,還要做出英語版本的標(biāo)簽(就是把標(biāo)簽文案翻譯成英文),這樣歐美員工可以在英語版本的系統(tǒng)下使用。分析:調(diào)研到翻譯之后的標(biāo)簽不是在CRM系統(tǒng)使用的,而是給到SMS(客服系統(tǒng))使用的。
所以應(yīng)該由SMS根據(jù)CMS提供的基礎(chǔ)標(biāo)簽數(shù)據(jù),自己做二次的衍生。之所以這樣,首先是為了避免未來更多語言版本的擴(kuò)展需求或更多系統(tǒng)提出類似的需求;其次,CRM系統(tǒng)已經(jīng)完成了“接力賽”的第一棒,創(chuàng)造了基礎(chǔ)數(shù)據(jù),那么其他系統(tǒng)要特殊化使用,完全可以自行進(jìn)行特殊化處理,無需耦合回CRM系統(tǒng)。
結(jié)論:案例的需求本身是真需求,并且實(shí)現(xiàn)上也沒難度,但是該功能的定位超出了本系統(tǒng)范疇,專門系統(tǒng)做專職功能,化衍生需求應(yīng)該在下游執(zhí)行。否則,耦合性過高只會(huì)增加系統(tǒng)的復(fù)雜程度,難以維護(hù)和擴(kuò)展。
二、拆分和聚合的方法1. 拆分需求法業(yè)務(wù)用戶提出一個(gè)需求,很可能只是短短的一段話。但是不要高興太早,可能這一句話暗含了很多線索,因此要善于拆分:先找他要解決的核心問題,再圍繞核心點(diǎn),理清前、后、左、右、上、下的旁系需求點(diǎn)。
每個(gè)需求點(diǎn)再當(dāng)做一個(gè)子需求進(jìn)行調(diào)研,最后再聚合在一起。以下面的案例說明:背景:訂單業(yè)務(wù)的類型很多,訂單退貨之后需要?jiǎng)?chuàng)建售后單據(jù),但是因?yàn)閿?shù)量大,所以花費(fèi)很多人力,且手動(dòng)創(chuàng)建有出錯(cuò)的風(fēng)險(xiǎn)。
需求:業(yè)務(wù)提出的需求是“增加退貨訂單自動(dòng)創(chuàng)建售后單的功能”,這是個(gè)一句話需求。該一句話需求,其實(shí)包含了多種具體的訂單類型和場(chǎng)景,那么我們就要拆分調(diào)研,拆分的維度比如:自營訂單、第三方訂單、貨到付款訂單、先款后貨訂單、部分退貨訂單、完全退貨訂單、服裝事業(yè)部訂單、電子事業(yè)部訂單等,其中每一個(gè)維度就相當(dāng)于一個(gè)小需求。
這里不一一展開。2. 聚合需求法拆分法是對(duì)單個(gè)需求分解成若干小需求進(jìn)行調(diào)研,聚合法相反,是找到許多個(gè)相互關(guān)聯(lián)的小需求的共性,然后統(tǒng)籌成一個(gè)大需求去完成。
例如:由于業(yè)務(wù)用戶分散在不同的部門,各自為政,于是張三、李四可能都對(duì)一個(gè)業(yè)務(wù)流程有相同的需求,或者對(duì)同一個(gè)功能有相同的優(yōu)化期望,結(jié)果倆人分別提了需求過來。那么產(chǎn)品經(jīng)理就要找到二者背后的相關(guān)性和交叉區(qū)。
然后統(tǒng)籌規(guī)劃,聚合在一起當(dāng)作一個(gè)需求來調(diào)研,最終輸出一個(gè)整體的需求調(diào)研結(jié)果。三、利用輔助功能調(diào)研需求調(diào)研產(chǎn)品現(xiàn)有功能,可以用來確認(rèn)原有功能的邏輯,或者確定新需求方案是否可行。
比如業(yè)務(wù)用戶需要更新一個(gè)功能,為了避免更新出錯(cuò)或遺漏,產(chǎn)品經(jīng)理需要知道修改前和修改后是否會(huì)能正常運(yùn)行。最基礎(chǔ)的辦法就是自己設(shè)計(jì)一個(gè)測(cè)試用例,記錄操作方式、狀態(tài)變化、數(shù)據(jù)流向等。
看看下面的例子:背景:從銷售網(wǎng)站獲取到OMS系統(tǒng)(訂單管理系統(tǒng))的訂單信息中帶著顧客的郵箱。顧客下完單,可能會(huì)在銷售網(wǎng)站修改郵箱,而此時(shí)已經(jīng)獲取到OMS的歷史訂單中的郵箱是不變的。
需求:顧客若在銷售網(wǎng)站修改郵箱,要求已獲取到OMS的該顧客的訂單中的郵箱也要同步修改。分析:需求是很明白的,也有它的意義,但有風(fēng)險(xiǎn)。
因?yàn)槲覀冎烙唵涡畔⒇灤┯谡麄€(gè)訂單流轉(zhuǎn)過程中,牽扯到訂單編輯、審核、取消、配貨、發(fā)貨等,而這些環(huán)節(jié)跳轉(zhuǎn)的觸發(fā)條件可能就是某個(gè)信息更新(這里面就可能包括有郵箱更新)。因此,更新郵箱是否會(huì)影響流程中的某些環(huán)節(jié),一時(shí)間很難準(zhǔn)確知道。
于是,我們可以采用預(yù)測(cè)試的方式,設(shè)計(jì)測(cè)試用例,在測(cè)試機(jī)運(yùn)行一些訂單,觀察各個(gè)環(huán)節(jié)郵箱變更的影響,然后收集起來分析對(duì)策。測(cè)試法就像是探雷一樣,主要用來解決未知風(fēng)險(xiǎn)點(diǎn)。
這個(gè)方式的重點(diǎn)是記錄和分析操作前狀態(tài)、操作位。
三種需求分析的方法:結(jié)構(gòu)化分析方法、面向?qū)ο蟮姆治龇椒?、面向問題域的分析方法。
結(jié)構(gòu)化的分析方法是傳統(tǒng)的分析法,它的好處是在需求階段可以不需要精確地定義系統(tǒng),只需要根據(jù)業(yè)務(wù)框架確定系統(tǒng)的功能范圍,以及每個(gè)功能的處理邏輯和業(yè)務(wù)規(guī)則,功能需求規(guī)格書等。因?yàn)椴恍枰_描述,因此描述系統(tǒng)的方式比較靈活多樣,可以采用圖表、示例圖、文字等等方式來描述系統(tǒng)。在系統(tǒng)開發(fā)以前,一般還可以采用更為直觀的原型系統(tǒng)方式和最終用戶進(jìn)行交流和確認(rèn),因此對(duì)業(yè)務(wù)需求的要求會(huì)低一些,業(yè)務(wù)需求階段的周期相對(duì)容易控制;通過業(yè)務(wù)全景圖,最終用戶也能了解系統(tǒng)的功能;通過功能活動(dòng)圖和業(yè)務(wù)規(guī)則的描述,也可以相對(duì)精確地描述業(yè)務(wù)系統(tǒng);因?yàn)闆]有嚴(yán)格的標(biāo)記語言,可以采用適當(dāng)?shù)钠枋鲞m當(dāng)?shù)南到y(tǒng)。當(dāng)然,這種方法的缺點(diǎn)也是明顯的,分析人員和業(yè)務(wù)人員之間可能缺乏共同語言,機(jī)器不能識(shí)別業(yè)務(wù)需求書,在設(shè)計(jì)階段還需要繼續(xù)和用戶確認(rèn)一部分功能。
面向?qū)ο蟮姆治龇椒ǖ淖畲蠛锰幨窃谛枨箅A段,就能夠非常精確地描述一個(gè)系統(tǒng),采用程序語言的方式和最終用戶交流(最終用戶必須要熟悉這種語言),能夠在項(xiàng)目一開始就發(fā)現(xiàn)很多問題,避免在開發(fā)的過程中出現(xiàn)需求的反復(fù),而且在系統(tǒng)設(shè)計(jì)和開發(fā)階段不需要最終用戶參與。在實(shí)施上,一般可以采用場(chǎng)景、業(yè)務(wù)功能等方式來描述,比較適合于業(yè)務(wù)流程環(huán)節(jié)多的系統(tǒng),或者軟件產(chǎn)品的開發(fā)。但是,我們也要看到,在現(xiàn)實(shí)中,絕大多數(shù)的應(yīng)用系統(tǒng)都很難在需求階段就可以被精確地抽象化定義,所以這種方法的缺點(diǎn)和困難也是顯而易見的:首先,用戶要非常清楚地知道最終的業(yè)務(wù)系統(tǒng)應(yīng)該是什么樣,或者采用一種抽象的方式能夠確定最終的應(yīng)用系統(tǒng);其次,因?yàn)樽罱K用戶不需要參與設(shè)計(jì)和開發(fā)階段的工作,所以雙方確定業(yè)務(wù)需求的過程也會(huì)比較長;同時(shí),因?yàn)槭蔷_描述,因此描述系統(tǒng)的語言是非常邏輯化的,一般通過某種方式可以使機(jī)器識(shí)別業(yè)務(wù)需求,采用這種方式寫的業(yè)務(wù)需求是非常格式化的,一方面描述一個(gè)系統(tǒng)需要的信息非常多,可能使需求說明的篇幅非常長,不便于理解和閱讀;另外由于通過抽象的方式來推演最終系統(tǒng)的運(yùn)行方式,對(duì)業(yè)務(wù)人員的要求非常高。
軟件工程中包含需求、設(shè)計(jì)、編碼和測(cè)試四個(gè)階段,其中需求工程是軟件工程第一個(gè)也是很重要的一個(gè)階段,需求分析是要決定“做什么,不做什么”。
在一個(gè)軟件項(xiàng)目中,軟件需求包括三個(gè)不同的層次-業(yè)務(wù)需求、用戶需求和功能需求-也包括非功能需求:業(yè)務(wù)需說明了提供給客戶和產(chǎn)品開發(fā)商的新系統(tǒng)的最初利益,反映了組織機(jī)構(gòu)或客戶對(duì)系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求。
軟件開發(fā),能否獲得成功,最重要的是需求分析的工作。因此,軟件需求分析能力和水平,對(duì)軟件項(xiàng)目至關(guān)重要。
一般的分析方法和步驟如下:
⑴首先調(diào)查組織機(jī)構(gòu)情況 包括了解該組織的部門組成情況,各部門的職能等,為分析信息流程作準(zhǔn)備。
⑵然后調(diào)查各部門的業(yè)務(wù)活動(dòng)情況 包括了解各個(gè)部門輸入和使用什么數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到什么部門,輸出結(jié)果的格式是什么。
⑶協(xié)助用戶明確對(duì)新系統(tǒng)的各種要求 包括信息要求、處理要求、完全性與完整性要求。
⑷確定新系統(tǒng)的邊界 確定哪些功能由計(jì)算機(jī)完成或?qū)頊?zhǔn)備讓計(jì)算機(jī)完成,哪些活動(dòng)由人工完成。由計(jì)算機(jī)完成的功能就是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。
常用的調(diào)查方法有:
⑴跟班作業(yè) 通過親身參加業(yè)務(wù)工作來了解業(yè)務(wù)活動(dòng)的情況。這種方法可以比較準(zhǔn)確地理解用戶的需求,但比較耗費(fèi)時(shí)間。
⑵開調(diào)查會(huì) 通過與用戶座談來了解業(yè)務(wù)活動(dòng)情況及用戶需求。座談時(shí),參加者之間可以相互啟發(fā)。
⑶請(qǐng)專人介紹。
⑷詢問 對(duì)某些調(diào)查中的問題,可以找專人詢問。
⑸設(shè)計(jì)調(diào)查表請(qǐng)用戶填寫 如果調(diào)查表設(shè)計(jì)得合理,這種方法是很有效,也很易于為用戶接受的。
⑹查閱記錄 即查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄,包括原始單據(jù)、賬簿、報(bào)表等。 通過調(diào)查了解了用戶需求后,還需要進(jìn)一步分析和表達(dá)用戶的需求。分析和表達(dá)用戶需求的方法主要包括自頂向下和自底向上兩類方法。
軟件需求的定義:(1)用戶解決問題或達(dá)到目標(biāo)所需的條件或能力。
(2)系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn)、規(guī)范或其它正式規(guī)定文檔所需具有的條件或能力。(3)一種反映上面(1)或(2)所描述的條件或權(quán)能的文檔說明。
實(shí)通俗的講,“需求”就是用戶的需要,它包括用戶要解決的問題、達(dá)到的目標(biāo)、以及實(shí)現(xiàn)這些目標(biāo)所需要的條件,它是一個(gè)程序或系統(tǒng)開發(fā)工作的說明,表現(xiàn)形式一般為文檔形式。需求工程的定義:需求分析的過程,也叫做需求工程和需求階段,它包括了需求開發(fā)和需求管理兩個(gè)部分。
需求開發(fā)是指從情況收集、分析和評(píng)價(jià)到編寫文檔、評(píng)審等一系列產(chǎn)生需求的活動(dòng),分為四個(gè)階段:情況獲取、分析、制訂規(guī)格說明和評(píng)審。這四個(gè)階段不一定是遵循線性順序的,他們的活動(dòng)是相互獨(dú)立和反復(fù)的。
需求管理是軟件項(xiàng)目開發(fā)過程中控制和維持需求約定的活動(dòng),它包括:變更控制、版本控制、需求跟蹤、需求狀態(tài)跟蹤等工作。需求開發(fā)與管理的一些方法:(1)繪制關(guān)聯(lián)圖:繪制系統(tǒng)關(guān)聯(lián)圖是用于定義系統(tǒng)與系統(tǒng)外部實(shí)體間的界限和接口的簡(jiǎn)單模型。
(2)可行性分析:在允許的成本、性能要求下,分析每項(xiàng)需求實(shí)施的可行性,提出需求實(shí)現(xiàn)相關(guān)風(fēng)險(xiǎn),包括與其它需求的沖突,對(duì)外界因素的依賴和技術(shù)障礙。(4)系統(tǒng)原型:當(dāng)用戶自身對(duì)有的需求不十分清楚時(shí),我們可以建立一個(gè)系統(tǒng)原型,用戶通過評(píng)價(jià)原型更好地理解所要解決的問題。
(5)圖形分析模型:繪制圖形分析模型是編制軟件需求規(guī)格說明重要手段。
它們能幫助分析人員理清數(shù)據(jù)、業(yè)務(wù)模式、工作流程以及他們之間的關(guān)系,找出遺漏、冗余和不一致的需求。這樣的模型包括數(shù)據(jù)流圖、實(shí)體關(guān)系圖、狀態(tài)變換圖、對(duì)話框圖、對(duì)象類及交互作用圖。
(6)數(shù)據(jù)字典:數(shù)據(jù)字典是對(duì)系統(tǒng)用到的所有數(shù)據(jù)項(xiàng)和結(jié)構(gòu)的定義,以確保開發(fā)人員使用統(tǒng)一的數(shù)據(jù)定義。在需求階段,數(shù)據(jù)字典至少應(yīng)定義客戶數(shù)據(jù)項(xiàng),確??蛻襞c開發(fā)小組是使用一致的定義和術(shù)語。
需求管理的方法主要包括以下一些方面:1)確定需求變更控制過程。制定一個(gè)選擇、分析和決策需求變更的過程,所有的需求變更都需遵循此過程。
2)進(jìn)行需求變更影響分析。評(píng)估每項(xiàng)需求變更,以確定它對(duì)項(xiàng)目計(jì)劃安排和其它需求的影響,明確與變更相關(guān)的任務(wù)并評(píng)估完成這些任務(wù)需要的工作量。
通過這些分析將有助于需求變更控制部門做出更好的決策。3)建立需求基準(zhǔn)版本和需求控制版本文檔。
確定需求基準(zhǔn),這是項(xiàng)目各方對(duì)需求達(dá)成一致認(rèn)識(shí)時(shí)刻的一個(gè)快照,之后的需求變更遵循變更控制過程即可。每個(gè)版本的需求規(guī)格說明都必須是獨(dú)立說明,以避免將底稿和基準(zhǔn)或新舊版本相混淆。
4)維護(hù)需求變更的歷史記錄。將需求變更情況寫成文檔,記錄變更日期、原因、負(fù)責(zé)人、版本號(hào)等內(nèi)容,及時(shí)通知到項(xiàng)目開發(fā)所涉及的人員。
為了盡量減少困惑、沖突、誤傳,應(yīng)指定專人來負(fù)責(zé)更新需求。5)跟蹤每項(xiàng)需求的狀態(tài)。
可以把每一項(xiàng)需求的狀態(tài)屬性(如已推薦的,已通過的,已實(shí)施的,或已驗(yàn)證的)保存在數(shù)據(jù)庫中,這樣可以在任何時(shí)候得到每個(gè)狀態(tài)類的需求數(shù)量。6)衡量需求穩(wěn)定性。
可以定期把需求數(shù)量和需求變更(添加、修改、刪除)數(shù)量進(jìn)行比較。過多的需求變更"是一個(gè)報(bào)警信號(hào)",意味著問題并未真正弄清楚。
4.需求分析評(píng)價(jià)標(biāo)準(zhǔn) (1)清晰:目前大多數(shù)的需求分析采用的仍然是自然語言,自然語言對(duì)需求分析最大的弊病就是它的二義性,所以開發(fā)人員需要對(duì)需求分析中采用的語言做某些限制。例如盡量采用主語+動(dòng)作的簡(jiǎn)單表達(dá)方式。
需求分析中的描述一定要簡(jiǎn)單,千萬不要采用疑問句、修飾這些復(fù)雜的表達(dá)方式。 除了語言的二義性之外,注意不要使用行話,就是計(jì)算機(jī)術(shù)語。
需求分析最重要的是和用戶溝通,可是用戶多半不是計(jì)算機(jī)的專業(yè)人士,如果在需求分析中使用了行話,就會(huì)造成用戶理解上的困難。(2)完整:需求的完整性是非常重要的,如果有遺漏需求,則不得不返工,在軟件開發(fā)過程中,最糟糕的事情莫過于在軟件開發(fā)接近完成時(shí)發(fā)現(xiàn)遺漏了一項(xiàng)需求。
但實(shí)際情況是,需求的遺漏是常發(fā)生的事情,這不僅僅是開發(fā)人員的問題,更多發(fā)生在用戶那里。要做到需求的完整性是很艱難的一件事情,它涉及到需求分析過程的各個(gè)方面,貫穿整個(gè)過程,從最初的需求計(jì)劃制定到最后的需求評(píng)審。
(3)一致:一致性是指用戶需求必須和業(yè)務(wù)需求一致,功能需求必須和用戶需求一致。在需求過程中,開發(fā)人員需要把一致性關(guān)系進(jìn)行細(xì)化,比如用戶需求不能超出預(yù)前指定的范圍。
嚴(yán)格的遵守不同層次間的一致性關(guān)系,就可以保證最后開發(fā)出來的軟件系統(tǒng)不會(huì)偏離最初的實(shí)現(xiàn)目標(biāo)。(4)可測(cè)試:一個(gè)項(xiàng)目的測(cè)試從什么時(shí)候開始呢?有人說是從編碼完成后開始,有人說是編碼的時(shí)候同時(shí)進(jìn)行單元測(cè)試,編碼完成后進(jìn)行系統(tǒng)測(cè)試,這些結(jié)論都不完全正確。
實(shí)際上,測(cè)試是從需求分析過程就開始了,因?yàn)樾枨笫菧y(cè)試計(jì)劃的輸入和參照。這就要求需求分析是可測(cè)試的,只有系統(tǒng)的所有需求都是可以被測(cè)試的,才能夠保證軟件始終圍繞著用戶的需要,保證軟件系統(tǒng)是成功的。
一、需求識(shí)別 需求人員在此步驟應(yīng)該分析需求類別、需求復(fù)雜度和需求價(jià)值用來確定需求實(shí)施的優(yōu)先級(jí)。
1.需求類別確認(rèn):需求類別包含流程類需求、統(tǒng)計(jì)分析類需求、接口類需求,一個(gè)需求可能為某一類型需求,也可能包含多類需求。確認(rèn)需求類別后應(yīng)對(duì)每類需求的數(shù)量進(jìn)行初步分析(比如流程類需求包含幾個(gè)流程、統(tǒng)計(jì)分析類需求包含幾個(gè)報(bào)表、接口類需求包含幾個(gè)接口)。
2.需求復(fù)雜度分析:一般需求受理工作量在1-5人天的需求復(fù)雜度低,工作量在5-15人天的需求復(fù)雜度中,工作量在15人天以上需求復(fù)雜度高。(工作量表示需求受理全過程需求人員需要付出的工作量)。
3.價(jià)值分析:需求人員收到需求后應(yīng)根據(jù)收集需求內(nèi)容初步分析需求痛點(diǎn)/目標(biāo)、需求復(fù)雜度、業(yè)務(wù)重要程度確定需求價(jià)值,需求價(jià)值分析 二、業(yè)務(wù)流程/統(tǒng)計(jì)查詢/接口分析 針對(duì)流程類需求必須進(jìn)行業(yè)務(wù)流程分析,統(tǒng)計(jì)查詢和接口類需求可不進(jìn)行詳細(xì)的流程分析。1.業(yè)務(wù)流程分為部門級(jí)、組織級(jí)和崗位級(jí) 部門級(jí)流程關(guān)注脈絡(luò)需要分析涉及哪些具體崗位、執(zhí)行活動(dòng)、每個(gè)活動(dòng)之間的關(guān)聯(lián)關(guān)系,它是需求分析的主線條,也是流程分析的主要產(chǎn)物。
組織級(jí)流程關(guān)注宏觀一般不會(huì)直接繪制,是對(duì)部門級(jí)流程的概括和抽象。崗位級(jí)流程關(guān)注每個(gè)業(yè)務(wù)活動(dòng)的執(zhí)行步驟屬需求細(xì)節(jié)范疇,在流程分析階段不要過度進(jìn)入細(xì)節(jié)。
2.需求識(shí)別階段確認(rèn)的流程均為部門級(jí)流程 需求人員在進(jìn)行流程分析應(yīng)遵循如下方法:(1)業(yè)務(wù)流程確認(rèn):一個(gè)流程為一個(gè)業(yè)務(wù)事件,一般是外部角色發(fā)起或系統(tǒng)內(nèi)部主動(dòng)發(fā)起(比如時(shí)間事件或狀態(tài)事件),發(fā)起后會(huì)觸發(fā)一系列業(yè)務(wù)活動(dòng)。(2)角色及業(yè)務(wù)活動(dòng)確認(rèn):流程圖中的每個(gè)泳道都必須對(duì)應(yīng)到角色,每個(gè)角色對(duì)應(yīng)多個(gè)業(yè)務(wù)活動(dòng)。
需求人員在確認(rèn)業(yè)務(wù)活動(dòng)時(shí)一定要保證活動(dòng)的粒度,一個(gè)業(yè)務(wù)活動(dòng)一定是由一個(gè)角色完成且每個(gè)業(yè)務(wù)活動(dòng)都是有價(jià)值的活動(dòng)。比如項(xiàng)目輸入項(xiàng)目名稱是一個(gè)執(zhí)行步驟,這個(gè)動(dòng)作沒有價(jià)值,項(xiàng)目經(jīng)理查詢項(xiàng)目信息就是一個(gè)業(yè)務(wù)活動(dòng)。
在需求描述時(shí)針對(duì)線下活動(dòng)或新增活動(dòng)應(yīng)該應(yīng)標(biāo)識(shí)區(qū)分。(3)業(yè)務(wù)活動(dòng)間關(guān)系及數(shù)據(jù)確認(rèn):確定所有業(yè)務(wù)活動(dòng)的前后置關(guān)系,并明確流程間的傳遞的數(shù)據(jù)實(shí)體。
(4)流程整體瓶頸分析:一般若某個(gè)角色業(yè)務(wù)活動(dòng)工作量較大,或流程涉及高級(jí)領(lǐng)導(dǎo),一般都會(huì)造成瓶頸,這種情況需求人員應(yīng)想辦法分散工作量提出流程優(yōu)化建議。3.針對(duì)統(tǒng)計(jì)查詢類需求及接口類需求,按照上述業(yè)務(wù)活動(dòng)確定原則分析、確定角色,并明確每個(gè)角色所執(zhí)行的業(yè)務(wù)活動(dòng)即可。
三、數(shù)據(jù)實(shí)體分析 針對(duì)流程類需求需要分析各業(yè)務(wù)活動(dòng)傳遞的數(shù)據(jù)實(shí)體,統(tǒng)計(jì)分析類需求需要分析統(tǒng)計(jì)查詢條件和查詢展現(xiàn)兩類數(shù)據(jù)實(shí)體、接口類需求需要分析接口傳遞數(shù)據(jù)實(shí)體,具體分析包含如下內(nèi)容:1.明確數(shù)據(jù)實(shí)體:確認(rèn)需要分析的所有數(shù)據(jù)實(shí)體,明確哪些為系統(tǒng)原有實(shí)體、哪些為新增實(shí)體、哪些為改造實(shí)體。2.明確所有數(shù)據(jù)實(shí)體間關(guān)系:實(shí)體間關(guān)系包含(1對(duì)1、1對(duì)多、多對(duì)多),另外需要分析數(shù)據(jù)實(shí)體變更是否需要保留版本,實(shí)體刪除(邏輯刪除、物理刪除)是否影響其它數(shù)據(jù)實(shí)體。
3.明確數(shù)據(jù)實(shí)體字段:針對(duì)新增數(shù)據(jù)或改造數(shù)據(jù)實(shí)體需要明確新增字段的名稱、字段類型、是否必填、字段取值方式(人工輸入、系統(tǒng)自動(dòng)繼承自其它數(shù)據(jù)實(shí)體、系統(tǒng)自動(dòng)計(jì)算需要明確計(jì)算公式)。4.數(shù)據(jù)權(quán)限分析:需要分析不同角色在數(shù)據(jù)權(quán)限方面的差異,若涉及縱向多級(jí)用戶,要說明對(duì)于集團(tuán)/省/地市用戶的數(shù)據(jù)隔離。
四、角色及使用場(chǎng)景分析 一般來說每個(gè)業(yè)務(wù)活動(dòng)是對(duì)用戶使用場(chǎng)景的抽象,每個(gè)業(yè)務(wù)活動(dòng)可能包含多個(gè)場(chǎng)景,分析使用場(chǎng)景時(shí)應(yīng)按照業(yè)務(wù)活動(dòng)為主線逐個(gè)進(jìn)行分析,每個(gè)業(yè)務(wù)活動(dòng)分析時(shí)應(yīng)包含如下內(nèi)容:1.明確活動(dòng)執(zhí)行角色。2.明確活動(dòng)執(zhí)行的前置條件和后置條件。
3.明確不同場(chǎng)景:一個(gè)業(yè)務(wù)活動(dòng)可能包含正常的使用場(chǎng)景、備選使用場(chǎng)景和異常使用場(chǎng)景;4.明確每個(gè)場(chǎng)景的執(zhí)行步驟:描述執(zhí)行步驟時(shí)應(yīng)使用簡(jiǎn)單的語法,主語明確語義易于理解,每個(gè)步驟不應(yīng)該在任何一方(執(zhí)行角色、系統(tǒng))停留兩部以上,重點(diǎn)描述如何交互。5.業(yè)務(wù)規(guī)則和約束:明確在每個(gè)業(yè)務(wù)活動(dòng)下應(yīng)遵循的業(yè)務(wù)規(guī)則和約束,這里一般是與業(yè)務(wù)流程相關(guān)的行為規(guī)則(比如項(xiàng)目周期時(shí)長超過90天必須提交二級(jí)領(lǐng)導(dǎo)審批),或與數(shù)據(jù)實(shí)體相關(guān)的數(shù)據(jù)規(guī)則(需求交接單拒收時(shí)候必須填寫拒收原因,且拒收原因不能超過500字)。
五、系統(tǒng)功能分析。
它首先用結(jié)構(gòu)化分析(SA)對(duì)軟件進(jìn)行需求分析,然后用結(jié)構(gòu)化設(shè)計(jì)(SD)方法進(jìn)行總體設(shè)計(jì),最后是結(jié)構(gòu)化編程(SP)。它給出了兩類典型的軟件結(jié)構(gòu)(變換型和事務(wù)型)使軟件開發(fā)的成功率大大提高。
三種基本的結(jié)構(gòu)形式就是順序、選擇和重復(fù)。三種數(shù)據(jù)結(jié)構(gòu)可以進(jìn)行組合,形成復(fù)雜的結(jié)構(gòu)體系。這一方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件表格處理。該方法也可與其它方法結(jié)合,用于模塊的詳細(xì)設(shè)計(jì)。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:2.868秒