第6章 面向对象分析(面向对象软件工程)
- 结构化分析是第一代软件工程常用的分析技术,而面向对象分析属于第二代软件工程常用的分析技术
1. 软件分析概述
1.1 面向对象软件分析
- UML是面向对象分析(object-oriented analysis,OOA)的重要表达工具
1.1.1 OOA的主要任务
- OOA建模基本步骤:
1. 标识类,定义属性和方法
2. 刻画类的层次
3. 表示对象以及对象之间的关系
4. 对对象的行为建模
1.1.2 OOA的模型
- 面向对象分析模型的组成结构

- 处于OOA模型核心的是以用例模型为主体的需求模型
- 进一步抽取OOA模型的3种子模型:
1. 类/对象模型:描述系统所涉及的全部类和对象,每一个类和对象都可通过属性、操作和协作者进一步描述
2. 对象/关系模型:描述对象之间的静态关系,同时定义系统中对象间所有重要的消息路径,也可以具体到对象的属性、操作和协作者
3. 对象/行为模型:描述系统的动态行为,即在特定状态下对象间如何协作来响应外界的事件
1.1.3 OOA的优点
- 同时加强了对问题空间和软件系统的理解
- 改进了交流
- 适应需求的变化
- 支持软件复用
- 确保需求模型到设计模型的一致性
1.1.4 分析模型的特点
- 分析模型本质上是一种概念模型:
- 全面覆盖软件的功能需求
- 与软件的实现无关
- 分析模型的表述方法和分析技术有关
1.2 面向对象分析模型
1.2.1 典型的五层次结构
- 五层次的OOA模型是典型的OOA方法
- 建立类/对象层
- 建立属性层
- 建立服务层
- 建立结构层
- 建立主题层
1.2.2 OOA方法的共同特征
- 共同特征:类和类层次的表示;建立对象-关系模型、建立对象-行为模型

- 面向对象开发的全过程实际上是OOA、OOD、OOP、OOT的迭代过程
- 面向对象分析(OOA)是一种从问题空间中提取类和对象来进行分析的方法,用来建立一个与具体实现无关的面向对象分析模型
- 面向对象设计(OOD)从问题空间转移到解空间,在分析模型的基础上考虑实现细节,形成面向对象的设计模型
- 面向对象编程(OOP)将设计模型转换成实现模型,可获得源代码和相应的可执行代码
- 面向对象测试(OOT)通过运行可执行代码来检测程序存在的问题
2. 面向对象分析建模
-
用例模型是面向对象分析最常采用的一种模型
-
用例分析的一般步骤:
1. 检查需求阶段产生的用例规约,补充详细信息 2. 研究用例事件流,将职责分配给分析类 3. 对分析类间的关系建模 4. 详细描述所确定的类
2.1 识别与确定分析类
-
分析类:从用例开始的分析过程称为用例分析,在这一阶段定义的类称为分析类
-
分析类的类型:
- 边界类:<< boundary >>,代表系统与外部环境之间交互的边界
- 边界类提供了对参与者或外部系统交互协议的接口
- 边界类将系统和外界的变化隔离
如果更改GUI或通信协议,将只更改边界类-
控制类:<< control >>,系统在运行中的控制逻辑,用于封装一个或几个用例所特有的流程控制行为
- 有效地分离了边界类对象和实体类对象,使系统更能承受边界的变更
- 将用例所特有的行为与实体类对象分开,使实体类对象具有更高可复用性
-
实体类:<< entity >>,用于对必须存储的信息和相关的行为建模,主要职责是存储和管理系统中的信息,具有持久性,实体类对象独立于外部环境

- 边界类:<< boundary >>,代表系统与外部环境之间交互的边界
2.2 建立对象行为模型(动态模型)
- 时序图:按时间顺序描述系统元素之间的交互
- 首先,在时序图中加入触发这个用例的参与者,然后加入边界类对象,接着加入控制类对象,最后是实体类对象
-
协作图:按时间和空间顺序描述系统元素之间的交互
-
为分析类分配职责:
- 动态图将用例所要求的行为分派到分析类的过程,是从软件需求过渡到OOD设计的重要环节,核心概念就是消息和职责的对应关系
- 职责大多沿用消息的名称,但它还不是类的操作,故习惯上用“//”作为前缀
- 状态图
- 专门针对一个类的状态变化,研究该类的动态行为
2.3 建立对象关系模型(静态模型)
-
分析类的属性
-
分析类的关联
-
分析类图
-
分析类的合并

浙公网安备 33010602011771号