軟體需求分析

軟體需求分析

軟體需求分析就是把軟體計劃期間建立的軟體可行性分析求精和細化,分析各種可能的解法,並且分配給各個軟體元素。需求分析是軟體定義階段中的最後一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。

任務


確定對系統的綜合要求。分析系統的數據要求,導出系統的邏輯模型,修正系統的開發計劃。

簡介

深入描述軟體的功能和性能,確定軟體設計的約束和軟體同其他系統元素的介面細節,定義軟體的其他有效性需求,藉助於當前系統的邏輯模型導出目標系統邏輯模型,解決目標系統“做什麼”的問題。
需求分析可分為需求提出、需求描述及需求評審三個階段。

需求提出

主要集中於描述系統目的。需求提出和分析僅僅集中在使用者對系統的觀點上。開發人員和用戶確定一個問題領域,並定義一個描述該問題的系統。這樣的定義稱作系統規格說明,並且它在用戶和開發人員之間充當合同。

需求描述

在問題分析階段分析人員的主要任務是:對用戶的需求進行鑒別、綜合和建模,清除用戶需求的模糊性、歧義性和不一致性,分析系統的數據要求,為原始問題及目標軟體建立邏輯模型。分析人員要將對原始問題的理解與軟體開發經驗結合起來,以便發現哪些要求是由於用戶的片面性或短期行為所導致的不合理要求,哪些是用戶尚未提出但具有真正價值的潛在需求。

需求評審

在需求評審階段,分析人員要在用戶和軟體設計人員的配合下對自己生成的需求規格說明和初步的用戶手冊進行複核,以確保軟體需求的完整、準確、清晰、具體,並使用戶和軟體設計人員對需求規格說明和初步的用戶手冊的理解達成一致。一旦發現遺漏或模糊點,必須儘快更正,再行檢查。

過程


軟體需求分析所要做的工作是深入描述軟體的功能和性能,確定軟體設計的限制和軟體同其它系統元素的介面細節,定義軟體的其它有效性需求。
進行需求分析時,應注意一切信息與需求都是站在用戶的角度上。盡量避免分析員的主觀想象,並盡量將分析進度提交給用戶。在不進行直接指導的前提下,讓用戶進行檢查與評價。從而達到需求分析的準確性。
分析員通過需求分析,逐步細化對軟體的要求,描述軟體要處理的數據域,並給軟體開發提供一種可轉化為數據設計、結構設計和過程設計的數據和功能表示。在軟體完成後,制定的軟體規格說明還要為評價軟體質量提供依據。

作用


開發軟體系統最為困難的部分就是要準確說明開發什麼。最為困難的概念性工作便是要編寫出詳細的技術需求,這包括所有面向用戶、面向機器和其它軟體系統的介面。如果做錯,這將是會最終給系統帶來極大損害的一部分,並且以後再對它進行修改也極為困難。目前,國內產品的龐雜,一家企業可能有幾個系統並立運行,它們之間的介面是系統開發人員最頭痛的問題。對於商業最終用戶應用程序,企業信息系統和軟體作為一個大系統的一部分的產品是顯而易見的。但是對於我們開發人員來說,並沒有編寫出客戶認可的需求文檔,我們如何知道項目於何時結束?而如果我們不知道什麼對客戶來說是重要的,那我們又如何能使客戶感到滿意呢?
然而,即便並非出於商業目的的軟體需求也是必須的。例如庫、組件和工具這些供開發小組內部使用的軟體。當然你可能偶爾勿需文檔說明就能與其他人意見較為一致,但更常見的是出現重複返工這種不可避免的後果,而重新編製代碼的代價遠遠超過重寫一份需求文檔的代價,這些血的教訓正在國內的軟體開發者身上發生。

需求類型


下面這些定義是需求工程領域中常見術語的定義。
軟體需求包括三個不同的層次:業務需求、用戶需求和功能需求(也包括非功能需求)。
1.業務需求(business requirement)反映了組織機構或客戶對系統、產品高層次的目標要求,它們
在項目視圖與範圍文檔中予以說明。
2.用戶需求(user requirement) 文檔描述了用戶使用產品必須要完成的任務,這在使用實例(use
case)文檔或方案腳本說明中予以說明。
3.功能需求(functional requirement)定義了開發人員必須實現的軟體功能,使得用戶能完成他們的
任務,從而滿足了業務需求。
在軟體需求規格說明書(SRS)中說明的功能需求充分描述了軟體系統所應具有的外部行為。軟體
需求規格說明在開發、測試、質量保證、項目管理以及相關項目功能中都起了重要的作用。對一個大
型系統來說,軟體功能需求也許只是系統需求的一個子集,因為另外一些可能屬於子系統(或軟體部
件)。
作為功能需求的補充,軟體需求規格說明還應包括非功能需求,它描述了系統展現給用戶的行為和
執行的操作等。它包括產品必須遵從的標準、規範和合約;外部界面的具體細節;性能要求;設計或
實現的約束條件及質量屬性。所謂約束是指對開發人員在軟體產品設計和構造上的限制。質量屬性是
通過多種角度對產品的特點進行描述,從而反映產品功能。多角度描述產品對用戶和開發人員都極為
重要。
下面以一個子處理程序為例來說明需求的不同種類。業務需求可能是:“用戶能有效地糾正文檔中
的拼寫錯誤”,該產品的包裝盒封面上可能會標明這是個滿足業務需求的拼寫檢查器。而對應的用戶
需求可能是“找出文檔中的拼寫錯誤並通過一個提供的替換項列表來供選擇替換拼錯的詞”。同時,該
拼寫檢查器還有許多功能需求,如找到並高亮度提示錯詞的操作;顯示提供替換詞的對話框以及實現
整個文檔範圍的替換。
從以上定義可以發現,需求並未包括設計細節、實現細節、項目計劃信息或測試信息。需求與這些
沒有關係,它關注的是充分說明你究竟想開發什麼。項目也有其它方面的需求,如開發環境需求或發
布產品及移植到支撐環境的需求。儘管這些需求對項目成功也至關重要,但它們並非本書所要討論的。

