談?wù)勑枨螅ㄉ希?/h2>

談?wù)勑枨螅ㄉ希?br>

楔子

? ? ? ? 標(biāo)題叫《談?wù)勑枨蟆菲鋵?shí)不確切,因?yàn)樾枨笾皇且粋€(gè)名詞,但是很明顯我這所指并不是要闡述“需求”這個(gè)概念,而是指需求分析這個(gè)階段性動(dòng)作。但是后續(xù)可能還會(huì)寫(xiě)談?wù)勗O(shè)計(jì)、談?wù)?a target="_blank" rel="nofollow">測(cè)試、談?wù)剬?xiě)代碼之類(lèi)的文章,做成一個(gè)系列,為了標(biāo)題對(duì)仗,也就把動(dòng)詞省略了。

? ? ? ? 何謂需求,往小了說(shuō),就是用戶(hù)想要實(shí)現(xiàn)的一個(gè)IT系統(tǒng)功能;往大了說(shuō),其實(shí)也是人類(lèi)求生欲望的延續(xù),就類(lèi)比克勞.塞維茨說(shuō)的——戰(zhàn)爭(zhēng)不過(guò)是政治的延續(xù)。當(dāng)然,這里的求生在人類(lèi)科技文明高度發(fā)展的今天,不僅僅是求生存,而是求生活——渴求更好的生活。這種生活不僅僅是滿(mǎn)足人的物質(zhì)生活,更是為了滿(mǎn)足人的精神生活,以求精神富足。

? ? ? ? 將IT技術(shù)拿出來(lái)看,其實(shí)不過(guò)是人類(lèi)更高效工作、更方便生活的工具與手段,用戶(hù)需求,本質(zhì)上不過(guò)是人們高效工作或更好生活的欲望的可實(shí)現(xiàn)性延續(xù),是為了滿(mǎn)足人的信息生活而存在。這里所謂“可實(shí)現(xiàn)性延續(xù)”,一不小心又說(shuō)成了一個(gè)IT術(shù)語(yǔ),即是可以在軟件系統(tǒng)中實(shí)現(xiàn)的功能延續(xù)。

概念辨析

? ? ? ? 說(shuō)到“需求分析”,很容易讓人聯(lián)想到《需求分析報(bào)告》,但是我這所指并不僅僅是這一步,還包括《需求規(guī)格》。這兩份文檔是需求分析階段中用戶(hù)需求分析、功能需求規(guī)整這兩個(gè)前后相承的分析設(shè)計(jì)步驟的階段成果性交付文檔,而生產(chǎn)出這兩份文檔的這兩個(gè)步驟亦是整個(gè)需求分析階段的兩大關(guān)鍵步驟,這兩個(gè)步驟的質(zhì)量高低很大程度上決定了未來(lái)實(shí)現(xiàn)所的系統(tǒng)的功能穩(wěn)定程度、與用戶(hù)需求期望的匹配程度,也是軟件系統(tǒng)架構(gòu)是否穩(wěn)定的一大決定性的影響因素。

? ? ? ? 說(shuō)到《需求分析報(bào)告》、《需求規(guī)格說(shuō)明書(shū)》,很多人總以為這就是一份文檔,或者分不清這兩者的區(qū)別,其實(shí)很簡(jiǎn)單,各自加上兩個(gè)字就一目了然了——《用戶(hù)需求分析報(bào)告》、《功能需求規(guī)格說(shuō)明書(shū)》。

? ? ? ? 《需求分析報(bào)告》是需求分析師收集了用戶(hù)需求進(jìn)行系統(tǒng)分析后所形成的最終結(jié)論性文檔,而《需求規(guī)格說(shuō)明書(shū)》則是軟件設(shè)計(jì)師根據(jù)《分析報(bào)告》中所分析出的分散的功能需求,進(jìn)行系統(tǒng)級(jí)的統(tǒng)一規(guī)整的產(chǎn)物,也就是說(shuō)“需求分析”分析的是用戶(hù)需求,而“需求規(guī)格”規(guī)整的則是功能需求?!缎枨蠓治鰣?bào)告》是《需求規(guī)格說(shuō)明書(shū)》的輸入,《需求規(guī)格說(shuō)明書(shū)》是《需求分析報(bào)告》的最終輸出。兩者的描述內(nèi)容可能相近,但并不等價(jià),各有側(cè)重。用戶(hù)需求側(cè)重從用戶(hù)角度出發(fā)來(lái)描述一個(gè)需求,相對(duì)而言,比較抽象化、感性化;而功能需求側(cè)重從產(chǎn)品定位、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的高度來(lái)考慮一個(gè)需求(對(duì),是高度,不僅僅是角度),因此會(huì)更加系統(tǒng)化、理性化地來(lái)考慮需求的實(shí)現(xiàn),若能配上界面原型圖,就能更加具體、接地氣。

