结构化分析与设计
- 结构化设计(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应该直观易改
- 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模型
测试
特性:挑剔性、复杂性、不彻底性和经济性
测试种类
- 静态分析(程序不执行)
- 静态分析器分析(自动方式)
- 代码评审(人工方式):代码会审、走查、办公桌检查
- 动态测试(程序执行)
- 黑盒测试:测试程序功能
- 白盒测试:测试程序结构
测试文档
测试用例:{测试数据+期望结果}
测试结果:{测试数据+期望结果+实际结果}