需求分析

软件需求指用户对所开发的软件在功能、性能、环境、可靠性等各方面的要求。

需求分析的任务

  1. 确定对系统的综合要求
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正系统开发计划

确定对系统的综合要求

  1. 功能需求
  2. 性能需求
  3. 可靠性和可用性需求,定量
  4. 出错处理需求
  5. 接口需求
  6. 约束 如精度、工具、语言、设计、标准、硬件平台
  7. 逆向需求:系统不应该怎么样
  8. 未来可能的要求

分析系统的数据要求

ER图

三大范式
  1. 第一范式是指每个属性值都是原子性的,不可再分
  2. 非码属性必须完全依赖于全部的主码属性 消除部分函数依赖
  3. 一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述,即非主码属性不依赖于其他非主属性,消除传递以来

范式低,冗余大,范式高,分解得细,冗余小,但处理过程复杂。

参考文章:数据库设计的三大范式怎么通俗理解?

导出系统的逻辑模型

工具:

  1. 数据流图
  2. 实体联系图
  3. 状态转换图
  4. 数据字典
  5. 主要的处理算法

状态转换图(STD)

状态转换图是一种常用的动态分析方法。是描述系统的状态如何响应外部信号,而进行转换的一种图形表示。

状态

指任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。

  1. 初态,只有一个 实心圆表示
  2. 中间态 圆角矩阵
  3. 终态 可多个 同心圆(内圆为实心)
事件

某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事情的抽象。

例图

图书状态图

客房状态图

IPO图

验证软件需求

  1. 一致性,需求间不能存在冲突
    1. 自然语言书写的只能人工验证
    2. 形式化语言定义的可以借助工具完成
  2. 完整性:需求是完整的,需要用户参与合作,可以借助快速原型方法完成
  3. 现实性:参考类似系统,分析现有条件实现的可能性,必要时可借助仿真模拟等技术
  4. 有效性:需要合作

与用户沟通方式

  1. 访谈
  2. 面向数据流自顶向下求精
    • 详细的数据流图
    • 数据字典
    • ER图
    • IPO图
  3. 简易的应用规格说明技术 (实现用户看得见的功能,省略目标系统“隐含”功能)
  4. 快速建立软件原型

习题