? ? ? ? 史蒂夫.喬布斯說(shuō)過(guò)“用戶(hù)永遠(yuǎn)不知道他們自己真正想要的是什么。”,此話(huà)同樣適用于軟件工程領(lǐng)域的需求分析工作,因?yàn)橛脩?hù)對(duì)IT知識(shí)的掌握程度有限,所以并不能苛求他們能用很專(zhuān)業(yè)的IT術(shù)語(yǔ)來(lái)將一個(gè)業(yè)務(wù)需求描述得很清楚。他們對(duì)需求的描述往往會(huì)更貼近于他們的具體領(lǐng)域業(yè)務(wù)背景,甚至?xí)A帶很多所在業(yè)務(wù)領(lǐng)域的專(zhuān)業(yè)術(shù)語(yǔ)。他們口中所說(shuō)的需求往往并不是真正的產(chǎn)品功能需求,而只是他們業(yè)務(wù)訴求的一個(gè)“外在化、形象化”的展現(xiàn)。用戶(hù)口中所說(shuō)要實(shí)現(xiàn)的“功能”也許并不是真正能滿(mǎn)足他業(yè)務(wù)需求的功能,只是由于他的IT知識(shí)所限,只能將描述成到這個(gè)專(zhuān)業(yè)深度。

? ? ? ? 所以需求分析工作一定要系統(tǒng)、客觀、冷靜。需求分析人員應(yīng)該盡可能地引導(dǎo)用戶(hù)將他們心中真實(shí)的隱性需求“吐”出來(lái)。為了達(dá)到此目的,需求分析人員甚至可能還需要對(duì)目標(biāo)用戶(hù)所在業(yè)務(wù)領(lǐng)域進(jìn)行一定深度的專(zhuān)業(yè)理論儲(chǔ)備,以便盡可能地熟悉用戶(hù)關(guān)注的業(yè)務(wù)場(chǎng)景,通過(guò)業(yè)務(wù)場(chǎng)景的熟識(shí),來(lái)了解用戶(hù)真正的業(yè)務(wù)訴求。

需求分析報(bào)告內(nèi)容組織

? ? ? ? 講了這么多引導(dǎo)性?xún)?nèi)容,本文總算可以進(jìn)入正題了,也就是《需求分析報(bào)告》具體要做哪些工作、內(nèi)容如何整理輸出。根據(jù)上文思考,需求分析報(bào)告必然以業(yè)務(wù)場(chǎng)景為單位進(jìn)行整理,當(dāng)業(yè)務(wù)場(chǎng)景數(shù)量開(kāi)始龐大時(shí),就需要將業(yè)務(wù)場(chǎng)景進(jìn)行分類(lèi),而分類(lèi)的標(biāo)準(zhǔn),根據(jù)筆者的經(jīng)驗(yàn),傾向于根據(jù)需求來(lái)源劃分(每處來(lái)源用一個(gè)一級(jí)標(biāo)題標(biāo)識(shí)),而不是根據(jù)預(yù)先設(shè)計(jì)的系統(tǒng)大功能模塊來(lái)劃分。這樣做的好處就是便于不同業(yè)務(wù)用戶(hù)進(jìn)行需求跟蹤確認(rèn)、以及最終的需求簽署確認(rèn)。業(yè)務(wù)用戶(hù)只需要關(guān)注自己那個(gè)一級(jí)標(biāo)題下需求的完整性與正確性即可,而不需要從全篇文檔來(lái)檢索過(guò)濾到只屬于自己的需求。

