310 likes | 411 Views
第 21 章 面向对象分析. 软 件 工 程. 第 21 章 面向对象分析. 21.1 面向对象的分析 21.2 领域分析 21.3 OO 分析模型的类属成分 21.4 OOA 过程 21.5 对象 — 关系模型 21.6 对象 — 行为模型 21.7 小结. 传统方法和面向对象方法的比较. 传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出. 面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息. 传统系统分析方法 : 面向功能 , 把系统
E N D
第21章面向对象分析 软 件 工 程
第21章面向对象分析 21.1 面向对象的分析 21.2 领域分析 21.3 OO分析模型的类属成分 21.4 OOA过程 21.5 对象—关系模型 21.6 对象—行为模型 21.7 小结
传统方法和面向对象方法的比较 传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出 面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息
传统系统分析方法:面向功能 ,把系统 看成一组功能 OOA方法: 把问题当作一组相互作用 的实体,并确定实体间关系
OOA的意图是定义所有和被求解的问题相关的类 (它们关联的操作和属性、它们之间的关系和展示 的行为),为了达到这个目标,必须完成以下任务: (1)必须在客户和软件工程师之间沟 通了解基本的用户需求; (2)必须标识类(定义属性和方法); (3)必须刻画类层次; (4)表示对象与对象关系(对象连接); (5)对象行为必须被建模; (6)任务(1)到(5)递进反复使用,直至完成模型
流行的几种面向对象方法: • Booch方法 • Coad-Yourdon方法 • Rumbaugh方法(简称OMT) (Object Modeling Technology) • Jacobson方法(简称OOSE) • 由Rumbaugh 、 Booch 、 Jacobson 提出的统一建模语言 (Unify Modeing Language简称UML)
目前流行的OOA方法概述 Coad-Yourdon方法 Coad-Yourdon的OOA过程概述: • 使用“寻找什么”标准来标识对象 • 定义一般/特殊结构 • 定义整体/部分结构 • 标识主题(子系统构件的表示) • 定义属性 • 定义服务
目前流行的OOA方法概述 Booch方法 Booch的OOA宏观开发过程概述: • 标识类和对象 • 标识类和对象的语义 • 标识类和对象间的关系 • 进行精化
目前流行的OOA方法概述 Rumbaugh方法(简称OMT) Rumbaugh的OOA过程概述: • 开发对问题的范围陈述 • 建造对象模型 • 开发动态模型 • 构造系统的功能模型
统一的OOA方法 由Rumbaugh 、 Booch 、Jacobson 提出的统一建模语言 (Unify Modeing Language简称UML) UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。 UML允许软件工程师使用一种由一组语法规则、语义规则和语用规则控制的建模符号体系来表示分析模型。
UML中,系统的表示使用5个不同的“视图”,它们从不同的视角来描述系统,每个视图由一组图定义:UML中,系统的表示使用5个不同的“视图”,它们从不同的视角来描述系统,每个视图由一组图定义: 用户模型视图:从用户(参与者)的视角来表示系统。Use-case 是用于用户模型视图的建模选择。 结构模型视图:从系统内部观察其数据和功能性。 行为模型视图:表示系统的动态或行为方面,描述了各种结构元素间的交互或协作。 实现模型视图:当它们被建造时,系统结构和行为方面被表示。 环境模型视图:系统将被实现的环境的结构和行为方面被表示。 UML分析建模着重于系统的用户模型视图和结构模型视图。
UML 1.3 OMG采用,11/97 UML 1.1 OMG修正,9/97 UML的开发历程 OMG认证 UML 1.0 OMG审核,1/97 UML同行 专家意见 UML 0.9&0.91 10/96 & 9/96 UML 0.8 10/95 Booch’93 OMT-2 其它方法 OOSE Booch’91 OMT-1
21.2 领域分析 领域分析:在中间抽象层次进行的OOA活动。 领域分析过程活动: • 定义将被调查的领域 • 分类从领域中抽取出来的项 • 收集领域中应用的代表性样本 • 分析样本中的每个应用 • 为对象开发分析模型
21.3 OO分析模型的类属成分 静态成分:性质上是结构性的并指明了在应用的整个运行生存期 中保持的特征。动态成分:定义了一个对象如何和其他对象在一 定时间区间内交互。以下模型描述成分被标识: • 语义类的静态视图 • 属性的静态视图 • 关系的静态视图 • 行为的静态视图 • 通信的动态视图 • 控制和时序的动态视图
21.4 OOA过程 21.4.1 use-case OOA中, use-case被作为分析模型的第一 个元素的基础。使用UML符号体系,可创建 use-case图,它包含参与者和use-case, 参与者是和系统交互的实体,可以是用户 或与该软件有接口的其他机器或系统。
21.4.2 类-责任-协作者建模(CRC) 一个CRC模型实际是一组标准的表示类的索引卡 片。卡片被分为三个部分:在卡片的顶部写下类 的名字,在卡片体的左边列出类的责任,而右边 列出协作者。责任是和该类相关的属性和操作, 协作者是为一个类提供要完成责任所需要的信息 的那些类。
21.4.2.1 类 类的类型如下: • 设备类:模拟外部实体 • 性质类:表示问题环境的某些重要性质 • 交互类:模拟发生在其他对象间的交互
21.4.2.1 类 对象和类可按下列特征进行分类: • 确切性:类表示了确切的事物还是更抽象的信息? • 包含性:类是原子的还是聚合的? • 顺序性:类是并发的还是顺序的? • 永久性:类是短暂的、临时的还是永久的? • 完整性:类是易被侵害的还是被保护的?
21.4.2.2 责任 将责任分配到类的5条指导原则: • 系统智能应该被平均地分布; • 每个责任应尽可能被概括地陈述; • 信息和与其相关的行为应驻留在相同类中; • 关于一个事物的信息应局部化于单个类中,而不是分布在多个类中; • 在适当的时候,在相关类间共享责任。
21.4.2.3 协作 类完成其责任有两种方式: • 类使用它自己的操作去操纵它自己的属性; • 类可以和其他类协作。 • 协作标识了类间的关系,当一组类一起协作以完成某需求时,它们可以被组织为子系统。 • 协作通过确定是否类可以自己完成每个责任来标识, 若不能,则它需和另一个对象交互,产生协作。
21.4.2.3 协作 三种不同的类间的类属关系: • 部分(is-part-of)关系:所有是某聚合类的一部分的类被通过is-part-of关系连接到该聚合类; • 知道(has-knowledge-of)关系:当一个类必须从另一个类获取信息时, has-knowledge-of关系被建立; • 依赖(depends-upon)关系:隐含着两个类间存在由is-part-of或has-knowledge-of不能完成的以来关系.
21.4.3 定义结构和层次 21.4.4 定义主题和子系统 当所有类的某个子集相互协作以完成一组内聚的责任时,常被称为子系统或包。 一个子系统实现了和其外界协作者间的一个或多个合约,一个合约是协作者可以对子系统进行的一组特定的请求。 包可用UML图形地表示。 通过定义包引用,完整的结构可用单个图符(文件夹)引用。包引用通常对具有多个对象的任何结构创建。
21.5 对象—关系模型 对象—关系模型(如实体—关系模型一样)可通 过以下三个步骤导出: 1.利用CRC索引卡片,可以画出协作者对象的网络; 2.复审CRC模型索引卡片,评估责任和协作者,命名未标记的连接线; 3.一旦已经建成命名的关系,对每个端评估以确定基数(0对1,1对1,0对多,1对多)。
21.6 对象—行为模型 为创建模型,必须完成几个步骤: 1.评估所有的use-case以理解系统中交互的序列。 2.标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。 3.为每个使用实例创建事件迹。 4.为系统建造状态变迁图。 5.评审对象-行为模型以验证精确性和一致性。
21.6.1 通过use-case标识事件 当OO系统和参与者交换信息时,一个事件发生。 use-case被检查以指出信息交换。 对每个事件应标识一个参与者,给出被交换的信 息,并指明任何条件和约束。
21.6.2 状态表示 OO系统的语境内有两种状态特征: • 当系统完成其功能时每个对象的状态; • 当系统完成其功能时从外界观察到的系统状态。 一个对象的状态呈现被动和主动两种特征,被动状 态是对象所有属性的当前状况;主动状态指明当对 象经历连续的变换或处理时的当前状况。 对象-行为模型的一个成分是每个对象的主动状态的 简单表示以及导致在这些主动状态间变迁的事件。
21.6.2 状态表示 可刻画附加信息以深度理解对象的行为: 规定卫哨条件和动作。卫哨条件是一个变 迁要发生所必须满足的布尔条件,依赖于 对象的被动状态。动作和变迁并发地发生 或作为变迁的结果发生,并常涉及对象的 一个或多个操作。
21.6.2 状态表示 OOA行为表示的第二种类型考虑对整体产品或系统 的状态表示,该表示包含一个事件迹(它指明事件如 何引起从一个对象到另一个对象的变迁)模型和一个 状态变迁图(它描述每个对象的处理行为)。 事件迹表示了导致行为从对象流向对象的关键对象和 事件。得到完全的事件迹后,所有导致系统对象间变 迁的事件可分为输入事件集和输出事件集,这可用事 件流图来表示。而所有流入和流出某对象的事件被标 注后,可用状态变迁图来表示和每个类的责任相关联 的行为。
21.7 小结 面向对象分析方法使得软件工程师能够 通过对对象、属性和操作(作为主要的建 模成分)的表示来对问题建模。
21.7 小结 UML建造有下列特征的OO分析模型: (1)类和类层次的表示 (2)对象—关系模型的创建 (3)对象—行为模型的导出
21.7 小结 OOA过程从use-case的定义开始;然后应用 类-责任-协作者建模技术来为类和它们的属性 与操作建立文档,它也提供了发生在对象间的 协作的初始视图;然后是对象的分类和类层次 的创建,子系统可用于封装相关的对象,对象- 关系模型提供了对象见如何相互连接的指示, 而对象-行为模型指明了个体对象的行为和OO 系统的整体行为。