31
第 第 第 第

软 件 工 程

Embed Size (px)

DESCRIPTION

第 21 章 面向对象分析. 软 件 工 程. 第 21 章 面向对象分析. 21.1 面向对象的分析 21.2 领域分析 21.3 OO 分析模型的类属成分 21.4 OOA 过程 21.5 对象 — 关系模型 21.6 对象 — 行为模型 21.7 小结. 传统方法和面向对象方法的比较. 传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出. 面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息. 传统系统分析方法 : 面向功能 , 把系统 - PowerPoint PPT Presentation

Citation preview

Page 1: 软 件 工 程

第 21章 面向对象分析 

软 件 工 程

Page 2: 软 件 工 程

第 21章 面向对象分析

21.1  面向对象的分析21.2  领域分析21.3 OO分析模型的类属成分21.4 OOA过程21.5  对象—关系模型21.6  对象—行为模型21.7  小结 

Page 3: 软 件 工 程

传统方法和面向对象方法的比较

传统方法传统方法系统是过程的集合系统是过程的集合过程与数据实体交互过程与数据实体交互过程接受输入并产生输出过程接受输入并产生输出

面向对象方法面向对象方法系统是交互对象的集合系统是交互对象的集合对象与人或其它对象交互对象与人或其它对象交互对象发送与响应消息对象发送与响应消息

Page 4: 软 件 工 程

      传统系统分析方法 :面向功能  , 把系统                     看成一组功能OOA 方法 : 把问题当作一组相互作用            的实体,并确定实体间关系

Page 5: 软 件 工 程

OOA的意图是定义所有和被求解的问题相关的类(它们关联的操作和属性、它们之间的关系和展示的行为 ),为了达到这个目标,必须完成以下任务:( 1 )必须在客户和软件工程师之间沟       通了解基本的用户需求;( 2)必须标识类 (定义属性和方法 );( 3)必须刻画类层次;( 4)表示对象与对象关系(对象连接);( 5)对象行为必须被建模;( 6)任务 (1) 到 (5) 递进反复使用,直至完成模型

Page 6: 软 件 工 程

流行的几种面向对象方法 :• Booch方法• Coad-Yourdon方法• Rumbaugh 方法(简称 OMT)( Object Modeling Technology) 

• Jacobson 方法(简称 OOSE)• 由 Rumbaugh 、  Booch 、  Jacobson     提出的统一建模语言 (Unify Modeing Language简称 UML)

Page 7: 软 件 工 程

目前流行的 OOA方法概述Coad-Yourdon方法Coad-Yourdon的 OOA过程概述:•使用“寻找什么”标准来标识对象•定义一般 /特殊结构•定义整体 /部分结构•标识主题(子系统构件的表示)•定义属性•定义服务 

Page 8: 软 件 工 程

目前流行的 OOA方法概述Booch方法Booch的 OOA宏观开发过程概述:•标识类和对象•标识类和对象的语义•标识类和对象间的关系•进行精化

Page 9: 软 件 工 程

目前流行的 OOA方法概述Rumbaugh方法(简称 OMT)

Rumbaugh的 OOA过程概述:•开发对问题的范围陈述•建造对象模型•开发动态模型•构造系统的功能模型

Page 10: 软 件 工 程

统一的 OOA方法    由 Rumbaugh 、 Booch 、 Jacobson     提出的统一建模语言 (Unify Modeing Language简称 UML)

UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。

UML允许软件工程师使用一种由一组语法规则、语义规则和语用规则控制的建模符号体系来表示分析模型。

UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。

UML允许软件工程师使用一种由一组语法规则、语义规则和语用规则控制的建模符号体系来表示分析模型。

Page 11: 软 件 工 程

UML中,系统的表示使用 5个不同的“视图”,它们从不同的视角来描述系统,每个视图由一组图定义:

用户模型视图:从用户(参与者)的视角来表示系统。Use-case 是用于用户模型视图的建模选择。

结构模型视图:从系统内部观察其数据和功能性。