? ? ? ? 說(shuō)完了業(yè)務(wù)需求的整理規(guī)范,接下來(lái)該討論《需求分析報(bào)告》的核心部分——內(nèi)容組織了。需求分析報(bào)告一般都包括以下幾部分,也即是可以作為一級(jí)標(biāo)題的內(nèi)容:產(chǎn)品目標(biāo)與范圍、用戶(hù)需求(包括原始需求清單、用戶(hù)需求分析、安全性需求、質(zhì)量屬性需求)、約束條件、術(shù)語(yǔ)約定。

產(chǎn)品目標(biāo)與范圍

? ? ? ? 簡(jiǎn)短描述該軟件產(chǎn)品的開(kāi)發(fā)目的,包括功能利益和產(chǎn)品定位目標(biāo)等,把軟件產(chǎn)品開(kāi)發(fā)與企業(yè)目標(biāo)或者業(yè)務(wù)策略相聯(lián)系,一般包括產(chǎn)品目標(biāo)描述與業(yè)務(wù)范圍界定兩部分。前者需要明確此項(xiàng)目的業(yè)務(wù)期望目標(biāo)、產(chǎn)品定位;后者需要能明確此系統(tǒng)的用戶(hù)范圍、功能范圍、甚至地域范圍。

業(yè)務(wù)功能性需求

? ? ? ? 用戶(hù)需求部分是此文檔的核心部分,首先包括一個(gè)用于統(tǒng)計(jì)跟蹤原始需求用的用戶(hù)需求清單,該清單維護(hù)的目的即是方便業(yè)務(wù)方跟蹤總攬所有原始需求,一般以表格形式記錄,包括業(yè)務(wù)需求編號(hào)、需求來(lái)源、原始需求簡(jiǎn)短描述等內(nèi)容。

? ? ? ? 對(duì)業(yè)務(wù)需求有了總體記錄后,接下來(lái)便是詳細(xì)的業(yè)務(wù)需求分析了,這也是需求分析報(bào)告交付質(zhì)量高低的核心內(nèi)容。此部分內(nèi)容中,需要對(duì)每個(gè)業(yè)務(wù)需求進(jìn)行細(xì)致系統(tǒng)分析,因此一般以表格形式表述為好。每個(gè)業(yè)務(wù)需求對(duì)應(yīng)一個(gè)小表格,主要包括以下幾個(gè)部分內(nèi)容,每行描述一條:需求編號(hào)、業(yè)務(wù)需求描述、業(yè)務(wù)處理流程、用戶(hù)范圍、前置條件、業(yè)務(wù)規(guī)則、關(guān)鍵功能需求點(diǎn)、需求提出人。最好是以表格形式來(lái)描述。

需求編號(hào):這是用來(lái)檢索所有業(yè)務(wù)需求用的,一般是如下格式:R.BussinessDomain2.008,R是《需求分析文檔》字母簡(jiǎn)寫(xiě)、BussinessDomain2用于標(biāo)記來(lái)源,008則是需求順序編號(hào)。如果對(duì)word文檔操作很熟練,此處編號(hào)建議自定義一個(gè)自增式編號(hào)格式,這樣方便后續(xù)插入業(yè)務(wù)需求時(shí)文檔自動(dòng)編號(hào)。

業(yè)務(wù)需求描述:以文字形式來(lái)記錄業(yè)務(wù)提出的原始需求語(yǔ)言,盡可能細(xì)致明確但不羅嗦,多用短句對(duì)業(yè)務(wù)點(diǎn)進(jìn)行明晰表述。

業(yè)務(wù)處理流程:在業(yè)務(wù)需求描述基礎(chǔ)上,對(duì)業(yè)務(wù)期望的處理流程進(jìn)行描繪,盡量抽取出重要流程節(jié)點(diǎn),建議用類(lèi)似流程圖的格式描述。

用戶(hù)范圍:在需求分析階段,參與者不需要馬上分別出系統(tǒng)角色,可以按照實(shí)際業(yè)務(wù)角色來(lái)記錄即可。

前置條件:描述執(zhí)行此業(yè)務(wù)功能的前提條件,有可能由此產(chǎn)生與其他系統(tǒng)集成的接口需求。

