软件工程第10章讲解_第1页
软件工程第10章讲解_第2页
软件工程第10章讲解_第3页
软件工程第10章讲解_第4页
软件工程第10章讲解_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本章介绍本章介绍UMLUML的基本模型,并分别介绍基的基本模型,并分别介绍基 本模型中的事务、关系及图。本模型中的事务、关系及图。 第第1010章章 统一建模语言统一建模语言 UML简介简介 用例建模用例建模 静态建模静态建模 动态建模动态建模 物理架构建模物理架构建模 基于基于UML的统一建模过程的统一建模过程RUP UML的发展历史的发展历史 Unified Modeling Language, UML Grady Booch,James Rumbaugh和和Ivar Jacobson发起,在发起,在Booch方法、方法、OMT方法和方法和 OOSE方法的基础上,汲取其它面向对象方法的方

2、法的基础上,汲取其它面向对象方法的 优点,几经修改而成。优点,几经修改而成。 于于1997年年11月月17日被日被OMG(对象组织管理)采(对象组织管理)采 纳,成为面向对象建模的标准语言。纳,成为面向对象建模的标准语言。 10.1 概述概述 统一建模语言统一建模语言,已成为国际软件界广泛承认的标准。已成为国际软件界广泛承认的标准。 不论在计算机学术界、软件产业界还是在商业界,不论在计算机学术界、软件产业界还是在商业界, UML已经逐渐成为人们为各种系统建模、描述系已经逐渐成为人们为各种系统建模、描述系 统体系结构、商业体系结构和商业过程时使用的统体系结构、商业体系结构和商业过程时使用的 统一

3、工具,而且在实践过程中人们还在不断扩展统一工具,而且在实践过程中人们还在不断扩展 它的应用领域。它的应用领域。 UML的核心的核心是建立系统的各类模型。是建立系统的各类模型。 UML介绍介绍 UML是一种是一种可视化的图形符号建模语言可视化的图形符号建模语言,利用它,利用它 可以进行需求分析、概要设计、详细设计、编程可以进行需求分析、概要设计、详细设计、编程 实现、项目计划、测试、原型迭代、产品发布、实现、项目计划、测试、原型迭代、产品发布、 产品维护等。产品维护等。 UML为面向对象软件设计提供统一的、标准的、为面向对象软件设计提供统一的、标准的、 可视化的建模语言。适用于描述以用例为驱动,

4、可视化的建模语言。适用于描述以用例为驱动, 以体系结构为中心的软件设计的全过程。以体系结构为中心的软件设计的全过程。 目前在软件工程里目前在软件工程里主要用于系统分析与系统设计主要用于系统分析与系统设计。 Rational Rose是是UML的主要建模工具。的主要建模工具。 Microsoft Visio是是UML常见的建模工具。常见的建模工具。 UML定义定义 UML的定义的定义包括包括UML语义和语义和UML表示法两个部分。表示法两个部分。 UML语义语义:UML对语义的描述对语义的描述使开发者能在语义上取使开发者能在语义上取 得一致得一致认识,认识,消除了因人而异的表达方法所造成的影消除

5、了因人而异的表达方法所造成的影 响。响。 UML表示法表示法:UML表示法定义表示法定义UML符号的表示法符号的表示法,为为 开发者或开发工具使用这些图形符号和文本语法为系开发者或开发工具使用这些图形符号和文本语法为系 统建模提供了标准。统建模提供了标准。 UML的基本模型的基本模型 UML模型由事物、关系和图组成。模型由事物、关系和图组成。 事物事物(Things):UML模型中最基本的构成元素,是具模型中最基本的构成元素,是具 有代表性的成分的抽象。有代表性的成分的抽象。 关关系系(Relationships):关系把事物紧密联系在一起。:关系把事物紧密联系在一起。 图图(Diagrams

6、 ):图是事物和关系的可视化表示。:图是事物和关系的可视化表示。 UMLUML 事物事物关系关系图图 结构结构 事物事物 行为行为 事物事物 组织组织 事物事物 辅导辅导 事物事物 关联关联 关系关系 依赖依赖 关系关系 泛化泛化 关系关系 实现实现 关系关系 静态静态 图图 动态动态 图图 用用 例例 图图 类类 图图 对对 象象 图图 组组 件件 图图 配配 置置 图图 时时 序序 图图 协协 作作 图图 状状 态态 图图 活活 动动 图图 用用 例例 类类 接接 口口 协协 作作 活活 动动 类类 组组 件件 节节 点点 状状 态态 机机 交交 互互 类类 注注 释释 10.2 UML的

7、事物的事物 事物是对模型中最具代表性成分的抽象,在事物是对模型中最具代表性成分的抽象,在UML 中,可以分为结构事物、行为事物、分组事物和中,可以分为结构事物、行为事物、分组事物和 注释事物注释事物4类。类。 10.2.1 结构事物结构事物 结构事物结构事物:UML模型的静态部分,主要用来描述模型的静态部分,主要用来描述 概念或物理的元素。概念或物理的元素。它包括以下几种:它包括以下几种: 类类:具有相同属性相同操作相同关系相同语义的对象:具有相同属性相同操作相同关系相同语义的对象 的描述。的描述。 接口接口:描述元素的外部可见行为,即服务集合的定义:描述元素的外部可见行为,即服务集合的定义

