首页计算机计算机软件面向对象软件工程 04 第四讲 OOA初阶.pptx

04 第四讲 OOA初阶.pptx

页数:49页文件大小:325.4 KB来源: 面向对象软件工程ppt课件

本课件系统讲解面向对象分析方法,先介绍OOA模型的对象类层、属性层、服务层、结构层与主题层五个层次及其图元,再按发现和识别对象、标识结构、标识主题词、标识属性及实例关系、标识服务和消息五步展开方法细节,随后以电梯控制系统为实例完整演示从问题描述、DFD与状态图到对象筛选与服务标识的全过程,最后说明分析模型的完整性一致性检查与分析文档评审。

第四章OOA初阶目录页,列出OOA的语言、方法、实例分析、完整性与分析文档五节
OOA模型五层次页,说明对象类层、属性层、服务层、结构层与主题层各自的描述内容
对象类层表示页,说明建立问题空间抽象表示并用类与抽象类图元表示的做法
查看本课件的文字版(共 49 页,供检索与复制)

第1页:第四章OOA初阶目录

第四章 OOA 初阶:

  • §4.1 OOA 的语言
  • §4.2 OOA 的方法
  • §4.3 实例分析
  • §4.4 分析模型的完整性与一致性
  • §4.5 分析文档

第2页:OOA模型的五个层次

§4.1 OOA 的语言:

  • 从 OO 观点出发,OOA 模型描述:问题域中概念及实体的抽象;问题域中对象及它们之间的结构关系;问题域中对象之间的通信与协调
  • 对象—类层:问题域中概念及实体的抽象
  • 属性层:对象的属性及对象之间的实例连接
  • 服务层:对象的服务及对象之间的消息连接
  • 结构层:问题域中的结构关系(继承与聚集)
  • 主题层:问题分解,分而治之

第3页:对象—类层

§4.1.1 对象—类层:

  • 建立问题空间中概念及实体的抽象表示——对象
  • 将对象归并为类或抽象类
  • 表示图元包括:类、带对象实例的类、抽象类,均以「名称」框表示

第4页:属性层

§4.1.2 属性层:

  • 表示对象在问题空间中的相关属性
  • 表示对象之间的实例连接(数量对应关系)
  • 图元示例:Bank(Bank_Id…)与 Card(Card_Id、Card_Holder…)之间为 1 对多的实例连接

第5页:服务层

§4.1.3 服务层:

  • 表示对象在问题空间中相关的、外部可见的服务
  • 表示对象之间的消息传递
  • 图元示例:Bank 与 Card 之间以有向连接表示消息传递方向

第6页:结构层

§4.1.4 结构层:

  • 表示继承关系,例如「文章」派生出「已录用」「已刊登」
  • 表示聚集关系,例如电梯由马达、按钮、面板等部件组成,数量对应关系为 1 对 1

第7页:主题层

§4.1.5 主题层:

  • 将关系比较密切的对象/类划分为某主题词
  • 位于不同主题词中的对象/类之间的关系较为松散
  • 图元示例:电梯管理主题含电梯、马达、电梯内面板、到达指示面板、目的地按钮面板、紧急按钮、超载传感器;电梯控制主题含召唤按钮面板与各类电梯事件

第8页:发现和识别对象的方法

§4.2.1 发现和识别对象:

  • 采用自然语言处理技术标识问题域中的概念及其相互关系
  • 采用自然语言分析技术获得概念集合
  • 采用矩阵分析技术获得概念之间的相互关联
  • 将上述结果表示成 OOA 工作表格,标注:(0) 忽略、(1) 可能的对象/类、(2) 可能的继承关系、(3) 可能的聚集关系、(4) 可能的属性、(5) 可能的外部服务

第9页:对象在需求描述中的七种形式

