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