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