文檔編製


軟體需求說明書的編製是為了使用戶和軟體開發者雙方對該軟體的初始規定有一個共同的理解,使之成為整個開發工作的基礎。編製軟體需求說明書的內容要求如下:
1 引言
1.1編寫目的
說明編寫這份軟體需求說明書的目的,指出預期的讀者。
1.2背景
說明:
a.待開發的軟體系統的名稱;
b.本項目的任務提出者、開發者、用戶及實現該軟體的計算中心或計算機網路;
C.該軟體系統同其他系統或其他機構的基本的相互來往關係。
1.3定義
列出本文件中用到的專門術語的定義和外文首字母組詞的原片語。
1.4參考資料
列出用得著的參考資料,如:
a.本項目的經核准的計劃任務書或合同、上級機關的批文;
b.屬於本項目的其他已發表的文件;
c.本文件中各處引用的文件、資料、包括所要用到的軟體開發標準。列出這些文件資料的標題、文件編號、發表日期和出版單位,說明能夠得到這些文件資料的來源。
2 任務概述
2.1目標
敘述該項軟體開發的意圖、應用目標、作用範圍以及其他應向讀者說明的有關該軟體開發的背景材料。解釋被開發軟體與其他有關軟體之間的關係。如果本軟體產品是一項獨立的軟體,而且全部內容自含,則說明這一點。如果所定義的產品是一個更大的系統的一個組成部分,則應說明本產品與該系統中其他各組成部分之間的關係,為此可使用一張方框圖來說明該系統的組成和本產品同其他各部分的聯繫和介面。
2.2用戶的特點
列出本軟體的最終用戶的特點,充分說明操作人員、維護人員的教育水平和技術專長,以及本軟體的預期使用頻度。這些是軟體設計工作的重要約束
2.3假定和約束
列出進行本軟體開發工作的假定和約束,例如經費限制、開發期限等。
3 需求規定
3.1對功能的規定
用列表的方式(例如IPO表即輸入、處理、輸出表的形式),逐項定量和定性地敘述對軟體所提出的功能要求,說明輸入什麼量、經怎樣的處理、得到什麼輸出,說明軟體應支持的終端數和應支持的并行操作的用戶數。
3.2對性能的規定
3.2.1精度
說明對該軟體的輸入、輸出數據精度的要求,可能包括傳輸過程中的精度。
3.2.2時間特性要求
說明對於該軟體的時間特性要求,如對:
a.響應時間;
b.更新處理時間;
c.數據的轉換和傳送時間;
d.解題時間;等的要求。
3.2.3靈活性
說明對該軟體的靈活性的要求,即當需求發生某些變化時,該軟體對這些變化的適應能力,如:
a.操作方式上的變化;
b.運行環境的變化;
c.同其他軟體的介面的變化;
d.精度和有效時限的變化;
e.計劃的變化或改進。
對於為了提供這些靈活性而進行的專門設計的部分應該加以標明。
3.3輸入輸出要求
解釋各輸入輸出數據類型,並逐項說明其媒體、格式、數值範圍、精度等。對軟體的數據輸出及必須標明的控制輸出量進行解釋並舉例,包括對硬拷貝報告(正常結果輸出、狀態輸出及異常輸出)以及圖形或顯示報告的描述。
3.4數據管理能力要求
說明需要管理的文卷和記錄的個數、表和文卷的大小規模,要按可預見的增長對數據及其分量的存儲要求作出估算。
3.5故障處理要求
列出可能的軟體、硬體故障以及對各項性能而言所產生的後果和對故障處理的要求。
3.6其他專門要求
如用戶單位對安全保密的要求,對使用方便的要求,對可維護性、可補充性、易讀性、可靠性、運行環境可轉換性的特殊要求等。
4 運行環境規定
4.1設備
列出運行該軟體所需要的硬設備。說明其中的新型設備及其專門功能,包括:
a.處理器型號及內存容量;
b.外存容量、聯機或離線、媒體及其存儲格式,設備的型號及數量;
c.輸入及輸出設備的型號和數量,聯機或離線;
d.數據通信設備的型號和數量;
e.功能鍵及其他專用硬體
4.2支持軟體
列出支持軟體,包括要用到的操作系統、編譯(或彙編)程序、測試支持軟體等。
4.3 介面
說明該軟體同其他軟體之間的介面、數據通信協議等。
4.4控制
說明控制該軟體的運行的方法和控制信號,並說明這些控制信號的來源。