1 / 31

软 件 工 程

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

tana-hughes
Télécharger la présentation

软 件 工 程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第21章面向对象分析 软 件 工 程

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

  3. 传统方法和面向对象方法的比较 传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出 面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息

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

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

  6. 流行的几种面向对象方法: • Booch方法 • Coad-Yourdon方法 • Rumbaugh方法(简称OMT) (Object Modeling Technology) • Jacobson方法(简称OOSE) • 由Rumbaugh 、 Booch 、 Jacobson 提出的统一建模语言 (Unify Modeing Language简称UML)

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

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

  9. 目前流行的OOA方法概述 Rumbaugh方法(简称OMT) Rumbaugh的OOA过程概述: • 开发对问题的范围陈述 • 建造对象模型 • 开发动态模型 • 构造系统的功能模型

  10. 统一的OOA方法 由Rumbaugh 、 Booch 、Jacobson 提出的统一建模语言 (Unify Modeing Language简称UML) UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。 UML允许软件工程师使用一种由一组语法规则、语义规则和语用规则控制的建模符号体系来表示分析模型。

  11. UML中,系统的表示使用5个不同的“视图”,它们从不同的视角来描述系统,每个视图由一组图定义:UML中,系统的表示使用5个不同的“视图”,它们从不同的视角来描述系统,每个视图由一组图定义: 用户模型视图:从用户(参与者)的视角来表示系统。Use-case 是用于用户模型视图的建模选择。 结构模型视图:从系统内部观察其数据和功能性。 行为模型视图:表示系统的动态或行为方面,描述了各种结构元素间的交互或协作。 实现模型视图:当它们被建造时,系统结构和行为方面被表示。 环境模型视图:系统将被实现的环境的结构和行为方面被表示。 UML分析建模着重于系统的用户模型视图和结构模型视图。

  12. 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

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

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

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

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

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

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

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

  20. 21.4.2.3 协作 类完成其责任有两种方式: • 类使用它自己的操作去操纵它自己的属性; • 类可以和其他类协作。 • 协作标识了类间的关系,当一组类一起协作以完成某需求时,它们可以被组织为子系统。 • 协作通过确定是否类可以自己完成每个责任来标识, 若不能,则它需和另一个对象交互,产生协作。

  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不能完成的以来关系.

  22. 21.4.3 定义结构和层次 21.4.4 定义主题和子系统 当所有类的某个子集相互协作以完成一组内聚的责任时,常被称为子系统或包。 一个子系统实现了和其外界协作者间的一个或多个合约,一个合约是协作者可以对子系统进行的一组特定的请求。 包可用UML图形地表示。 通过定义包引用,完整的结构可用单个图符(文件夹)引用。包引用通常对具有多个对象的任何结构创建。

  23. 21.5 对象—关系模型 对象—关系模型(如实体—关系模型一样)可通 过以下三个步骤导出: 1.利用CRC索引卡片,可以画出协作者对象的网络; 2.复审CRC模型索引卡片,评估责任和协作者,命名未标记的连接线; 3.一旦已经建成命名的关系,对每个端评估以确定基数(0对1,1对1,0对多,1对多)。

  24. 21.6 对象—行为模型 为创建模型,必须完成几个步骤: 1.评估所有的use-case以理解系统中交互的序列。 2.标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。 3.为每个使用实例创建事件迹。 4.为系统建造状态变迁图。 5.评审对象-行为模型以验证精确性和一致性。

  25. 21.6.1 通过use-case标识事件 当OO系统和参与者交换信息时,一个事件发生。 use-case被检查以指出信息交换。 对每个事件应标识一个参与者,给出被交换的信 息,并指明任何条件和约束。

  26. 21.6.2 状态表示 OO系统的语境内有两种状态特征: • 当系统完成其功能时每个对象的状态; • 当系统完成其功能时从外界观察到的系统状态。 一个对象的状态呈现被动和主动两种特征,被动状 态是对象所有属性的当前状况;主动状态指明当对 象经历连续的变换或处理时的当前状况。 对象-行为模型的一个成分是每个对象的主动状态的 简单表示以及导致在这些主动状态间变迁的事件。

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

  28. 21.6.2 状态表示 OOA行为表示的第二种类型考虑对整体产品或系统 的状态表示,该表示包含一个事件迹(它指明事件如 何引起从一个对象到另一个对象的变迁)模型和一个 状态变迁图(它描述每个对象的处理行为)。 事件迹表示了导致行为从对象流向对象的关键对象和 事件。得到完全的事件迹后,所有导致系统对象间变 迁的事件可分为输入事件集和输出事件集,这可用事 件流图来表示。而所有流入和流出某对象的事件被标 注后,可用状态变迁图来表示和每个类的责任相关联 的行为。

  29. 21.7 小结 面向对象分析方法使得软件工程师能够 通过对对象、属性和操作(作为主要的建 模成分)的表示来对问题建模。

  30. 21.7 小结 UML建造有下列特征的OO分析模型: (1)类和类层次的表示 (2)对象—关系模型的创建 (3)对象—行为模型的导出

  31. 21.7 小结 OOA过程从use-case的定义开始;然后应用 类-责任-协作者建模技术来为类和它们的属性 与操作建立文档,它也提供了发生在对象间的 协作的初始视图;然后是对象的分类和类层次 的创建,子系统可用于封装相关的对象,对象- 关系模型提供了对象见如何相互连接的指示, 而对象-行为模型指明了个体对象的行为和OO 系统的整体行为。

More Related