8、说明。说明。 协作协作:描述了一组事物间的相互作用的集合。:描述了一组事物间的相互作用的集合。 用例用例:代表一个系统或系统的一部分行为,是一组动:代表一个系统或系统的一部分行为,是一组动 作序列的集合。作序列的集合。 构件构件:系统中物理存在,可替换的部件。:系统中物理存在,可替换的部件。 节点节点:运行时存在的物理元素。:运行时存在的物理元素。 另外,另外,参与者参与者、信号应用、文档库、页表等都是上述、信号应用、文档库、页表等都是上述 基本事物的变体。基本事物的变体。 10.2.2 行为事物行为事物 行为事物行为事物:是:是UML模型的动态部分,描述跨越空模型的动态部分,描述跨越空 间和

9、时间的行为。包括以下两类:间和时间的行为。包括以下两类: 交互交互:由在特定的上下文环境中共同完成一定任务的:由在特定的上下文环境中共同完成一定任务的 一组对象之间传递的消息组成。涉及的元素包括消息、一组对象之间传递的消息组成。涉及的元素包括消息、 动作序列、链接。动作序列、链接。 状态机状态机:描述事物或交互在生命周期内响应事件所经:描述事物或交互在生命周期内响应事件所经 历的状态序列。单个类或者一组类之间协作的行为都历的状态序列。单个类或者一组类之间协作的行为都 可以用状态机来描述。涉及状态、变迁和活动。可以用状态机来描述。涉及状态、变迁和活动。 10.2.3 分组事物和注释事物分组事物和

10、注释事物 分组事物分组事物:是:是UML模型的组织部分,描述事物的模型的组织部分,描述事物的 组织结构,它的作用是为了降低模型复杂性。组织结构,它的作用是为了降低模型复杂性。 包包(package):是把模型元素组织成组的机制。结构事:是把模型元素组织成组的机制。结构事 物、行为事物甚至其他分组事物都可以放进包内。物、行为事物甚至其他分组事物都可以放进包内。 注释事物注释事物:是:是UML模型的解释部分,用来对模型模型的解释部分,用来对模型 中的元素进行说明和解释。中的元素进行说明和解释。 注解注解:对元素进行约束或解释的简单符号。:对元素进行约束或解释的简单符号。 10. 3 UML的关系的

11、关系 UML中常见的关系有依赖、关联、泛化和实现四中常见的关系有依赖、关联、泛化和实现四 种,还有聚合、复合等关系。种,还有聚合、复合等关系。 依赖关联泛化实现 聚合聚合(状态)迁移 10. 3 UML的关系(续)的关系(续) 依赖依赖(dependency)是两个事物之间的语义关系,是两个事物之间的语义关系, 其中一个事物其中一个事物(独立事物独立事物)发生变化,会影响到另发生变化,会影响到另 一个事物一个事物(依赖事物依赖事物)的语义。的语义。 关联关联(association)是一种结构关系,它指明一个是一种结构关系,它指明一个 事物的对象与另一个事物的对象间的联系。事物的对象与另一个事

12、物的对象间的联系。 泛化泛化(generalization)是一种特殊是一种特殊/一般的关系。一般的关系。 也可以看作是常说的也可以看作是常说的继承继承关系。关系。 实现实现(realization)是泛化和依赖关系的结合,是泛化和依赖关系的结合,是是 类元之间的语义关系。类元之间的语义关系。 1. 依赖关系依赖关系 依赖关系依赖关系 描述的是两个模型元素(类、组合、用例等)之间的描述的是两个模型元素(类、组合、用例等)之间的 语义上的连接关系,其中一个是独立的,另一个非独语义上的连接关系,其中一个是独立的,另一个非独 立的(或依赖的)。立的(或依赖的)。 比如,某个类中使用另一个类中的对象作

13、为操作中的参数,则这比如,某个类中使用另一个类中的对象作为操作中的参数,则这 二者之间就具有依赖关系。二者之间就具有依赖关系。 表示表示 用用带箭头的虚线带箭头的虚线连接两个有依赖关系的模型元素,箭连接两个有依赖关系的模型元素,箭 头指向独立的类,箭头旁边还可带一个版类标签,具头指向独立的类,箭头旁边还可带一个版类标签,具 体说明依赖的种类。体说明依赖的种类。 例:类例:类A依赖于类依赖于类B,其依赖关系为友元。,其依赖关系为友元。 细化关系细化关系 细化关系细化关系 当对同一事物在不同抽象层次上描述时,这些描述之当对同一事物在不同抽象层次上描述时,这些描述之 间具有细化关系。间具有细化关系。

14、 假设两个元素假设两个元素A和和B描述同一个事物,它们的区别是抽象层次不同,描述同一个事物,它们的区别是抽象层次不同, 如果如果B是在是在A的基础上的更详细的描述,则称的基础上的更详细的描述,则称B细化了细化了A,或称,或称A细细 化成了化成了B。 表示表示 用用带空心箭头的虚线带空心箭头的虚线连接两个有细化关系的模型元素,连接两个有细化关系的模型元素, 箭头指向被细化的类。箭头指向被细化的类。 作用作用 细化主要用于模型之间的合作,表示各开发阶段不同细化主要用于模型之间的合作,表示各开发阶段不同 抽象层次的模型的相关性,常用于跟踪模型的演变。抽象层次的模型的相关性,常用于跟踪模型的演变。 依

