需求分析
软件需求指用户对所开发的软件在功能、性能、环境、可靠性等各方面的要求。
需求分析的任务
- 确定对系统的综合要求
- 分析系统的数据要求
- 导出系统的逻辑模型
- 修正系统开发计划
确定对系统的综合要求
- 功能需求
- 性能需求
- 可靠性和可用性需求,定量
- 出错处理需求
- 接口需求
- 约束 如精度、工具、语言、设计、标准、硬件平台
- 逆向需求:系统不应该怎么样
- 未来可能的要求
分析系统的数据要求
ER图
三大范式
- 第一范式是指每个属性值都是原子性的,不可再分
- 非码属性必须完全依赖于全部的主码属性 消除部分函数依赖
- 一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述,即非主码属性不依赖于其他非主属性,消除传递以来
范式低,冗余大,范式高,分解得细,冗余小,但处理过程复杂。
参考文章:数据库设计的三大范式怎么通俗理解?
导出系统的逻辑模型
工具:
- 数据流图
- 实体联系图
- 状态转换图
- 数据字典
- 主要的处理算法
状态转换图(STD)
状态转换图是一种常用的动态分析方法。是描述系统的状态如何响应外部信号,而进行转换的一种图形表示。
状态
指任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
- 初态,只有一个 实心圆表示
- 中间态 圆角矩阵
- 终态 可多个 同心圆(内圆为实心)
事件
某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事情的抽象。
例图
IPO图
验证软件需求
- 一致性,需求间不能存在冲突
- 自然语言书写的只能人工验证
- 形式化语言定义的可以借助工具完成
- 完整性:需求是完整的,需要用户参与合作,可以借助快速原型方法完成
- 现实性:参考类似系统,分析现有条件实现的可能性,必要时可借助仿真模拟等技术
- 有效性:需要合作
与用户沟通方式
- 访谈
- 面向数据流自顶向下求精
- 详细的数据流图
- 数据字典
- ER图
- IPO图
- 简易的应用规格说明技术 (实现用户看得见的功能,省略目标系统“隐含”功能)
- 快速建立软件原型