需求分析是软件定义的最后一个阶段
基本任务:准确的回答“系统必须做什么”这个问题
解决了:确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
需求分析的任务
确定对系统的综合要求
- 1.功能需求
- 2.性能需求
- 3.可靠性和可用性需求
- 4.出错处理需求
- 5.接口需求
- 6.约束(精度,工具和语言约束等)
- 7.逆向需求(软件系统不应该做什么)
- 8.将来可能提出的需求
与用户沟通获取需求的方法
访谈
访谈分两种:正式访谈和非正式访谈。
需要大量人员的意见时,分发调查表是一个很有效的方法。
使用情景分析往往非常有效。
面向数据流自顶向下求精
软件系统本质上是信息处理系统,而任何信息处理系统的基本功能都是把数据转变成需要的输出信息。
结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性分析研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。
### 简易的规格说明
解决用户不能像同一个团队的人那样齐心协力识别和精化需求。
该方法倡导用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。

快速建立软件模型
快速原型的两个特征:
- 1.快速 尽快向用户提供一个可在计算机上运行的目标系统的模型
- 2.容易修改
为了快速构建和修改原型,通常用下述3种方法和工具。
- 1.第四代技术(众多数据库查询和报表语言、程序与应用系统生成器)
- 2.可重用的软件构件
- 3.形式化规格说明和原型环境
分析建模与规格说明
分析建模
结构化分析准则中,需求分析过程应建立三种模型:
- 1.数据模型(实体-联系图)
- 2.功能模型 (第2.4节)
- 3.行为模型 (状态转换图)
实体-联系图
数据模型
为了把用户的数据要求清楚、准确的描述出来,建立的一个概念性的数据模型(也称为信息模型)
概念性数据模型是一种面向问题的数据模型,按照用户观点对数据建立的模型。
他描述了从用户看到的数据。
数据模型包含三种相互关联的信息:
- 数据对象(车)
- 数据对象的属性(品牌,型号,车牌号)
- 数据对象彼此间相互连接的关系(1:1,1:N,M:N)

数据规范化
为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程。
使用范式定义消除冗余的程度。
第一范式数据冗余程度最大,第五范式冗余程度最小。
状态转换图
行为模型
通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
状态
在状态图中定义的状态主要有:初态、终态和中间状态。
一张图只能有一个初态,而终态有0至N个。
事件
对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象。
符号
表示如下:
- 初态:实心圆表示
- 终态:一堆同心圆表示
- 中间状态由圆角矩形表示,用两条线将矩形分割为三个部分。上为状态的名称(必须有),中为状态的变量的名字和值(可选),下为活动表(可选)。

验证软件需求
从哪些方面验证软件需求的正确性
- 1.一致性 (需求之间不能矛盾)
- 2.完整性 (需求必须完整)
- 3.现实性 (能实现)
- 4.有效性 (需求正确有效)