業(yè)務(wù)規(guī)則:用于描述執(zhí)行此業(yè)務(wù)功能的業(yè)務(wù)約束性條件,包括邏輯判定、數(shù)據(jù)邊界值等,例如,一個(gè)數(shù)據(jù)輸入,數(shù)據(jù)最大、最小值是多少。。

主要功能需求點(diǎn):此處是業(yè)務(wù)需求分析的主要交付成果,需求分析人員根據(jù)上面的“業(yè)務(wù)需求描述”內(nèi)容,并參考“業(yè)務(wù)處理流程”,初步抽取出核心功能需求點(diǎn),此處需求點(diǎn)盡量以列表展示,句式簡(jiǎn)潔扼要但必須語(yǔ)意清晰,盡可能挖潛出用戶(hù)尚未表達(dá)出的真實(shí)需求。對(duì)于需要集成業(yè)務(wù)需求的軟件系統(tǒng),此處可能會(huì)產(chǎn)生與外部軟件集成的接口需求,此接口需求將對(duì)應(yīng)《需求規(guī)格》中的外部系統(tǒng)集成需求部分內(nèi)容。

需求提出人:此處記錄此業(yè)務(wù)需求的提出人,也是業(yè)務(wù)需求確認(rèn)人,若后續(xù)需求蔓延,或者因開(kāi)發(fā)技術(shù)性原因?qū)е滦枨鬅o(wú)法全部實(shí)現(xiàn),均跟此人溝通確認(rèn)。

非功能性需求

非功能性需求包括可用性需求、可靠性需求、可擴(kuò)展性需求、性能需求、安全需求等內(nèi)容。某些文檔中還包括硬件需求等。

這些內(nèi)容大多跟具體業(yè)務(wù)相關(guān),本系列文章著重軟件系統(tǒng)設(shè)計(jì),在此就不過(guò)多細(xì)述了。

費(fèi)了這么多口舌,堪堪寫(xiě)完需求分析,需求規(guī)整還沒(méi)開(kāi)始,那就未完待續(xù)咯。不過(guò)行家應(yīng)該知道的,《需求規(guī)格說(shuō)明書(shū)》核心就是Use

Case。

散論

? ? ? ? 用戶(hù)需求實(shí)現(xiàn)的最終目的并不在于為討部分用戶(hù)歡心而去花大力氣實(shí)現(xiàn)某個(gè)好看花哨但不實(shí)用的功能,而在于通過(guò)此系統(tǒng)更好的滿(mǎn)足絕大部分用戶(hù)的業(yè)務(wù)需要,提高其業(yè)務(wù)執(zhí)行效率。注意,我這講的是“此系統(tǒng)”而不是“此功能”,因?yàn)楣δ苡肋h(yuǎn)是局部的,而系統(tǒng)則是整體的。局部功能強(qiáng)大所致的局部工作效率提升并不一定就能代表整個(gè)事務(wù)效率的提升。只有開(kāi)發(fā)系統(tǒng)的幫助事務(wù)在各個(gè)重要節(jié)點(diǎn)都得到普遍效率提升,才算是真正地滿(mǎn)足了用戶(hù)需求,達(dá)到了業(yè)務(wù)期望。

? ? ? ? 一個(gè)一直堅(jiān)持的觀點(diǎn):其實(shí),軟件工程文檔的模板并不僅僅是模板,而且并非各自獨(dú)立的文檔,而是一整套相互聯(lián)系的設(shè)計(jì)說(shuō)明書(shū),是系統(tǒng)開(kāi)發(fā)思路的節(jié)奏性體現(xiàn),就像剝洋蔥,層層剝開(kāi),循序漸進(jìn),每一個(gè)步驟都馬虎不得,這類(lèi)設(shè)計(jì)文檔寫(xiě)到一定程度,設(shè)計(jì)人員就能根據(jù)當(dāng)前階段文檔撰寫(xiě)的流暢程度去判斷前一階段文檔交付質(zhì)量的好壞。因此,可以這么說(shuō),這一套文檔模板水平的高度就直接決定了軟件設(shè)計(jì)水平的高低。

? ? ? ? 寫(xiě)這些文章的用意,其實(shí)很簡(jiǎn)單,軟件設(shè)計(jì)之路漫漫兮,望乞高人指點(diǎn)一二,望與同仁切磋切磋,以不至于把路走偏走絕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容