行为模型视图:表示系统的动态或行为方面,描述了各种结构元素间的交互或协作。

实现模型视图:当它们被建造时,系统结构和行为方面被表示。环境模型视图:系统将被实现的环境的结构和行为方面被表示。

UML分析建模着重于系统的用户模型视图和结构模型视图。

Page 12: 软 件 工 程

UML的开发历程

Booch’91

其它方法 OMT-1 OOSE

Booch’93 OMT-2

UML 0.8

UML 0.9&0.91

UML 1.0

UML 1.1

UML同行专家意见

OMG认证

10/95

10/96 & 9/96

OMG审核 ,1/97

OMG修正 ,9/97OMG采用 ,11/97

UML 1.3

Page 13: 软 件 工 程

21.2   领域分析 领域分析:在中间抽象层次进行的 OOA 活动。领域分析过程活动:• 定义将被调查的领域• 分类从领域中抽取出来的项• 收集领域中应用的代表性样本• 分析样本中的每个应用• 为对象开发分析模型

Page 14: 软 件 工 程

21.3 OO分析模型的类属成分静态成分:性质上是结构性的并指明了在应用的整个运行生存期中保持的特征。动态成分:定义了一个对象如何和其他对象在一定时间区间内交互。以下模型描述成分被标识:• 语义类的静态视图• 属性的静态视图• 关系的静态视图• 行为的静态视图• 通信的动态视图• 控制和时序的动态视图

Page 15: 软 件 工 程

21.4 OOA过程21.4.1 use-caseOOA中,  use-case被作为分析模型的第一个元素的基础。使用 UML符号体系,可创建use-case图,它包含参与者和 use-case,参与者是和系统交互的实体,可以是用户或与该软件有接口的其他机器或系统。

Page 16: 软 件 工 程

21.4.2  类 - 责任 -协作者建模 (CRC)

一个 CRC模型实际是一组标准的表示类的索引卡片。卡片被分为三个部分:在卡片的顶部写下类的名字,在卡片体的左边列出类的责任,而右边列出协作者。责任是和该类相关的属性和操作,协作者是为一个类提供要完成责任所需要的信息的那些类。

Page 17: 软 件 工 程

21.4.2.1  类

类的类型如下: 设备类:模拟外部实体 性质类:表示问题环境的某些重要性质 交互类:模拟发生在其他对象间的交互

Page 18: 软 件 工 程

21.4.2.1  类

对象和类可按下列特征进行分类: 确切性:类表示了确切的事物还是更抽象的信息? 包含性:类是原子的还是聚合的? 顺序性:类是并发的还是顺序的? 永久性:类是短暂的、临时的还是永久的? 完整性:类是易被侵害的还是被保护的?

Page 19: 软 件 工 程

21.4.2.2 责任

将责任分配到类的 5条指导原则: 系统智能应该被平均地分布; 每个责任应尽可能被概括地陈述; 信息和与其相关的行为应驻留在相同类中; 关于一个事物的信息应局部化于单个类中,而不是分布在多个类中;

在适当的时候,在相关类间共享责任。

Page 20: 软 件 工 程

21.4.2.3  协作类完成其责任有两种方式: 类使用它自己的操作去操纵它自己的属性; 类可以和其他类协作。

协作标识了类间的关系,当一组类一起协作以完成某需求时,它们可以被组织为子系统。

协作通过确定是否类可以自己完成每个责任来标识,    若不能,则它需和另一个对象交互,产生协作。

Page 21: 软 件 工 程

21.4.2.3  协作

三种不同的类间的类属关系: 部分 (is-part-of)关系:所有是某聚合类的一部分的类被通过 is-part-of关系连接到该聚合类;

知道 (has-knowledge-of)关系:当一个类必须从另一个类获取信息时,  has-knowledge-of关系被建立;

依赖 (depends-upon)关系:隐含着两个类间存在由is-part-of或 has-knowledge-of不能完成的以来关系 .

Page 22: 软 件 工 程