对象在用户需求的正文描述中可能呈以下形式:

  • 与目标系统交互信息的外部实体,例如物理设备、操作人员或用户、其他有关的子系统
  • 现实问题信息域中的概念实体,例如信号、报表、显示信息
  • 目标系统运行过程中可能出现并需要系统记忆的事件,例如核电站运转时的意外事故
  • 与目标系统发生交互作用的人员所扮演的各种角色,例如管理人员、工程师、销售人员
  • 作为系统环境或问题上下文的场所、位置,例如卫星地面接收站的安装位置(经度、纬度、海拔高度)
  • 有关的组织机构,例如单位、小组
  • 表示一组成分对象的聚集对象,例如物理设备

第10页:根据DFD、ER和状态转换图标识对象

2. 根据 DFD、ER 和状态转换图进一步标识有用的对象/类:

  • 顶级 DFD 中:外部实体可构成潜在的对象;输入/输出数据流应在 OOA 模型得到适当的接收和处理
  • DFD 子图中的函数/过程可构成潜在的外部服务
  • ER 图中:实体可构成潜在对象;实体的属性可构成潜在的对象属性;数量对应关系可构成 OOA 模型中的实例连接
  • 状态转换图:系统必须处理的外部事件以及系统在处理这些事件时发生的状态变迁;事件的接收、响应过程有助于对象标识;状态信息有助于标识对象的属性

第11页:候选对象的筛选与鉴别

3. 对候选对象进一步筛选、鉴别,判别准则为:

  • 对象应具有记忆其自身状态的能力
  • 对象应具有有意义的操作,以某种方式修改其状态(属性值)
  • 对象应具有多种有意义的属性
  • 为对象定义的有关属性应适应于对象的所有实例
  • 为对象定义的有关操作应适合于对象的所有实例
  • 对象应是软件需求模型的必要成分,与设计和实现方法无关

本页以用户、传感器、控制面板、系统、传感器编码、传感器类型、密码、电话号码、传感器事件、警报器等候选对象为例,在 OOA 工作表格上给出鉴别结论与理由(角色或外部实体、概念实体、事件、聚集对象等)。

第12页:标识继承关系

§4.2.2 标识结构 —— 1. 标识继承关系:

  • 1.1 标识已有类之间的继承关系:是否自然?
  • 1.2 从已有类出发寻找子类:对象的特殊化是否位于问题域中、是否自然?对象的特殊化可否使用额外的属性或外部服务进行刻画?
  • 1.3 从已有类出发寻找公共父类:是否可以抽象出多个父类的公共属性或外部服务以简化 OOA 模型?

第13页:标识部分—整体关系

§4.2.2 标识结构 —— 2. 标识部分—整体关系:

  • 2.1 标识已有类之间的部分—整体关系:是否自然?
  • 2.2 从已有类出发寻找部件类:是否可以提取多个类的公共部件类以简化 OOA 模型?提取的部件类是否自然?
  • 2.3 从已有类出发寻找整体类:是否可以将已有类组装成为新的整体类?新得到的整体类是否位于问题域中?是否自然?

第14页:重复度与参与度

§4.2.2 标识结构 —— 2.4 标识部分—整体关系中的重复度与参与度:

  • 一个整体类的实例,可能含有多个部件类的实例?
  • 一个部件类的实例,可能出现在多个整体类的实例中?
  • 一个整体类的实例,是否必须包含某个部件类的实例?
  • 一个部件类的实例,是否必须出现在某个整体类的实例中(是否可以独立出现)?

第15页:标识主题词

§4.2.3 标识主题词:

  • 根据问题空间中系统/子系统、问题/子问题的自然分解关系初步确定主题词
  • 主题词可以具有层次结构
  • 根据主题词将需求分析任务划分至各分析小组
  • 随分析的不断深入对主题词的内涵和划分进行必要调整

第16页:标识属性

§4.2.4 标识属性及实例关系 —— 1. 标识属性:

  • 1.1 在 ER 图中,实体的属性可能构成 OOA 模型的属性
  • 1.2 哪些属性在问题空间中完全刻画了被标识的每个对象?
  • 1.3 属性必须适应于类的所有实例,否则应考虑继承关系的可能性
  • 1.4 导出属性和外部不可见属性应略去

