需求分析
挑戰(zhàn)
順利地完成需求分析是一個(gè)艱巨的挑戰(zhàn)。首先要確認(rèn)所有持有關(guān)鍵信息的人本身就不容易,然后還要從這些人獲得可用的信息,把這些信息轉(zhuǎn)化為清晰的和完整的形式。同時(shí)分析者還要考慮到可能的限制。除此之外他們還要考慮一個(gè)項(xiàng)目的
是否可行
是否在規(guī)定的時(shí)間里可以完成
價(jià)格上是否負(fù)擔(dān)得起
是否合法
是否匹配道德
一個(gè)新項(xiàng)目開(kāi)始的時(shí)候人們往往還非常興奮,往往試圖輕視需求分析的必要性。但對(duì)過(guò)去項(xiàng)目的分析證明一個(gè)徹底的和無(wú)情的需求分析可以降低一個(gè)項(xiàng)目的耗費(fèi)和降低其技術(shù)風(fēng)險(xiǎn)。
主要困難
隨著工程師對(duì)需求分析的越來(lái)越重視,今天我們對(duì)需求分析的主要困難也理解得比較清楚:
需求分析需要由有充分的經(jīng)驗(yàn)、技術(shù)知識(shí)和語(yǔ)言技巧的專家來(lái)完成;
顧客一開(kāi)始所提出的需要,往往不完全、太樂(lè)觀以及過(guò)分受老的系統(tǒng)或過(guò)程的影響;
使用復(fù)雜的工具和不同的技術(shù)來(lái)進(jìn)行需求分析往往會(huì)打消獲得一個(gè)完整的和細(xì)致的結(jié)果的希望。
持有關(guān)鍵信息的人
顧客有可能妨礙需求分析順利進(jìn)行,有以下幾種可能性:
顧客不明白他自己需要什么
顧客不愿將他們的需要固定在一系列寫在紙上的條例中
在價(jià)格和時(shí)間確定后,顧客堅(jiān)持要求新的需要
分析者與顧客的通訊太緩慢
顧客不參加回顧或無(wú)法參加回顧
顧客缺乏技術(shù)上的知識(shí)
顧客缺乏對(duì)軟件開(kāi)發(fā)的知識(shí)
軟件開(kāi)發(fā)者
但是軟件開(kāi)發(fā)者也有他們的責(zé)任。由于軟件開(kāi)發(fā)者收錢來(lái)開(kāi)發(fā)他們的軟件,他們的責(zé)任就更加不可推脫了。由軟件開(kāi)發(fā)者導(dǎo)致的困難有:
軟件工程師與他們的顧客往往使用不同的詞匯。有時(shí)他們以為互相之間完全達(dá)成協(xié)議,但是在展示最終結(jié)果時(shí)卻發(fā)現(xiàn)并非如此。開(kāi)發(fā)者有義務(wù)克服這個(gè)困難,他們拿了顧客的錢,因此有這個(gè)義務(wù)。
軟件開(kāi)發(fā)者往往喜歡將顧客的需要改變得能使它們匹配一個(gè)已存在的系統(tǒng)或模式,而不愿按照顧客的需要來(lái)發(fā)展一個(gè)新的系統(tǒng)。
需求分析往往是由程序員完成的,而不是由作業(yè)分析員完成的。程序員往往缺乏理解實(shí)際事物的運(yùn)行過(guò)程和商業(yè)過(guò)程的技巧。
解決方法
解決這些困難的一個(gè)方法是使用專業(yè)的作業(yè)或系統(tǒng)分析員,這些專業(yè)人員通過(guò)專門訓(xùn)練來(lái)填補(bǔ)商業(yè)和電腦世界之間的鴻溝的。這個(gè)方法可以達(dá)到一定的效果,但從顧客方面來(lái)說(shuō)要找到相應(yīng)的有類似技巧的人就相當(dāng)困難了。此外今天為需求分析所使用的方法依然還有很大的缺陷,它們還不夠有效。
1990年代以來(lái),新的技術(shù)有制作原型、統(tǒng)一建模語(yǔ)言(UML)、用例( Use case )和敏捷軟件開(kāi)發(fā)等方法。
主要技術(shù)
需求分析有可能在一個(gè)項(xiàng)目中成為一個(gè)漫長(zhǎng)、艱巨的工作。需求分析專家與他們的顧客交談、記錄他們的交談結(jié)果、分析他們收集的信息,從中提取互相矛盾的地方,總結(jié)出一個(gè)總體觀念,然后再與顧客交談他們發(fā)現(xiàn)的問(wèn)題。這個(gè)過(guò)程可以不斷重復(fù),在有些項(xiàng)目中這個(gè)過(guò)程可以伴隨著整個(gè)生命周期。
新系統(tǒng)很可能改變?nèi)酥g的關(guān)系和人的工作環(huán)境,因此認(rèn)定誰(shuí)是重要的信息持有者是非常重要的。只有這樣在需求分析的過(guò)程中才能夠?qū)㈩櫩退械男枰技o(jì)錄下來(lái),只有這樣才能保證他們認(rèn)識(shí)到新的系統(tǒng)對(duì)他們來(lái)說(shuō)帶來(lái)怎樣的變化。出于下述原因這個(gè)要求往往達(dá)不到:
與顧客的交談不夠多和不夠徹底,一些重要的需求被忽視;
顧客的反應(yīng)不說(shuō)明問(wèn)題,顧客對(duì)新系統(tǒng)的特征不滿。
為了使所有這些討論有條理、有組織和有效地被記錄下來(lái),這些討論的過(guò)程和其內(nèi)容的演化也必須被記錄下來(lái)。
分析員可以使用不同的技術(shù)來(lái)從顧客手中獲得需求。比較老的方式有采訪顧客,或者與顧客一起開(kāi)座談會(huì),列舉顧客的需求。比較新的技術(shù)有創(chuàng)建模型和使用用例。在最佳狀態(tài)下在采納了不同的技術(shù)后他們可以完全理解顧客的需要和與持重要信息的人創(chuàng)建了必要的聯(lián)系。
采訪持重要信息的人
采訪持重要信息的人是需求分析中一個(gè)必不可少的過(guò)程。但在一個(gè)大的系統(tǒng)中許多人必須被采訪,這需要許多時(shí)間和金錢,但最重要的是這個(gè)過(guò)程最可能顯示現(xiàn)有的業(yè)務(wù)流程與新系統(tǒng)中的業(yè)務(wù)流程之間的差別。不同的顧客有可能有不同的或甚至相對(duì)的需求,在這種情況下分析員必須協(xié)調(diào)各方的需要。
需求工作會(huì)
出于上述原因一般假如一個(gè)系統(tǒng)非常復(fù)雜的話需求分析最常用的方法是召開(kāi)需求工作會(huì),在需求工作會(huì)上分析員和持重要信息的人一起分析系統(tǒng)的需要和發(fā)展解決方案。
這樣的工作會(huì)最好不要在采訪對(duì)象的工作場(chǎng)進(jìn)行,這樣采訪對(duì)象才不會(huì)被打擾。工作會(huì)有一個(gè)負(fù)責(zé)人來(lái)保持會(huì)議的進(jìn)程,一個(gè)記錄員來(lái)記錄會(huì)議的討論,投影儀和相應(yīng)的軟件是常用的工具。一般需要進(jìn)行多次會(huì)議后才能得到最終結(jié)果。
一般認(rèn)為需求工作會(huì)可以節(jié)省不少時(shí)間,因此是一個(gè)非常有用的工具,但是往往很難同時(shí)將所有的持重要信息的人聚集到一起。
一個(gè)常見(jiàn)的缺陷是一些持重要信息者在這樣的會(huì)議上不十分積極,因此他們的需求沒(méi)有獲得必要的重視。這樣得到的解決方案必然有限。此外需求工作會(huì)是一個(gè)很好的分析現(xiàn)有系統(tǒng)的工具,但用它來(lái)尋求解決方案就不是十分有用了。
將需求列成合同式的文件
最常見(jiàn)的紀(jì)錄需求分析的方式是將顧客需求列入一個(gè)合同式的表。對(duì)于一個(gè)復(fù)雜的系統(tǒng), 該文件可以長(zhǎng)達(dá)數(shù)百頁(yè)。現(xiàn)代的分析員不愿使用這樣的列表,因?yàn)樗鼈儽蛔C明相當(dāng)無(wú)用,但它們依然相當(dāng)常見(jiàn)。
優(yōu)點(diǎn):
提供一份需求的清單。
提供一份顧客和開(kāi)發(fā)者間的合同。
對(duì)一個(gè)大的系統(tǒng)來(lái)說(shuō)它提供了一份高級(jí)的描寫。
缺點(diǎn):
這些列表可以長(zhǎng)達(dá)上百頁(yè),實(shí)際上沒(méi)有人能夠完整地閱讀這樣的文件來(lái)獲得一個(gè)完整的系統(tǒng)理解。
列表中的需求一般都很抽象和缺乏關(guān)聯(lián)
顧客和開(kāi)發(fā)者對(duì)這個(gè)列表的理解往往完全不同。
這樣的合同式的列表給顧客一個(gè)錯(cuò)誤的安全感,好像他們的要求都已列入了。但是由于列表本身對(duì)細(xì)節(jié)問(wèn)題不能細(xì)述因此許多關(guān)鍵的細(xì)節(jié)問(wèn)題實(shí)際上并未列出和解決。這些問(wèn)題一直到后來(lái)軟件開(kāi)發(fā)時(shí)才被發(fā)現(xiàn)。那時(shí)開(kāi)發(fā)者一般要與顧客再次討論并試圖按他們的意愿和條件來(lái)解決。
這個(gè)列表對(duì)此后的系統(tǒng)設(shè)計(jì)不提供任何幫助,它們的結(jié)構(gòu)無(wú)法直接進(jìn)入新軟件。
原型(Prototype)
從1980年代中開(kāi)始,越來(lái)越多的人將作原型看作是解決需求分析困難的辦法。原型模擬最終軟件的屏幕顯示,這樣用戶可以看到最終軟件將是什么樣,而實(shí)際上在這些屏幕顯示的背后還一切都空著呢。這樣顧客可以在系統(tǒng)還沒(méi)有創(chuàng)建之前就做出設(shè)計(jì)決定。當(dāng)原型首次被使用的時(shí)候它們的效果被視為非常驚人。引入原型往往提高顧客與開(kāi)發(fā)者之間的信息交換。原型的屏幕顯示后來(lái)往往很少被改變,因此可以大大地降低費(fèi)用。
但此后十多年的實(shí)際應(yīng)用,證明雖然原型是一種有用的技術(shù),但它也有它的缺陷:
經(jīng)理人員在看到原型后,往往不理解為什么還要到一段時(shí)間后,最終設(shè)計(jì)才能完成。
設(shè)計(jì)師往往將拼湊在一起的原型碼用到后來(lái)真正的系統(tǒng)中,因?yàn)樗麄兣略谠俅尉幋a時(shí)“浪費(fèi)時(shí)間”。
原型幫助解決設(shè)計(jì)決定和用戶界面的設(shè)計(jì),但是它們并不提供任何關(guān)于需求的信息。
設(shè)計(jì)師和顧客有可能花費(fèi)太多的時(shí)間和精力來(lái)設(shè)計(jì)用戶界面,而忽視對(duì)作業(yè)過(guò)程的關(guān)心。
用例(Use Case)
參見(jiàn)用例
用例是一種記錄新系統(tǒng)或軟件更換時(shí)的需求的技術(shù)。每個(gè)用例包含一個(gè)系統(tǒng)在作業(yè)時(shí)與用戶或與其它系統(tǒng)之間交換信息的場(chǎng)景。一般用例避免使用術(shù)語(yǔ),而盡量使用顧客、用戶或他們的專家的語(yǔ)言。一般用例由軟件開(kāi)發(fā)者和顧客一起寫成。
在1990年代中用例很快地成為了記錄需求分析的最主要的方式。尤其在它的發(fā)源地,在面向?qū)ο蟮某绦蛟O(shè)計(jì)中它的普及性非常高。但用例不僅可以用在面向?qū)ο蟮某绦蛟O(shè)計(jì)系統(tǒng)中,實(shí)際上用例本身并非面向?qū)ο蟮摹?/p>
每個(gè)用例集中于描寫如何來(lái)完成一個(gè)作業(yè)目標(biāo)或任務(wù)。對(duì)傳統(tǒng)的軟件工程來(lái)說(shuō)每個(gè)用例描寫系統(tǒng)的一個(gè)特點(diǎn)。對(duì)大多數(shù)軟件項(xiàng)目來(lái)說(shuō)一個(gè)新的系統(tǒng)有多個(gè)(往往十幾個(gè))用例。不同的軟件項(xiàng)目的格式或項(xiàng)目的進(jìn)展都可能影響用例的細(xì)節(jié)性。
用例描述系統(tǒng)在運(yùn)行時(shí)與外部執(zhí)行者之間的信息交換。外部執(zhí)行者是任何系統(tǒng)外的、與系統(tǒng)交換信息的對(duì)象或人物。它們可以是用戶、用戶的角色或其它系統(tǒng)。
用例將系統(tǒng)當(dāng)作一個(gè)“黑匣子”,它從外部來(lái)看與系統(tǒng)之間的信息交換(包括系統(tǒng)的回答)。這樣它簡(jiǎn)化對(duì)系統(tǒng)的需求的描寫而且防止對(duì)系統(tǒng)的工作方式作任何過(guò)早的假設(shè)。
每個(gè)用例應(yīng)該匹配下述條件:
描寫完成作業(yè)目標(biāo)的作業(yè)任務(wù)
不包含任何編程碼
有一定的細(xì)致性
足夠短,一個(gè)程序員應(yīng)該可以在一個(gè)版本的工作中,獨(dú)立完成這個(gè)用例所描寫的作業(yè)過(guò)程。
在描寫功能需求時(shí)用例非常好用,但它們不適合描寫非功能需求。
確認(rèn)持關(guān)鍵信息者
從1990年代開(kāi)始確認(rèn)持關(guān)鍵信息者被確定為一個(gè)非常關(guān)鍵的過(guò)程。它同時(shí)也是需求分析的第一步。此前經(jīng)理人員往往被認(rèn)為是持關(guān)鍵信息者。許多系統(tǒng)是按照這些經(jīng)理人員的設(shè)想設(shè)計(jì)的,而實(shí)際的用戶很少或根本沒(méi)有對(duì)設(shè)計(jì)做任何貢獻(xiàn)。這樣的系統(tǒng)往往是大失敗。因此在1970年代和1980年代在軟件工程師中漸漸地持關(guān)鍵信息者的概念擴(kuò)展到主要用戶,后來(lái)還擴(kuò)展到次要用戶。在1990年代中工程師們更加從一個(gè)系統(tǒng)整體的觀念上來(lái)確定持關(guān)鍵信息者。他們漸漸認(rèn)識(shí)到不但在雇傭他們的顧客中有持關(guān)鍵信息者,其他持關(guān)鍵信息者包括:
與顧客橫向相連(或應(yīng)該橫向相連)的組織
顧客的后勤辦公室或類似的組織
高級(jí)經(jīng)理人員
成功地確認(rèn)持關(guān)鍵信息者是完整地完成需求分析的基礎(chǔ)。
參考文獻(xiàn)
參見(jiàn)
業(yè)務(wù)需求分析
功能需求
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
相關(guān)資料
- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開(kāi)'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}