## 軟件需求分析
## 任務
解決目標系統“做什么”問題
深入描述軟件的功能和性能
確定軟件涉及到的約束和軟件接口
定義軟件的其他有效需求

## 特點
一致性、完整性、限時性、有效性、可驗證性
## 需求分析的過程
### 問題識別
建立分析所需要的通信途徑
### 分析與綜合
從信息流和信息結構出發,逐步細化所有的軟件功能,找出聯系,接口特性和設計上的約束,分析他們是否滿足功能要求,是否合理
### 編制需求分析階段的文檔
軟件需求說明書
數據要求說明書
初步的用戶手冊
修改完善與確定軟件開發實施計劃
### 評審
系統定義的目標是否與用戶的要求一致
系統需求分析階段提供的文檔資料是否齊全
文檔中的所有描述是否完整,清晰,準確反映用戶的需求
與所有其他系統成分的重要接口是否都已經描述
## 軟件需求分析的方法
SA:面向數據流的結構化分析方法
JSD:面向數據結構的Jackson方法
DSSD;結構化數據系統開發方法
OOA:面向對象的分析方法
## 軟件需求分析的原則
分解、化簡和抽象
### 抽象
在開始建立分析模型前先理解問題
開發模型
記錄需求的起源和原因
使用需求視圖
給予需求優先級
刪除排除性
### 分解
縱向分解和橫向分解
## 數據流圖(DFD)
### 特性
抽象性,概括性,層次性
### 主要圖形元素

### 數據流與數據加工的關系

### 檢查和修改DFD的原則
只能有四種圖形元素
每個加工至少有一個輸入數據流和一個輸出數據流
數據流圖的主圖必須包括四種基本元素,缺一不可
需要增加編號
子圖要與主圖對應
每個元素必須有名字,不允許有控制流
### 數據流圖的作用
系統分析員可以用它自定向下分析系統信息流程
可在圖上畫出需要計算機處理的部分
根據數據存儲,進一步做數據分析,想數據庫設計過度
根據數據流方向,定出存取方式
對應一個處理過程,用相應的語言、判定表等工具表達處理方法
### DFD的優缺點
總體概念強,每一層強調“干什么,需要什么,給出什么”
可以反映數據的流向和處理過程
自定向下分析,容易急躁發現系統各部分的邏輯錯誤,容易改正
容易與計算機處理相對照
不直觀,需要概括、抽象、修正
沒有計算機,人工繪制太麻煩,工作量大
