的溝通將成為一個大問題,這意味著客戶在開發(fā)軟件之前必須先進(jìn)行形式化語言培訓(xùn),這是不現(xiàn)實的)。自然語言對需求分析最大的弊病就是它的二義性。所以我們不得不對需求分析中采用的語言做某些限制。例如盡量采用主語+動作的簡單表達(dá)方式。說白了,需求分析中的描述讓人看上去像是剛學(xué)習(xí)寫作的小孩子就對了,千萬不要采用疑問句、修飾這些華麗的表達(dá)方式。
除了語言的二義性之外,主意不要使用行話,就是計算機術(shù)語。需求分析最重要的是和用戶溝通,可是用戶多半不是計算機的專業(yè)人士,如果在需求分析中使用了行話,就會造成用戶理解上的困難。
打個比方,如果你要做一個銀行的信用卡系統(tǒng),你就可以這樣描述軟件需求:銀行的卡部管理信用卡,每張信用卡只屬于一個帳戶。信用卡有卡號、余額。一張信用卡有多筆的交易記錄。
完整:再也沒有什么比軟件開發(fā)接近完成是發(fā)現(xiàn)遺漏了一項需求更糟的事情了。需求的完整性是非常非常重要的,想象一下遺漏需求而不得不返工,這簡直就是惡夢??墒橇钊诉z憾的是,需求的遺漏是很經(jīng)常發(fā)生的事情,不僅僅是你的問題,更多的問題發(fā)生在用戶那里,他們不知道該做些什么。要做到需求的完整性是很艱難的一件事情,它涉及到需求分析過程的各方各面,貫穿了整個過程,從最初的計劃制定到最后的需求評審。至于完整性的詳細(xì)討論,我們會在下面的章節(jié)中討論,現(xiàn)在你只需要拼命的想象缺乏完整性的壞處,直到你出了一身的冷汗。出了嗎?好,那我們繼續(xù)。
一致:一致性也是一個比較大的概念,很難用幾句話講清楚。還記得我們在開始的時候提到的需求的層次嗎?簡單的來說,就是用戶需求必須和業(yè)務(wù)需求一致,功能需求必須和用戶需求一致。嚴(yán)格的遵守不同層次間的一致性關(guān)系,就可以保證最后開發(fā)出來的軟件系統(tǒng)不會偏離最初的實現(xiàn)目標(biāo)。在實現(xiàn)過程中,我們還必須把一致性關(guān)系細(xì)化。比如說用戶需求不能超出先前指定的范圍。
可測試:大家覺得一個項目的測試從什么時候開始呢?有人說從編碼完成后開始。更清楚一點的說是編碼的時候同時進(jìn)行單元測試,編碼完成后進(jìn)行系統(tǒng)測試。這些都沒有錯。但是實際上測試是從需求分析過程就開始了。需求分析是測試計劃的輸入和參照。這就要求需求分析是可測試的。什么是可測試呢?“我們要用新的系統(tǒng)完成報表自動化處理”,你覺得這個需求是可測試的嗎?當(dāng)然不是,報表包括哪些?自動化處理的標(biāo)準(zhǔn)是什么?這些在需求中都沒有說明。因此這項需求是無法測試的,就是不具有可測試性。說到這里,大家可能就會明白之前的需求的幾項標(biāo)準(zhǔn)都是為了保證需求的可測試性的。事實就是這樣,只有系統(tǒng)的所有需求是可以被測試的,才能夠保證軟件始終圍繞著用戶的需要,保證軟件系統(tǒng)是成功的。
五、軟件需求過程
軟件需求工程主要包括兩個方面:需求開發(fā)和需求管理。
需求開發(fā)可進(jìn)一步分為:需求獲取、需求分析、編寫需求規(guī)格和需求驗證四個階段。各階段說明如下:
需求獲取階段:
這一階段的核心任務(wù)就是確定三個層次的需求,對于業(yè)務(wù)層要強調(diào)明確業(yè)務(wù)總目標(biāo)及使用范圍,對于用戶層,要強調(diào)明晰用戶工作流程,對于功能層還要收集系統(tǒng)運行環(huán)境的限制等非功能性需求。不同的時間、不同的用戶會由于不同的業(yè)務(wù)目標(biāo)及使用范圍而提出不盡相同的需求,同時由于沒有約定提出方式也會有各不相同的表現(xiàn)形式。針對上述問題,首先要確定用戶代表并對其在需求中的主次地位于以劃分;其次要確定需求的整個開發(fā)過程,最后還要明確不同層次的需求要以約定的形式出具文檔,以備雙方的交流及問題檢查。
需求分析階段:
這一階段的核心任務(wù)就是確定并完善需求。初期階段所獲得的大量需求往往是不系統(tǒng)、不完整甚至個別需求是錯誤的、不必要的,只有通過提煉、分析和仔細(xì)審查需求
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html