第17页:标识实例关系

§4.2.4 标识属性及实例关系 —— 2. 标识实例关系:

  • 1.1 利用自然语言处理方法自动收集对象之间的关系
  • 1.2 实例关系应反映自然域中的限制或事务规则
  • 1.3 导出关系可以省略

第18页:标识服务和消息的五种途径

§4.2.5 标识服务和消息:分析对象之间的动态关联。

  • 在自然语言处理过程中,考虑相关的动词可否构成外部服务
  • 考虑对象的生命周期(创建、删除、维护)
  • 结合数据流图考虑对象的计算性行为
  • 基于状态—事件—响应图提取对象之间的消息传递
  • 通过运行走查细化外部服务的定义

第19页:标识服务和消息的规则

§4.2.5 标识服务和消息 —— 规则:

  • 任一对象的所有外部服务均由传入该对象的消息引发
  • 属性必须与某外部服务相关联,否则可删去
  • 消息连接必须与实例关系相一致

第20页:OOA方法小结

OOA 小结:

  • 1. 发现和识别对象:采用自然语言处理技术;根据 DFD、ER 和状态转换图进一步标识;对候选对象进一步筛选、鉴别
  • 2. 标识结构:标识继承关系;标识部分—整体关系
  • 3. 标识主题词
  • 4. 标识属性及实例关系
  • 5. 标识服务和消息:分析对象之间的动态关联

第21页:电梯控制系统问题描述

§4.3 实例分析:电梯控制系统(ECS)。在 M 层的建筑内安装了 N 部电梯,电梯问题是指这些电梯的逻辑控制问题:

  • 每个电梯有一些按钮,每个按钮对应一个楼层。当按下按钮后,按钮灯亮,并指出电梯开往相应楼层;当电梯到达该楼层后,按钮灯熄灭
  • 除底层和顶层只有一个按钮外,每个楼层有两个按钮,分别指示上楼和下楼请求。当按下后,按钮灯亮;如果电梯已经到达该楼层,或者遇到有冲突的请求时,按钮灯熄灭。在后一种情况下,如果两楼层同时发出请求,则只能取消其中一个请求
  • 决定服务优先次序的算法应尽量减少两个请求的等待时间

第22页:电梯控制系统问题描述(续)

§4.3 实例分析:电梯控制系统(ECS)(续):

  • 当没有服务请求时,电梯保持在最后一个目的楼层,电梯门关闭
  • 系统以事件驱动的方式响应楼层对电梯的请求,所有楼层的优先级是相同的
  • 系统以事件驱动的方式响应电梯内部对到达楼层的要求,并按照电梯运动的方向依次完成这些要求
  • 每个电梯都有一个紧急按钮,按下后向管理人员发出报警信号,然后电梯被置为「不可用」状态;每个电梯都有取消「不可用」状态的机制

第23页:ECS相关的实体及概念

§4.3.1 发现和识别对象 —— 1. 相关的实体及概念有:

  • 电梯、电梯门、电梯内部
  • 建筑物、楼层、顶层、底层、目的楼层
  • 按钮、按钮灯、紧急按钮
  • 上楼请求、下楼请求
  • 电梯运动方向
  • 管理人员
  • 优先级
  • 报警信号、不可用状态

第24页:ECS的顶级DFD

§4.3.1 发现和识别对象 —— 2. 顶级 DFD:外部实体包括目的地按钮面板、召唤按钮面板、电梯、楼层传感器、超载传感器、到达指示面板;ECS 接收目的地请求、召唤请求、电梯状态、楼层消息、超载状况,输出显示到达楼层、显示目的地、召唤响应与马达命令。

第25页:ECS的实体关系图

§4.3.1 发现和识别对象 —— 3. 实体关系图:楼层、召唤按钮、目的地按钮与电梯四类实体之间存在联系,分别对应召唤、目的地请求与电梯到达等关系。

第26页:ECS的事件响应模型

§4.3.1 发现和识别对象 —— 4. 事件响应模型:本页以图示方式给出电梯控制系统必须处理的外部事件及其响应动作。

