软件工程复习(三)

概述

需求分析是发现、求精、建模、规格说明和复审的过程。

  • 准则

    • 必须理解和表示问题的信息域,根据这条准则应该建立数据模型
    • 必须定义软件应完成的功能,这条准则要求建立功能模型
    • 必须表示作为外部事件结果的软件行为,这条准则要求建立行为模型
    • 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
    • 分析过程应该从要素信息移向实现细节
      • 业务 → 技术
      • 逻辑 → 物理
      • 要素 → 细节

需求分析的任务

  • 确定对系统的综合要求

    • 数据要求
    • 功能需求
    • 性能需求
    • 可靠性和可用性需求
    • 出错处理需求
    • 接口需求
    • 约束
    • 逆向需求(不应该做的)
    • 将来可能提出的要求
  • 分析系统的数据要求

    • 任何软件系统本质上都是信息处理系统
    • 建立数据模型(E-R图)
    • 数据字典
    • 层次方框图
    • Warnier图
  • 导出系统给的逻辑模型

    • 数据流图、E-R图、状态转换图、数据字典、算法描述
  • 修正系统的开发计划

与用户沟通获取需求的方法

  • 访谈

  • 面向数据流自顶向下求精

  • 简易的应用规格说明技术

  • 快速建立软件模型

    • 快速原型应该具备的第一个特性是“快速”。
    • 快速原型应该具备的第二个特性是“容易修改”。

分析建模与规格说明

实体——联系图(E-R图) (master)

数据模型包含三种相互关联的信息:数据对象、描述数据对象属性及数据对象彼此间相互连接的关系

  • ER图中包含实体(即数据对象)、关系和属性三种基本成分。

数据规范化

一、二、三范式

状态转换图 (master)

状态转换图(状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为

一个状态图只能描述一个对象的行为变化,包括一系列状态、事件以及状态之间的转移

  • 状态和事件

    • 状态:状态是任何可以被观察到的系统行为模式(当前对象属性值的集合
    • 事件:事件在某个特定个时刻发生的事情,引起系统从一个状态转换到另一个状态
  • 符号

    • 初态:实心圆
    • 终态:一对同心圆
    • 中间状态:用圆角矩形表示,可分为三部分:状态名、状态变量、活动表(其中状态名是必选的,其余两个是可选的)
    • 活动表的语法格式:事件名(参数表)/ 动作表达式
      • entry (在进入该状态时执行)
      • exit (退出该状态时执行)
      • do (在该状态下一直执行)
    • 状态转换:两个状态之间带箭头的连线,箭头指明了转换方向
      • 连线上通常标出导致状态转化的触发事件
      • 触发事件表达式的语法:事件说明[守卫条件]/动作表达式
        • 事件说明:事件名(参数表)
        • 守卫条件:一个布尔表达式
        • 动作表达式:是一个过程表达式,当状态转换开始后时执行该表达式
    • 栗子:
  • 状态转换

    • 简单转移
    • 自转移 (自己转移到自己,需要事件触发)
    • 自动转移 (通常是本状态需要做的一个活动完成时转换到下一个状态)
    • 复合转移
  • 组合状态————子状态

    一个状态下可以嵌套许多子状态

    • 顺序子状态 => 子状态是串行连续变化的
    • 并发子状态 => 存在并发存在互不影响的子状态
  • 补充

    • 同步

      • 分劈(Fork)
      • 接合(Join)
    • 伪状态

      • 符号用圈里面一个*表示
      • 用来表示并发状态的同步
      • 在子状态图之间使用(放在分隔子状态的虚线上)
    • 历史状态

      • 符号用圈里面一个H表示
      • 记录在离开某个状态时,其处于哪个子状态中
    • 对于同一层级的状态来说,初态只有一个,终态可以有多个

其它图形工具

  • 层次方框图

    • 层次方框图用树形结构的一些列多层次的矩形框描绘数据的层次结构
  • Warnier图

  • IPO图

    • IPO图是输入、处理、输出图的简称
    • 左边框中列出有关的输入
    • 中间框中列出主要的处理
    • 右边框中列出产生的输出
    • 处理的顺序暗示了执行的顺序
    • 箭头指出数据通信的情况

验证软件的需求(了解)

验证软件的一致性、完整性、现实性和有效性

坚持原创技术分享,您的支持将鼓励我继续创作!