15、赖关系的不同变体依赖关系的不同变体 从一个对象中提取一些特性,并用类方从一个对象中提取一些特性,并用类方 法表示。法表示。 为模板参数指定值,以定义一个新的模板元为模板参数指定值,以定义一个新的模板元 素。素。 对不同类或包进行性质相似融合。对不同类或包进行性质相似融合。 允许另一个对象对本对象的访问。允许另一个对象对本对象的访问。 声明使用一个模型元素需要用到已存在的另一声明使用一个模型元素需要用到已存在的另一 个模型元素,这样才能正确实现使用者的功能个模型元素,这样才能正确实现使用者的功能(包括调用、实包括调用、实 例化、参数、发送例化、参数、发送)。 声明不同模型中元素的之间的存在一些连

16、接。声明不同模型中元素的之间的存在一些连接。 允许一个包访问另一个包的内容。允许一个包访问另一个包的内容。 声明一个类调用其他类的操作的方法。声明一个类调用其他类的操作的方法。 依赖关系的不同变体(续)依赖关系的不同变体(续) 声明一个实例可从另一个实例导出。声明一个实例可从另一个实例导出。 允许一个元素访问另一个元素,不管被访允许一个元素访问另一个元素,不管被访 问的元素是否具有可见性。问的元素是否具有可见性。 允许一个包访问另一个包的内容,并为允许一个包访问另一个包的内容,并为 被访问组成部分增加别名。被访问组成部分增加别名。 关于一个类的方法创建了另一个类关于一个类的方法创建了另一个类

