《软件工程——原理、方法与应用》阅读笔记

506 阅读6分钟

结构化分析与设计

  • 结构化设计(structured design, SD)
  • 结构化分析(structured analysis, SA)

以上两者是瀑布模型的首次实践,该模型可划分为以下阶段:
需求定义与分析->总体设计->详细设计->编码->测试->使用维护

整体模型可简明表示为:

  • 结构化分析(工具:DFD、PSPEC)-> 分析模型(分层DFD图) + SRS
  • 结构化设计(工具:SC图)-> (映射)初始设计模型(初始SC图)
  • 初始设计模型(初始SC图)->(优化)最终设计模型(最终SC图)

基本任务与指导思想

结构化分析

SA有两项基本任务:建立系统分析模型(analysis model)编写软件需求规格说明书(software requirements specification, SRS)

  • 建立系统分析模型(analysis model)
    • 功能模型:待开发系统的功能需求
    • 数据模型: 数据需求
    • 行为模型: 行为需求
  • 编写软件需求规格说明书(software requirements specification, SRS)
    • SRS是分析阶段编写的、以文字为主的文档。其中有引言、信息描述、功能描述、行为描述、质量保证、接口描述以及其他需求,还应包括:
      • SRS应该具有准确性
      • SRS应该防止二义性
      • SRS应该直观易改
  • 主要指导思想:抽象与分解

结构化设计

  • 软件设计 = 总体设计 +详细设计 结构化设计模块设计相结合,即共同形成传统软件开发的常用技术
  • SC图需分两步完成:映射、优化
    • 软件设计
      • 总体设计:
        • 初始SC图
        • 最终SC图
      • 详细设计:完成模块说明
  • 软件设计的指导思想:分解和细化

SA模型

SA组成

数据字典(data dictionary,DD)处于模型的核心,系统涉及的各种数据对象的总和。从DD出发可以构建3种图:

  • 实体联系图(E-R图):描述数据对象间的关系,均可用数据对象说明来描述。
  • 数据流图(DFD):指明系统中的数据是如何流动和变换的,以及描述使数据流进行变换的功能。可在加工规格说明(PSPEC) 中描述每个DFD图中的功能。
  • 状态变换图(STD)在:系统在外部事件作用下将有何动作,表明系统的各种状态以及状态间的变换,可用控制规格说明(CSPEC) 说明。

SA描述工具

  • 基本组成部分:DFD、DD和PSPEC
  • 扩展成分:CFD、CSPEC和STD
  • E-R图

SD模型

SD组成

SA模型映射而来的

SD描述工具

数据设计、体系结构设计、接口设计和过程设计
SC模块调用:①简单调用②选择调用③循环调用

结构化系统分析

  • 画分层数据流图
  • 确定数据定义与加工策略
  • 需求分析的复审

面向对象与UML

UML就是OO软件工程使用的统一建模语言,是一种图形化的语言,主要用图形方式来表示。

  • 基本特征:抽象、封装、继承和多态
  • OO优点:提高软件系统的可复用性、可扩展性和可维护性

UML简介

组成

模型元素

  • 模型元素:表示模型中的某个概念 类(属性、操作)、对象(属性、操作)、构件、用例、结点(node)、接口(interface)、包(package)和注释(note)等
  • 模型元素之间相互连接的关系:关联、泛化(继承)、依赖、实现、聚集和组合等
    • 关联:模型元素实例之间的固定对应关系,为永久性的结构关系
    • 泛化:一般与特殊的关系
    • 依赖:一个元素以某种方式依赖于另一个元素
    • 实现:接口和实现它的模型之间的关系
    • 聚集:整体与部分关系,部分是整体的一部分
    • 组合:强烈的整体与部分关系,部分不能独立于整体而存在

原模型结构

元元模型、元模型、模型和用户模型

图和视图

    • 静态图:例图、类图、对象图、构件图和部署图
    • 动态图:状态图、时序图、协作图和活动图
  • 视图
    • 用例视图:从用户角度看到的外部功能
    • 逻辑视图
    • 进程视图
    • 构件视图
    • 部署视图:部署到的物理环境

UML特点

统一标准、面向对象、表达能力强大和可视化

静态建模

关联关系

  • 普通关联
  • 递归关联
  • 多重关联
  • 有序关联
  • 限制关联
  • 或关联
  • 关联类

动态建模

消息

简单消息、同步消息(嵌套控制流)、异步消息(异步控制流)

状态图

  • 状态:状态名、状态变量和活动
    • 活动:事件名 参数表 / 动作表达式
  • 状态转移:事件说明 [守卫条件] / 动作表达式 ^ 发送子句
  • 事件
  • 状态图之间发送消息

时序图和协作图

  • 链接上附加的约束 global、local、parameter、self、vote或broadcast
  • 消息流 前缀 守卫条件 序列表达式 返回值:= 说明

活动图

  • 活动和转移
  • 泳道
  • 对象
  • 信号

需求工程与需求分析

软件需求

三大类型:业务需求、用户需求和功能需求
特性:功能性、可用性、可靠性、性能、可支持性和设计约束

需求分析

需求获取、需求建模、需求描述和需求验证

需求模型概述

结构化分析建模和面向对象分析建模两种主流

  • 结构化需求模型:
    • 数据流图、加工规格说明的功能模型
    • 数据字典和ER图等数据模型
    • 状态转换图、控制流图和控制规格说明等行为模型
  • 面向对象需求模型
    • 用例图
    • 补充规约
    • 术语表

面向对象的需求建模

  • 画用例图
  • 写用例规约
    • 用例规约内容
      • 简要说明
      • 事件流(基本流和备选流)
      • 特殊需求
      • 前置条件和后置条件
  • 描述补充规约
  • 编写术语表
  • 调整用例模型

面向对象分析

内容大致:

  • 需求理解
  • 定义类和对象
  • 标识对象的属性和操作
  • 标识类的结构和层次
  • 建立对象-关系模型
  • 建立对象-行为模型
  • 评审OOA模型

测试

特性:挑剔性、复杂性、不彻底性和经济性

测试种类

  • 静态分析(程序不执行)
    • 静态分析器分析(自动方式)
    • 代码评审(人工方式):代码会审、走查、办公桌检查
  • 动态测试(程序执行)
    • 黑盒测试:测试程序功能
    • 白盒测试:测试程序结构

测试文档

测试用例:{测试数据+期望结果}
测试结果:{测试数据+期望结果+实际结果}