软件工程
电子教案
王树林
面向对象的分析
? 面向对象的分析
? 领域分析
? OO分析模型的类属成分
? OOA过程
? 对象 —— 关系模型
? 对象 —— 行为模型
? 小结
面向对象分析
? 面向对象分析是软件开发过程中的
问题定义 阶段。
? 这一阶段最后得到的是对 问题论域
的 清晰, 精确 的定义。
? 分析阶段包括两个步骤,论域分析
和 应用分析 。
? 它们都要标识问题论域中的抽象。
? 在分析中, 需要
? 找到特定对象
? 基于对象的公共特性组合它们
? 标识出对这个问题的抽象
? 在分析阶段中要标识
? 抽象之间的关系
? 这些关系在应用系统中常常用对
象之间的消息来表示, 叫做 消息
连接 。
? 在一个面向对象的应用中的控
制流由两部分构成:
? 每个单独操作内部的控制流
? 对象之间的消息模式
? 面向对象分析过程分两阶段:
? 论域分析
? 应用分析
传统方法和 OO方法
比较各种传统的和面向对象的分析方法
( Fichman和 Kemerer建议 11个“建模维
数”)。
? 实体的标识 /分类
? 一般到特殊以及整体到部分的实体分析
? 其它实体关系
? 实体属性的描述
? 大型模型的划分
? 状态和状态间的变迁
? 功能的详细刻划
? 自上向下的分解
? 端到端的处理序列
? 排它性服务的标识
? 实体通信(通过消息或事件)
OOA概述
OOA的类属步骤:
? 获取客户对 OO系统的需求
? 使用基本的需求作为指引来选择类和对象
? 为每个系统对象标识属性和操作
? 定义组织类的结构和层次
? 建造对象 —— 关系模型
? 建造对象 —— 行为模型
? 用使用实例 /场景类复审 OO分析模型
具体有如下方法:
? Booch方法 包含“微开发过程”和“宏开发过
程”
? Coad和 Yourdon方法 建模符号简单,开发分析
模型的指引直接明了。
? Jocobson方法 强调使用实例 —— 用以描述用户
和产品或系统间如何交互的场景。
? Rambaugh方法 创建三个模型:对象模型,动
态模型,以及功能模型。
? Wirfs-Brock方法 没有明确区分分析和设计任

领域分析
? 领域分析开发 问题领域的模型
? 考察问题领域内的一个较宽的范围,分析覆
盖的范围应比直接要解决的问题更多 。
? 建立大致的系统实现环境
? 领域分析是在中间抽象层次进行的 OOA,
在某组织希望创建可以广泛地用于整个应用
范畴的可复用类(构件)库时进行
领域分析过程
领域分析的描述:
软件的领域分析是在特定应用领域中标识、
分析和规约公共需求,典型地是在应用领域中多
个项目间的复用。面向对象领域分析是以公共对
象、类、子集合和框架等形式在特定应用领域中
标识、分析和规约公共可复用能力。
领域分析的输入和输出:






领域分析
目前 /未来的需求
专家建议
客户考察
已有应用
技术文件
领域语言
功能模型
复用标准
类的分类





领域分析的步骤:
? 标识候选的可复用对象
? 指明对象被标识为可复用的理由
? 定义对对象的适应性修改(可能也是可复用)
? 估算在领域中可利用对象复用的应用的百分率
? 用名字标识对象,并运用配臵管理技术类控制
它们
? 一旦对象已被定义,用估算典型应用可使用该
可复用对象来构造的百分率。
OO分析模型的类属成分
? 语义类静态视图
? 属性静态视图
? 关系的静态视图
? 行为的静态视图
? 通信的动态视图
? 控制和时序的动态视图
OOA过程
? OOA过程 并不是从考虑对象开始,而
是从理解系统的使用的方式开始。
? 使用实例 描述了参与者和系统交互的
方式,需回答以下问题:
?参与者执行的主要任务或功能是什么?
?参与者将获取、生产、或改变什么系统信息?
?参与者是否必须通知系统关于外部环境的改
变?
?参与者希望从系统中得到什么信息?
?参与者是否希望得到关于末预料的改变的通
知?
? 类 -责任 -协作者建模 (Class-responsibility-
collaborator,CRC ) 并实际上是一组表示类的标
准的索引卡片的集合。
?类
类型:设备类,属性类,交互类
特征:有形性,包含性,顺序性,持续性,
完整性
?责任 (标识责任的基本指南)
?协作者 协作表示为完成客户的责任,对客户服
务器的请求。
? 定义结构和层次
?一般 -特殊( gen-spec)结构
?整体 -部分( whole-part)结构
sensor
Entry
sensor
Smoke
sensor
Motion
sensor
? 定义主题和子系统
? 主题 可以看成是高层的模块或子
系统。
? 对于面向对象分析模型,主题表
示此模型的整体框架。可以是一
个 层次结构 。
? 通过对主题的识别,可以让人们
能够比较清晰地了解大而复杂的
模型。
对象 -关系模型
对象 — 关系模型可通过以下三个步骤导出:
? 利用 CRC索引卡片,可以画出协作者对象的
网络
? 复审 CRC模型索引卡片,评估责任和协作者,
命名末标记的连接线。
? 一旦已经建成命名的关系,对每个端评估以
确定基数。
? 持续进行以上步骤,直至得到一个完全的对
象 -关系模型。
对象 -行为模型
对象 — 行为模型可通过以下几个步骤完成:
? 评估所有的使用实例以完全地理解系统中交
互的序列
? 标识驱动交互序列的事件,理解这些事件如
何和特定的对象相关联
? 为每个使用实例创建事件轨迹
? 为系统建造状态 -变迁图
? 复审对象 -行为模型以验证精确性和一致性
状态表示
? 被动( passive)状态 简单的对象所有
属性的当前状态。
? 主动( active)状态 是当对象经历连
续的变换或处理时的当前状态。
“at rest”,comparing”
“reenter”
Compare password=incorrect
Compare password=correct
Compare password=incorrect
Control Panel
Control Panel
Password
entered
Control Panel
Control Panel
对 control panel对象的主动状态变迁的表示
Enters password
Ready for activation/deactivation
Selects stay/away
Ready for next action
Initiates beep
Beep sounded
Activate/deactivate sensors
Sensors activated/deactivated
Red light on request
Red light on
System ready
Homeowner Control panel System
SafeHome的部分事件轨迹
Homeowner
System
ready
Selects stay/away
Enters password
Ready for next action
ready for activation/deactivation
Control
panel
System
Beep sounded
sensors activated/deactivated
red light on
Initiates beep
activated/deactivated
sensors red
light on request
SafeHome的部分事件流图