17、的实例声明。的实例声明。 一个操作和它参数之间的关系。一个操作和它参数之间的关系。 说明和其实之间的关系。说明和其实之间的关系。 声明具有两个不同语义层次上的元素之间声明具有两个不同语义层次上的元素之间 的映射。的映射。 信号发送者和信号接收者之间的关系。信号发送者和信号接收者之间的关系。 2. 关联(关联(association) 关联关联,一种结构关系,表示两个或多个类的实例之间的连,一种结构关系,表示两个或多个类的实例之间的连 接关系。接关系。 关联的修饰:关联的修饰:名称、角色、多重性名称、角色、多重性 关联分为关联分为:普通关联、限定关联、关联类、聚合:普通关联、限定关联、关联类、聚

18、合 关联的重数:关联的重数:表示多少个对象与对方对象相连接。表示多少个对象与对方对象相连接。 常用的常用的重数符号重数符号有:有: “0.1” 表示零或表示零或1 “0.*”或或“*” 表示零或多个表示零或多个 “1.*” 表示表示1或多个或多个 “1,3,7” 表示表示1或或3或或7(枚举型)(枚举型) 重数的默认值为重数的默认值为1。 关联的角色关联的角色 关联的角色关联的角色 在任何关联中都会涉及到参与此关联的对象所扮演的在任何关联中都会涉及到参与此关联的对象所扮演的 角色(即起的作用),在某些情况下显式标明角色名角色(即起的作用),在某些情况下显式标明角色名 有助于别人理解类图。有助于

19、别人理解类图。 如果没有显式标出角色名,则意味着用类名作为角色如果没有显式标出角色名,则意味着用类名作为角色 名。名。 普通关联普通关联 普通关联普通关联,最常见的关联,只要类与类之间存在连接关最常见的关联,只要类与类之间存在连接关 系就可以普通关联表示。系就可以普通关联表示。 普通关联的表示普通关联的表示 二元关联:二元关联: 用两个类之间的一条直线来表示,直线上可写上关联名。用两个类之间的一条直线来表示,直线上可写上关联名。 多元关联多元关联 指三个或三个以上类之间的关联。指三个或三个以上类之间的关联。 由一个菱形,以及由菱形引出的通向各个相关类的直线组成。由一个菱形,以及由菱形引出的通向

20、各个相关类的直线组成。 关联名(如果有的话)可标在菱形的旁边,在关联的端点也可关联名(如果有的话)可标在菱形的旁边,在关联的端点也可 以标上多重性等信息。以标上多重性等信息。 在类图中还可表示关联的重数,即参与关联的对象的在类图中还可表示关联的重数,即参与关联的对象的 个数。个数。 普通关联示例普通关联示例 人员人员公司公司 二元关联的例子二元关联的例子 项目项目语言语言 人人 三元关联的例子三元关联的例子 限定关联限定关联 限定关联限定关联 通常用在一对多或多对多的关联关系中,可以把模型通常用在一对多或多对多的关联关系中,可以把模型 中的多重性从一对多变成一对一,或将多对多简化成中的多重性从

21、一对多变成一对一,或将多对多简化成 多对一。多对一。 表示:表示: 把限定词放在关联关系末端的一个小方框内。把限定词放在关联关系末端的一个小方框内。 目录目录文件文件 目录目录文件文件 文件名文件名 目录与文件的关联 目录与文件的受限关联 关联类关联类 关联类关联类 用来描述关联的属性。用来描述关联的属性。 关联类表示:关联类表示: 关联类通过一条虚线与关联连接。关联类通过一条虚线与关联连接。 例:一个公司类与属下一个或多个员工之间的关联。通过例:一个公司类与属下一个或多个员工之间的关联。通过 关联类给出关联关联类给出关联“job”的细节。的细节。 companypersonnal job d

22、escription dateHired salary 关联类关联类 11.* employeremployee 聚合聚合 聚合聚合,又称聚集,是一种特殊的关联。,又称聚集,是一种特殊的关联。 描述了整体和部分之间的结构关系。描述了整体和部分之间的结构关系。 在需求陈述中,若出现在需求陈述中,若出现“包含包含”、“组成组成”、“分分 为为部分部分”等字句,往往意味着存在聚合关系。等字句,往往意味着存在聚合关系。 共享聚合共享聚合: 如果在聚合关系中处于部分方的实例可同时参与多个如果在聚合关系中处于部分方的实例可同时参与多个 处于整体方实例的构成。处于整体方实例的构成。 表示:在表示关联关系的直

23、线末端紧挨着整体类的地表示:在表示关联关系的直线末端紧挨着整体类的地 方画一个空心菱形。方画一个空心菱形。 复合聚合复合聚合: 如果部分类实例完全隶属于整体类实例。如果部分类实例完全隶属于整体类实例。 剧组剧组演员演员 *1.* 导航导航 导航导航:是关联关系的一种特性,它通过在关联的一个端是关联关系的一种特性,它通过在关联的一个端 点上加箭头来表示导航的方向。点上加箭头来表示导航的方向。 箭头可以是单向或双向。箭头可以是单向或双向。 导航主要在设计阶段使用,当关联具有双向可导航性导航主要在设计阶段使用,当关联具有双向可导航性 时,可以省略指示导航方向的箭头。时,可以省略指示导航方向的箭头。

24、课程课程学生学生 * 选课选课 3. 泛化泛化 泛化泛化 也就是继承关系,也称为也就是继承关系,也称为“is-a-kind-of”关系。关系。 用于描述父类与子类之间的关系。用于描述父类与子类之间的关系。 注意:泛化针对类型而不针对实例。注意:泛化针对类型而不针对实例。 表示表示: 用用一端为空心三角形的连线一端为空心三角形的连线表示泛化关系,三角形的表示泛化关系,三角形的 顶角紧挨着父类。顶角紧挨着父类。 分类分类 普通泛化:普通泛化:与继承概念基本相同与继承概念基本相同 受限泛化:受限泛化:可以给泛化关系附加约束条件,以进一步可以给泛化关系附加约束条件,以进一步 说明该泛化关系的使用方法或

25、扩充方法。说明该泛化关系的使用方法或扩充方法。 普通泛化普通泛化 普通泛化普通泛化 抽象类抽象类 多继承多继承 交通工具 abstract drive() 汽车 drive() 轮船 drive() 驱动车轮转动驱动螺旋浆转动 人 医生教授 医学教授 受限泛化受限泛化 受限泛化受限泛化 指泛化具有约束条件。指泛化具有约束条件。 预定义的约束有预定义的约束有4种(都是语义种(都是语义约束约束):): 多重多重:多重继承。:多重继承。 不相交不相交:与多重继承相反,一般的继承都是。:与多重继承相反,一般的继承都是。 完全完全:指父类的所有子类都已在类图中穷举出来。:指父类的所有子类都已在类图中穷举

26、出来。 不完全不完全 :与完全继承相反,是一般情况下默认的继承关系。:与完全继承相反,是一般情况下默认的继承关系。 4. 约束(约束(constraint) 约束,是各种模型元素的一种语义条件或限制。约束,是各种模型元素的一种语义条件或限制。 一条约束只能应用于同一类的元素一条约束只能应用于同一类的元素。 约束的表示:约束的表示: 通常通常由一对花括号括起来,花括号中为约束内容由一对花括号括起来,花括号中为约束内容。 如果一条约束涉及同一种类的多个元素,则要用虚线如果一条约束涉及同一种类的多个元素,则要用虚线 把所有受约束的元素框起来,并把该约束显示在旁边。把所有受约束的元素框起来,并把该约束

27、显示在旁边。 计本学生计本学生 软件工程软件工程 or 管理信息系统管理信息系统 4. 约束(续)约束(续) 通常约束分为:对泛化的约束、对关联的约束通常约束分为:对泛化的约束、对关联的约束 对泛化的约束对泛化的约束 应用于泛化的约束,显示在大括号里,若有多个约束,应用于泛化的约束,显示在大括号里,若有多个约束, 用括号隔开。用括号隔开。 如果没有共享,则用一条虚线通过所有继承线,并在如果没有共享,则用一条虚线通过所有继承线,并在 虚线的旁边显示约束。虚线的旁边显示约束。 对泛化的约束的两种表示方法:对泛化的约束的两种表示方法: 对泛化的约束的两种表示对泛化的约束的两种表示 constrain

28、t 1,constraint 2 Class A Class CClass BClass D constraint2,constraint 3 Class A Class BClass CClass D constraint 1 对泛化的约束对泛化的约束 对泛化的约束对泛化的约束有四种有四种 完全(完全(complete):说明泛化中所有子元素都已在模:说明泛化中所有子元素都已在模 型中说明,不允许再增加其它子元素。型中说明,不允许再增加其它子元素。 不完全(不完全(incomplete):说明不是泛化中所有子元素:说明不是泛化中所有子元素 都已说明,允许再增加其它子元素。都已说明,允许再增加

29、其它子元素。 不相交不相交/互斥(互斥(disjoint):父类对象不能有多于一个型:父类对象不能有多于一个型 的子对象。的子对象。 多重(多重(overlapping):给定父类对象可有多于一个型:给定父类对象可有多于一个型 的子对象,表示多重继承。的子对象,表示多重继承。 对关联的约束对关联的约束 对关联的约束对关联的约束有以下几种:有以下几种: 隐式(隐式(Implicit):只是概念性的,在对模型进行精化:只是概念性的,在对模型进行精化 时不再用。时不再用。 有序(有序(Ordered):具有多重性的关联一端的对象是:具有多重性的关联一端的对象是 有序的。有序的。 可变(可变(Chan

30、geable):关联对象之间的链是可变的:关联对象之间的链是可变的 (增删改)(增删改) 只增(只增(Addonly):可在任意时刻增加新的链接。:可在任意时刻增加新的链接。 冻结(冻结(Frozen):冻结已创建的对象,不能增删改它:冻结已创建的对象,不能增删改它 的链接。的链接。 Xor:“或约束或约束”,某时刻只有一个当前的关联实例。,某时刻只有一个当前的关联实例。 4. 约束(续)约束(续) 此外,还有对消息、链接角色和对象的约束和自此外,还有对消息、链接角色和对象的约束和自 定义约束。定义约束。 对消息、链接角色和对象的约束对消息、链接角色和对象的约束共有九个应用于共有九个应用于 交

31、互:交互: 全局的、局部的、参数、自我、投票、广播、创建、全局的、局部的、参数、自我、投票、广播、创建、 注销和临时。注销和临时。 自定义约束自定义约束则是指用户可按照一定的规则自定义则是指用户可按照一定的规则自定义 约束。约束。 5. 实现和注释实现和注释 实现关系实现关系 是一种模型元素(如类)与另外一种类型元素(如接是一种模型元素(如类)与另外一种类型元素(如接 口)连接起来,其中接口只是行为的说明而不是结构口)连接起来,其中接口只是行为的说明而不是结构 或者实现。或者实现。 注释注释 用于对用于对UML语言的元素或实体进行说明,解释和描述。语言的元素或实体进行说明,解释和描述。 通常用

32、自然语言进行注释。如右图所示。通常用自然语言进行注释。如右图所示。 有效用户有效用户验证验证 这是一个类这是一个类 人员人员 10.4 UML的图的图 UML规范定义了规范定义了5类(共类(共9种图)。种图)。 用例图用例图 静态图静态图 行为图行为图 交互图交互图 实现图实现图 UML的图形表示的图形表示图(续)图(续) 用例图用例图(Use Case diagram) 从用户角度描述系统功能,并指出各功能的操作者。从用户角度描述系统功能,并指出各功能的操作者。 静态图(静态图(Static diagram) 表示系统的静态结构。包括表示系统的静态结构。包括类图类图、对象图对象图、包图包图。

33、 行为图(行为图(Behavior diagram) 描述系统的动态模型和组成对象间的交互关系。描述系统的动态模型和组成对象间的交互关系。 包括包括状态图状态图、活动图活动图。 交互图(交互图(Interactive diagram) 描述对象间的交互关系。包括描述对象间的交互关系。包括顺序图顺序图、合作图合作图。 实现图(实现图(Implementation diagram) 用于描述系统的物理实现。包括用于描述系统的物理实现。包括构件图构件图、部件图部件图。 10.4.1 用例图用例图 用例图用例图(Use Case diagram) 从用户角度描述系统功能,并指出各功能的执行者。从用户角

34、度描述系统功能,并指出各功能的执行者。 描述了待开发系统的功能需求。主要用于静态建模阶描述了待开发系统的功能需求。主要用于静态建模阶 段(主要是业务建模和需求建模)。段(主要是业务建模和需求建模)。 列出系统中的用例和系统外的参与者,并显示哪个参列出系统中的用例和系统外的参与者,并显示哪个参 与者参与了哪个用例的执行(或称为发起了哪个用与者参与了哪个用例的执行(或称为发起了哪个用 例)。例)。 主要元素主要元素:用例、执行者及其之间的联系。:用例、执行者及其之间的联系。 10.4.1 用例图(续)用例图(续) 用例用例(Use-case) 描述执行者想要系统完成的事情。描述执行者想要系统完成的

35、事情。 实质是用户与计算机系统之间的一次典型的交互作用,实质是用户与计算机系统之间的一次典型的交互作用, 它代表的是系统的一个完整的功能。它代表的是系统的一个完整的功能。 执行者执行者/参与者参与者(Actor) 是同系统交互的所有事物,如人、其它软件、数据存是同系统交互的所有事物,如人、其它软件、数据存 储、硬件设备或网络等。储、硬件设备或网络等。 每个执行者定义一种特定每个执行者定义一种特定角色角色。 贷款贷款 用例图的图形符号用例图的图形符号 用例图用例图 示例示例 买饮料买饮料 供货供货 取货款 客户客户 供货人供货人 收银员收银员 售货系统用例图售货系统用例图 例例1:参与者之间的泛

36、化关系:参与者之间的泛化关系 参与者:经理,安全主管,保安:经理,安全主管,保安 用例:管理人事,批准预算,批准安全证书,监:管理人事,批准预算,批准安全证书,监 视周边视周边 在参与者之间不存在泛化关系的情况下,各个参与者参与在参与者之间不存在泛化关系的情况下,各个参与者参与 用例的情况分别是:经理参与用例管理人事和批准预算;用例的情况分别是:经理参与用例管理人事和批准预算; 安全主管参与用例批准安全证书;保安参与用例监视周边。安全主管参与用例批准安全证书;保安参与用例监视周边。 由于安全主管与经理,安全主管与保安之间泛化关系的存由于安全主管与经理,安全主管与保安之间泛化关系的存 在,意味着

37、安全主管可以担任经理和保安的角色,就能够在,意味着安全主管可以担任经理和保安的角色,就能够 参与经理和保安参与的用例。这样,安全主管就可以参与参与经理和保安参与的用例。这样,安全主管就可以参与 全部全部4个用例。但经理或者保安却不能担任安全主管的角个用例。但经理或者保安却不能担任安全主管的角 色,也就不能参与用例批准安全证书。色,也就不能参与用例批准安全证书。 例例2:用例之间扩展和包含关系:用例之间扩展和包含关系 用例的上下文是:用例的上下文是:短途旅行但汽车的油不足以应短途旅行但汽车的油不足以应 付全部路程。那么为汽车加油的动作在旅行的每付全部路程。那么为汽车加油的动作在旅行的每 个场景个

38、场景( (事件流事件流) )中都会出现,不加油就不会完成中都会出现,不加油就不会完成 旅行。吃饭则可以由司机决定是否进行,不吃饭旅行。吃饭则可以由司机决定是否进行,不吃饭 不会影响旅行的完成。不会影响旅行的完成。 例:金融贸易系统用例图例:金融贸易系统用例图 销售人员销售人员 设置边界设置边界 贸易经理贸易经理 营销人员营销人员 风险分析风险分析 交易估价交易估价 进行交易进行交易 超越边界超越边界 更新账目更新账目 记账系统记账系统 扩展扩展 评价评价 使用使用 使用使用 10.3.2 静态图静态图 静态图静态图,表示系统的静态结构。,表示系统的静态结构。 类图类图(Class diagra

39、m) 显示了类(及其接口)、类的内部结构以及与其他类显示了类(及其接口)、类的内部结构以及与其他类 的关系(关联、泛化、依赖等)。的关系(关联、泛化、依赖等)。 描述的是一种静态关系,在系统的整个生命期内都是描述的是一种静态关系,在系统的整个生命期内都是 有效的。有效的。 对象图对象图(Object diagram) 是类图的实例,它使用几乎与类图完全相同的图示符是类图的实例,它使用几乎与类图完全相同的图示符 号。号。 静态图的图形符号静态图的图形符号 1. 类图类图 类图类图 其中的其中的“类类”与面向对象语言中的类的概念是对应的,与面向对象语言中的类的概念是对应的, 是对现实世界中的事物的

40、抽象。是对现实世界中的事物的抽象。 2. 类图中的事物类图中的事物 类类 从上到下分为三部分,分别是类名、属性和操作。类 名是必须有的 类如果有属性,则每一个属性都必须有一个名字,另 外还可以有其它的描述信息,如可见性、数据类型、 缺省值等 类如果有操作,则每一个操作也都有一个名字,其它 可选的信息包括可见性、参数的名字、参数类型、参 数缺省值和操作的返回值的类型等 类图类图 Account - balance : double = 1 + Deposit(amount : double) : int + ComputeInterest() : double 可见性可见性 -代表private

41、 +代表public #代表protected 也可以使用图形表示 返回值类型返回值类型 操作名称操作名称 斜体为抽象操作 缺省值缺省值 类名类名 斜体为抽象类 属性名称属性名称 参数列表参数列表 类图中的事物类图中的事物 接口:接口:一组操作的集合,只有操作的声明而没有实现 抽象类:抽象类:不能被实例化的类,一般至少包含一个抽象操作 模版类:模版类:一种参数化的类,在编译时把模版参数绑定到不同 的数据类型,从而产生不同的类 Shape (标准 图形) Shape + Draw () (变体图形) 接口 Vehicle - fMaxSpeed : float + Start() : int +

42、 Stop() : int 抽象类 模版参数模版参数 模版类 3. 类图中的关系类图中的关系 关联:关联:具有方向、名字、角色和多重性等信息。 聚合、组合 泛化:泛化:即继承关系。 实现:实现:对应于类和接口之间的系统。 依赖:依赖:描述了一个类的变化对依赖于它的类产生影响的情况。 有多种表现形式,例如绑定、友元等。 4. 类图与代码的映射类图与代码的映射 类的映射类的映射 关联关系的映射关联关系的映射 泛化关系的映射泛化关系的映射 实现关系的映射实现关系的映射 依赖关系的映射依赖关系的映射 (1) 类的映射类的映射 Vehicle abstract - fMaxSpeed : float +

43、 + + Start () Stop () Run (float fSpeed) : int : int : int C+代码:代码: class Vehicle public: virtual int Start() = 0; virtual int Stop() = 0; virtual int Run(float fSpeed) = 0; private: float fMaxSpeed; ; Java代码:代码: public abstract class Vehicle public abstract int Start(); public abstract int Stop();

44、public abstract int Run(float fSpeed); private float fMaxSpeed; C+代码:代码: class Dialog private: Button btnOK; Button btnCancel; TextBox txtInfo; ; class Button; class TextBox; (2) 关联关系的映射关联关系的映射 TextBoxButton Dialog - btnOK : Button - btnCancel : Button - txtInfo : TextBox (3) 泛化关系的映射泛化关系的映射 C+代码:代码:

45、 class SavingsAccount : public Account ; Java代码:代码: public class SavingsAccount extends Account (4) 实现关系的映射实现关系的映射 Shape + Draw () Circle - - ptCenter nRadius : Point : int + Draw () Rectangle - - - ptUpperLeft nWidth nHeight : Point : int : int + Drarw () C+代码:代码: class Shape public: virtual void D

46、raw() = 0; ; class Circle : public Shape public: void Draw(); private; Point ptCenter; int nRadius; ; Java代码:代码: public interface Shape public abstract void Draw(); public class Circle implements Shape public void Draw(); private Point ptCenter; private int nRadius; (5) 依赖关系的映射依赖关系的映射 T Stack - size

47、 : int + Push(elem : T) : int + Pop() : int + GetTop() : const T public: int Push(T elem); int Pop(); const T ; typedef Stack FloatStack; C+代码(编译器生成):代码(编译器生成): class FloatStack private: int size; public: int Push(float elem); int Pop(); const float ; 5. 类图示例类图示例 图形编辑器图形编辑器 图形编辑器一般都具有一些基本图形,如直线、矩形等,

48、图形编辑器一般都具有一些基本图形,如直线、矩形等, 用户可以直接使用基本图形画图,也可以把基本图形组合用户可以直接使用基本图形画图,也可以把基本图形组合 在一起创建复杂图形在一起创建复杂图形 如果区别对待基本图形和组合图形,会使代码变得复杂,如果区别对待基本图形和组合图形,会使代码变得复杂, 而且多数情况下用户认为二者是一样的而且多数情况下用户认为二者是一样的 组合模式可以用相同的方式处理两种图形组合模式可以用相同的方式处理两种图形 Graphics: 基本图形和组合图形的父类,声明了所有图形共同基本图形和组合图形的父类,声明了所有图形共同 的操作,如的操作,如Draw;也声明了专用于组合图形

49、管理子图形的操;也声明了专用于组合图形管理子图形的操 作,如作,如Add、Remove。 Line、Rectangle: 基本图形类。基本图形类。 GroupGraphics: 组合图形类,与父类有组合关系,从而可以组合图形类,与父类有组合关系,从而可以 组合所有图形对象组合所有图形对象(基本图形和组合图形基本图形和组合图形)。 5. 类图示例类图示例 演出售票系统演出售票系统 在用例驱动的开发过程中,通过分析各个用例及参与者得在用例驱动的开发过程中,通过分析各个用例及参与者得 到类图。分析用例图的过程中需要根据面向对象的原则设到类图。分析用例图的过程中需要根据面向对象的原则设 计类和关系,根

50、据用例的细节设计类的属性和操作。计类和关系,根据用例的细节设计类的属性和操作。 在这里只考虑以下三个用例:在这里只考虑以下三个用例: Buy tickets: 买个人票买个人票 Buy Subscription: 买套票买套票 Make charges: 信用卡付款信用卡付款 信息亭 Clerk Buy tickets Buy Subscription 信用卡服务商 Make charges 监督员 Survey sales 参与者 用例 Box Office 关系 SubscriptionSeries series : int IndividualReservation Ticket no

51、: int 3.6 0.1 3.6 0.1 1 0.1 1 0.1 Reservation date : Date Customer name : string phone : string 1.* 1 1.* 1 Seat no : int colomn : int row : int available : bool 1 1 1 1 Performance no : int date : Date time : Time 0.* 1 0.* 1 CreditCardService Charge(cardnumber, cost) kjosk ShowAvailability(seatlis

52、t) DemandPayment(cost) PrintTickets(performance, seats) EjectCard() BoxOffice Request(count, performance) Select(seats) InsertCard(cardnumber, password) Authorized() 对象图对象图 对象图的图形表示对象图的图形表示 对象图是类图的一种变形。除了在对象名下面要加下划线对象图是类图的一种变形。除了在对象名下面要加下划线 以外,对象图中所使用的符号与类图基本相同。以外,对象图中所使用的符号与类图基本相同。 对象图是类图的一种实例化。对象图

53、是类图的一种实例化。 对象图并不象类图那样具有重要的地位,但是利用它可以对象图并不象类图那样具有重要的地位,但是利用它可以 帮助我们通过具体的实例分析,更具体直观地了解复杂系帮助我们通过具体的实例分析,更具体直观地了解复杂系 统类图的丰富内涵。统类图的丰富内涵。 :TransactionTran:TransactionTran 对象名对象名:类名类名:类名类名对象名对象名 对象图对象图 示例示例 10.3.3 行为图行为图 行为图行为图,描述系统的动态行为和组成系统的对象,描述系统的动态行为和组成系统的对象 间的交互关系。间的交互关系。 状态图状态图(State diagram) 描述类的对象

54、可能具有的所有状态,以及引起状态变描述类的对象可能具有的所有状态,以及引起状态变 化的事件。化的事件。 通常,状态图是类的补充。通常,状态图是类的补充。 实际使用时,并不需要为每个类都画状态图。实际使用时,并不需要为每个类都画状态图。 活动图活动图(Activity diagram) 描述为满足用例要求而进行的动作以及动作间的关系。描述为满足用例要求而进行的动作以及动作间的关系。 是状态图的一个变种,它是另一种描述交互的方法。是状态图的一个变种,它是另一种描述交互的方法。 行为图的图形符号行为图的图形符号 10.3.3.1 状态图状态图 状态图状态图 说明对象在它的生命周期中响应事件所经历的状

55、态序说明对象在它的生命周期中响应事件所经历的状态序 列,以及它们对那些事件的响应。列,以及它们对那些事件的响应。 状态图状态图用于用于 揭示揭示Actor、类、子系统和组件的复杂特性。、类、子系统和组件的复杂特性。 为实时系统建模。为实时系统建模。 状态图的状态图的组成组成 状态状态:是指在这个对象的生命周期中的一个条件或状:是指在这个对象的生命周期中的一个条件或状 况,在此期间对象将满足某些条件、执行某些活动,况,在此期间对象将满足某些条件、执行某些活动, 或等待某些事件。或等待某些事件。 转移转移:是由一种状态到另一种状态的迁移。这种转移:是由一种状态到另一种状态的迁移。这种转移 由被建模

56、实体内部或外部事件触发。由被建模实体内部或外部事件触发。 1. 状态图中的事物状态图中的事物 状态:状态:其中活动说明处于该状态时,系统或对象要做的其中活动说明处于该状态时,系统或对象要做的 工作(见可选活动表)。工作(见可选活动表)。 转移转移 开始开始:初始状态(一个)初始状态(一个) 结束结束:终态(可多个)终态(可多个) 初态初态 终态终态 中间态中间态 状态名状态名 状态变量状态变量 活动活动 消息消息(属性属性)条件条件/动作动作 2. 状态的可选活动表状态的可选活动表 入口动作:入口动作:进入某一状态时执行的动作进入某一状态时执行的动作 语法:语法:entry/action 出口

57、动作:出口动作:离开某一状态时执行的动作离开某一状态时执行的动作 语法:语法:exit/action 内部转换内部转换:引起状态转换或自身转换,同时执行一个具引起状态转换或自身转换,同时执行一个具 体的动作,包括引起入口动作和出口动作被执行的转换。体的动作,包括引起入口动作和出口动作被执行的转换。 语法:语法: e(a:T)exp/action 外部转换外部转换:引起一个动作的执行但不引起状态的改变或引起一个动作的执行但不引起状态的改变或 不引起入口动作或出口动作的执行。不引起入口动作或出口动作的执行。 语法:语法: e(a:T)exp/action 3. 状态图示例状态图示例 Availab

58、le Locked Sold 初始状态 assigned to subscription lock time out unlock buy 状态 exchange 转换 触发器事件 图中图中包含以下状态包含以下状态 初始状态初始状态 Available状态、状态、Locked状态、状态、Sold状态状态 状态间的转移状态间的转移 初始状态初始状态Available状态状态 票被预订票被预订(lock):AvailableLocked 预定后付款预定后付款(buy):LockedSold 预定解除预定解除(unlock):LockedAvailable 预定过期预定过期(time out):Lo

59、ckedAvailable 直接购买直接购买(assigned to):AvailableSold 换其它票换其它票(exchang) ,该票重有效:,该票重有效:SoldAvailable 3. 状态图示例状态图示例网上银行登陆系统网上银行登陆系统 3. 状态图示例状态图示例网上银行登陆系统(续)网上银行登陆系统(续) 登陆要求提交个人社会保险号登陆要求提交个人社会保险号(SSN)和密码和密码(PIN) 经验证有效后登陆成功。经验证有效后登陆成功。 登陆过程包括以下状态登陆过程包括以下状态: 初态初态(Initial state) 获取社会保险号状态获取社会保险号状态(Getting SSN

60、) 获取密码状态获取密码状态(Getting PIN) 验证状态验证状态(Validating) 拒绝状态拒绝状态(Rejecting) 终态终态 (Final state) 3. 状态图示例状态图示例网上银行登陆系统(续)网上银行登陆系统(续) 状态转移的过程状态转移的过程 出发状态动作到达状态 Initial state移动鼠标到移动鼠标到 SSNGetting SSN Getting SSN 键入非键入非tab键,显示键入内容键,显示键入内容Getting SSN 键入键入tab键,或移动鼠标到键,或移动鼠标到BINGetting PIN 提交提交Validating Getting P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论