第27页:ECS的状态转换图

§4.3.1 发现和识别对象 —— 5. 状态转换图:电梯具有空闲、运行、超载、停止、不可用五种状态,状态之间由事件触发迁移(图示标注迁移编号 1、3、7、5、7、7、6、2 与 4)。

事件确认规则:有确定的发生时刻;系统应对该事件有所反应。

第28页:ECS对象的筛选结果

§4.3.1 发现和识别对象:在 OOA 工作表格上进行筛选,最后确定以下对象/类:

  • 电梯、马达、到达指示面板、目的地按钮面板
  • 紧急按钮、超载传感器
  • 楼层、召唤按钮面板
  • 召唤事件、目的地要求事件、电梯到达事件

下面的实体或概念不作为对象:建筑物、电梯门、楼层传感器、楼层上的到达指示面板、按钮。

第29页:ECS的部分—整体结构

§4.3.2 标识结构:图示电梯与马达、到达指示面板、目的地按钮面板、紧急按钮、超载传感器之间的整体—部分关系,其数量对应关系均为 1 对 1。

第30页:ECS事件类的继承结构

§4.3.2 标识结构:图示电梯事件(ElevatorEvent)与召唤事件、目的地要求事件、电梯到达事件之间的继承关系,以及面板类与召唤按钮面板、电梯内面板、到达指示面板、目的地按钮面板之间的结构关系。

第31页:ECS的主题词划分

§4.3.3 标识主题词:电梯管理主题包含电梯、马达、电梯内面板、到达指示面板、目的地按钮面板、紧急按钮、超载传感器、面板;电梯控制主题包含召唤按钮面板以及电梯事件、召唤事件、目的地要求事件、电梯到达事件。

第32页:ECS的属性与实例关系图

§4.3.4 标识属性及实例关系:本页以图示方式给出电梯控制系统中各类对象的属性定义及对象之间的实例连接。

第33页:ECS的实例连接

§4.3.4 标识属性及实例关系 —— 标识实例连接:

  • 电梯到达事件与一部电梯相关联,电梯可与 0 到多个到达事件相关联
  • 目的地请求事件与一个目的地面板相关联,目的地面板与 0 到多个目的地请求事件相关联
  • 召唤事件与召唤面板之间的实例连接类似于前
  • 电梯与楼层:多对多实例连接

第34页:标识服务和消息的线索

§4.3.5 标识服务和消息:

  • 前述的顶级 DFD 和状态—事件—响应模型为标识对象间的消息传递提供了很好的线索
  • 在标识对象/类的外部服务之前,首先要确定:对象间如何协调才能完成预定目标

第35页:ECS的三种协调方案

§4.3.5 标识服务和消息:对 ECS,有三种协调方案:

  • 集中控制方法:设置 ElevatorScheduler 对象,通过接收召唤事件和目的地请求事件,随时监控电梯状态,实现调度策略
  • 每个 Elevator 对象自行决定下一目标楼层,多个 Elevator 对象之间应相互协调
  • 每个 Floor 对象在电梯到达该楼层时实现电梯调度,多个 Floor 对象之间应相互协调

方案选择取决于:结构简单、自然,强内聚、松耦合;软件可扩充性、可修改性、可维护性好;可重用性好。

第36页:召唤电梯的处理流程

§4.3.5 标识服务和消息 —— 1. 召唤电梯:

  • SummonEvent.RecongnizeSummonRequest 检测召唤按钮是否按下
  • 如按下,则向相应的 SummonPanel 发送 SummonEvent 事件对象
  • SummonPanel 对象收到上述事件对象后,记录召唤请求的方向(up 或 down)

第37页:目的地请求的处理流程

§4.3.5 标识服务和消息 —— 2. 目的地请求:

  • DestinationEvent.RecongnizeDestinationRequest 检测是否有目的地按钮被按下
  • 如有,向相应的 DestinationPanel 发送 DestinationEvent 对象
  • DestinationPanel 对象收到该事件后,记录待处理的目的地请求楼层