21.4.3  定义结构和层次

21.4.4  定义主题和子系统

当所有类的某个子集相互协作以完成一组内聚的责任时,常被称为子系统或包。

一个子系统实现了和其外界协作者间的一个或多个合约,一个合约是协作者可以对子系统进行的一组特定的请求。

包可用 UML图形地表示。

通过定义包引用,完整的结构可用单个图符(文件夹)引用。包引用通常对具有多个对象的任何结构创建。

Page 23: 软 件 工 程

21.5  对象—关系模型对象—关系模型 (如实体—关系模型一样 )可通

过以下三个步骤导出:1.利用 CRC 索引卡片,可以画出协作者对象的网络;

2.复审 CRC 模型索引卡片,评估责任和协作者,命名未标记的连接线;

3.一旦已经建成命名的关系,对每个端评估以确定基数( 0对 1, 1对 1, 0对多, 1对多)。

Page 24: 软 件 工 程

21.6  对象—行为模型

为创建模型,必须完成几个步骤:1. 评估所有的 use-case 以理解系统中交互的序列。

2. 标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。

3. 为每个使用实例创建事件迹。4. 为系统建造状态变迁图。5. 评审对象 -行为模型以验证精确性和一致性。

Page 25: 软 件 工 程

21.6.1  通过 use-case标识事件

当 OO系统和参与者交换信息时,一个事件发生。

use-case被检查以指出信息交换。

对每个事件应标识一个参与者,给出被交换的信息,并指明任何条件和约束。

Page 26: 软 件 工 程

21.6.2 状态表示

OO系统的语境内有两种状态特征: 当系统完成其功能时每个对象的状态; 当系统完成其功能时从外界观察到的系统状态。

一个对象的状态呈现被动和主动两种特征,被动状态是对象所有属性的当前状况;主动状态指明当对象经历连续的变换或处理时的当前状况。

对象 -行为模型的一个成分是每个对象的主动状态的简单表示以及导致在这些主动状态间变迁的事件。

Page 27: 软 件 工 程

21.6.2 状态表示

可刻画附加信息以深度理解对象的行为:规定卫哨条件和动作。卫哨条件是一个变迁要发生所必须满足的布尔条件,依赖于对象的被动状态。动作和变迁并发地发生或作为变迁的结果发生,并常涉及对象的一个或多个操作。

Page 28: 软 件 工 程

21.6.2 状态表示OOA行为表示的第二种类型考虑对整体产品或系统的状态表示,该表示包含一个事件迹(它指明事件如何引起从一个对象到另一个对象的变迁)模型和一个状态变迁图(它描述每个对象的处理行为)。

事件迹表示了导致行为从对象流向对象的关键对象和事件。得到完全的事件迹后,所有导致系统对象间变迁的事件可分为输入事件集和输出事件集,这可用事件流图来表示。而所有流入和流出某对象的事件被标注后,可用状态变迁图来表示和每个类的责任相关联的行为。

Page 29: 软 件 工 程

21.7 21.7  小结小结

面向对象分析方法使得软件工程师能够面向对象分析方法使得软件工程师能够通过对对象、属性和操作通过对对象、属性和操作 (( 作为主要的作为主要的建建

模成分模成分 )) 的表示来对问题建模。的表示来对问题建模。  

Page 30: 软 件 工 程

21.7 21.7  小结小结

UML建造有下列特征的OO分析模型:

(1) 类和类层次的表示

(2) 对象—关系模型的创建

(3) 对象—行为模型的导出 

Page 31: 软 件 工 程

21.7 21.7  小结小结OOA过程从 use-case的定义开始;然后应用类 -责任 -协作者建模技术来为类和它们的属性与操作建立文档,它也提供了发生在对象间的协作的初始视图;然后是对象的分类和类层次的创建,子系统可用于封装相关的对象,对象 -

关系模型提供了对象见如何相互连接的指示,而对象 -行为模型指明了个体对象的行为和 OO

系统的整体行为。