## 软件需求分析
## 任务
解决目标系统“做什么”问题
深入描述软件的功能和性能
确定软件涉及到的约束和软件接口
定义软件的其他有效需求
![](https://box.kancloud.cn/2016-04-28_572182a32794e.jpg)
## 特点
一致性、完整性、限时性、有效性、可验证性
## 需求分析的过程
### 问题识别
建立分析所需要的通信途径
### 分析与综合
从信息流和信息结构出发,逐步细化所有的软件功能,找出联系,接口特性和设计上的约束,分析他们是否满足功能要求,是否合理
### 编制需求分析阶段的文档
软件需求说明书
数据要求说明书
初步的用户手册
修改完善与确定软件开发实施计划
### 评审
系统定义的目标是否与用户的要求一致
系统需求分析阶段提供的文档资料是否齐全
文档中的所有描述是否完整,清晰,准确反映用户的需求
与所有其他系统成分的重要接口是否都已经描述
## 软件需求分析的方法
SA:面向数据流的结构化分析方法
JSD:面向数据结构的Jackson方法
DSSD;结构化数据系统开发方法
OOA:面向对象的分析方法
## 软件需求分析的原则
分解、化简和抽象
### 抽象
在开始建立分析模型前先理解问题
开发模型
记录需求的起源和原因
使用需求视图
给予需求优先级
删除排除性
### 分解
纵向分解和横向分解
## 数据流图(DFD)
### 特性
抽象性,概括性,层次性
### 主要图形元素
![](https://box.kancloud.cn/2016-04-28_572182a34291a.jpg)
### 数据流与数据加工的关系
![](https://box.kancloud.cn/2016-04-28_572182a374af9.jpg)
### 检查和修改DFD的原则
只能有四种图形元素
每个加工至少有一个输入数据流和一个输出数据流
数据流图的主图必须包括四种基本元素,缺一不可
需要增加编号
子图要与主图对应
每个元素必须有名字,不允许有控制流
### 数据流图的作用
系统分析员可以用它自定向下分析系统信息流程
可在图上画出需要计算机处理的部分
根据数据存储,进一步做数据分析,想数据库设计过度
根据数据流方向,定出存取方式
对应一个处理过程,用相应的语言、判定表等工具表达处理方法
### DFD的优缺点
总体概念强,每一层强调“干什么,需要什么,给出什么”
可以反映数据的流向和处理过程
自定向下分析,容易急躁发现系统各部分的逻辑错误,容易改正
容易与计算机处理相对照
不直观,需要概括、抽象、修正
没有计算机,人工绘制太麻烦,工作量大
![](https://box.kancloud.cn/2016-04-28_572182a393b1b.jpg)