第38页:电梯到达调度楼层的处理

§4.3.5 标识服务和消息 —— 3. 电梯到达调度楼层:

  • ArrivalEvent.RecongnizeArrivalEvent 检测是否有电梯到达;如有,向相应的 ArrivalPanel 发送 ArrivalEvent 对象
  • ArrivalPanel 对象收到该事件后更新显示信息
  • 向相应的楼层发送事件对象;Floor.ProcessElevatorArrrival 接收并处理该事件,向相应的 Elevator 对象发送消息,指示它更新状态、关闭马达、准备停靠
  • 向相应的 DestinationPanel 对象发送消息,指示它更新状态
  • 向相应的 SummonPanel 对象发送消息,指示它更新状态

第39页:电梯就绪的处理流程

§4.3.5 标识服务和消息 —— 4. 电梯就绪:

  • Floor.RecongnizeElevatorReadyEvent 检测当前停靠在本楼层的电梯是否已经就绪
  • 如果就绪,Floor.Schedule 首先向其他对象询问必要的信息以决定调度
  • 决定之后,向 Elevator 对象发送控制命令,要求其更新状态、启动马达

第40页:分析模型的命名约定

§4.4 分析模型的完整性与一致性 —— 1. 命名约定:

  • 命名要有意义
  • 要表现实体的自然含义

第41页:结构层的检查规则

§4.4 分析模型的完整性与一致性 —— 2. 规则:2.1 结构层:

  • 如果部分—整体关系中的部分/整体类为类属类,那么其任一实例类必须作为部分/整体类出现在部分—整体关系中
  • 对继承关系,类似于前
  • 要检查继承关系在 OOA 模型中与问题域中的语义一致性

第42页:属性层与服务层的检查规则

§4.4 分析模型的完整性与一致性 —— 2.2 属性层:

  • 属性应至少被相应对象的一个外部服务所访问
  • 属性定义必须与实例连接相一致

2.3 服务层:

  • 外部服务的定义必须与输入、输出相一致
  • 外部服务不能直接访问封装之外的其他对象的属性

3. 模型各层次之间的一致性、完全性检查。

第43页:面向用户的分析文档内容

§4.5 分析文档 —— 1. 面向用户的内容:

  • 系统目标、范围、契约
  • 典型的用户场景
  • 系统行为的图形描述(状态转换图)
  • 对象及消息传递图
  • 字典(包括术语定义,属性定义及说明,外部服务的定义及说明)

第44页:面向设计人员的分析文档内容

§4.5 分析文档 —— 2. 面向设计人员的内容:

  • 主题层 OOA 模型
  • 分主题的各层 OOA 模型
  • 设计约束
  • 字典(除面向用户部分之外的其他细节描述)

第45页:OOA模型的评审方式

§4.5 分析文档 —— 3. OOA 模型的评审:

  • 利用评审检查表对 OOA 模型的所有层次逐项检查
  • 利用 CASE 工具自动填写检查表,自动管理检查表
  • 检查 OOA 模型的可执行部分是否与用户场景及用户需求相一致

第46页:OOA模型的评审检查表

§4.5 分析文档 —— 4. OOA 模型的评审检查表:本页以表格形式给出针对 OOA 模型各层次的检查项。

第47页:OOA模型的评审检查表(续)

§4.5 分析文档 —— 4. OOA 模型的评审检查表(续):继续列出针对 OOA 模型各层次的检查项。

第48页:OOA模型的评审检查表(第三部分)

§4.5 分析文档 —— 4. OOA 模型的评审检查表(第三部分):列出剩余的评审检查项,供逐项核对时使用。

第49页:本章小结

本章小结:

  • OOA 的语言和方法直接对应于面向对象的基本概念和方法,简单直观,但表达能力不够
  • OOA 的大致过程:发现和识别对象;标识结构(继承关系和部分—整体关系);标识主题词;标识属性及实例关系;标识服务和消息
顶部目录