1 確定對系統的綜合要求
雖然功能需求是對軟件系統的一項基本需求,但卻并不是唯一的需求。通常對軟件系統有下述幾方面的綜合要求。
1.功能需求
這方面的需求指定系統必須提供的服務。通過需求分析應該劃分出系統必須完成的所有功能。
2.性能需求
性能需求指定系統必須滿足的定時約束或容量約束,通常包括速度(響應時間)、信息量速率、主存容量、磁盤容量、安全性等方面的需求。例如,“應力分析程序必須在一分鐘之內生成任何一個梁的應力報告。”就是一項性能需求。
3.可靠性和可用性需求
可靠性需求定量地指定系統的可靠性,例如,“機場雷達系統在一個月內不能出現2次以上故障。”
可用性與可靠性密切相關,它量化了用戶可以使用系統的程度。例如,“在任何時候主機或備份機上的機場雷達系統應該至少有一個是可用的,而且在一個月內在任何一臺計算機上該系統不可用的時間不能超過總時間的2%。”
4.出錯處理需求
? ? ? ?這類需求說明系統對環境錯誤應該怎樣響應。例如,如果它接收到從另一個系統發來的違反協議格式的消息,應該做什么?注意,上述這類錯誤并不是由該應用系統本身造成的。
? ? ? ?在某些情況下,“出錯處理”指的是當應用系統發現它自己犯下一個錯誤時所采取的行動。但是,應該有選擇地提出這類出錯處理需求。人們的目的是開發出正確的系統,而不是用無休止的出錯處理代碼掩蓋自己的錯誤。總之,對應用系統本身錯誤的檢測應該僅限于系統的關鍵部分,而且應該盡可能少。
5.接口需求
? ? ? ?接口需求描述應用系統與它的環境通信的格式。常見的接口需求有:用戶接口需求;硬件接口需求;軟件接口需求;通信接口需求。例如:
? ? ? ?“把商品從貨源地運送到目的地所需要的成本,應該一直顯示在“成本'正文框中。”
? ? ? ?“向運輸公司傳送*需運送的商品'信息的格式是exp<string>,其中<string>是從商品目錄中選取的字符串。”
? ? ? ?上述第一個例子是應用系統與用戶接口的一個需求,第二個例子指定了與其他應用系統通信的信息格式。兩者都是接口需求。
6.約束
? ? ? ?設計約束或實現約束描述在設計或實現應用系統時應遵守的限制條件。在需求分析階段提出這類需求,并不是要取代設計(或實現)過程,只是說明用戶或環境強加給項目的限制條件。常見的約束有:精度;工具和語言約束;設計約束;應該使用的標準;應該使用的硬件平臺。
7.逆向需求
? ? ? 逆向需求說明軟件截圖( A l t + A )該做什么。理論上有無限多個逆向需求,人們應該僅選取能澄清真實需求且可消除可能發生的誤解的那些逆向需求。例如,“應力分析程序無須分析橋梁倒塌數據。”
8.將來可能提出的要求
應該明確地列出那些雖然不屬于當前系統開發范疇,但是據分析將來很可能會提出來的要求。這樣做的目的是,在設計過程中對系統將來可能的擴充和修改預做準備,以便一旦確實需要時能比較容易地進行這種擴充和修改。
2 分析系統的數據要求
? ? ? ?任何一個軟件系統本質上都是信息處理系統,系統必須處理的信息和系統應該產生的信息在很大程度上決定了系統的面貌,對軟件設計有深遠影響,因此,必須分析系統的數據要求,這是軟件需求分析的一個重要任務。分析系統的數據要求通常采用建立數據模型的方法。
? ? ? ?復雜的數據由許多基本的數據元素組成,數據結構表示數據元素之間的邏輯關系。利用數據字典可以全面準確地定義數據,但是數據字典的缺點是不夠形象直觀。為了提高可理解性,常常利用圖形工具輔助描繪數據結構。常用的圖形工具有層次方框圖和Warnier圖。
? ? ? ?軟件系統經常使用各種長期保存的信息,這些信息通常以一定方式組織并存儲在數據庫或文件中,為減少數據冗余,避免出現插入異常或刪除異常,簡化修改數據的過程,通常需要把數據結構規范化。
3 導出系統的邏輯模型
? ? ? ?綜合上述兩項分析的結果可以導出系統的詳細的邏輯模型,通常用數據流圖、實體-聯系圖、狀態轉換圖、數據字典和主要的處理算法描述這個邏輯模型。
4 修正系統開發計劃
? ? ? ?根據在分析過程中獲得的對系統的更深入更具體的了解,可以比較準確地估計系統的成本和進度,修正以前制定的開發計劃。