软件开发实习讲义UML.ppt

上传人:本田雅阁 文档编号:2641204 上传时间:2019-04-28 格式:PPT 页数:158 大小:4.19MB
返回 下载 相关 举报
软件开发实习讲义UML.ppt_第1页
第1页 / 共158页
软件开发实习讲义UML.ppt_第2页
第2页 / 共158页
软件开发实习讲义UML.ppt_第3页
第3页 / 共158页
亲,该文档总共158页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《软件开发实习讲义UML.ppt》由会员分享,可在线阅读,更多相关《软件开发实习讲义UML.ppt(158页珍藏版)》请在三一文库上搜索。

1、引言. 软件工程,软件危机 1.如何开发软件,以满足不断增长的, 日趋复杂的要求。 2.如何维护规模不断庞大的软件产品。 软件工程 软件工程是一门建立在系统化,规范化,数量化等工程原则和方法上的,关于软件开发各阶段的定义,任务和作业的工程学科。包括软件开发技术和软件项目管理,软件工程,1.需求分析阶段 2.系统分析与设计阶段 3.系统实现阶段 4.测试阶段 5.维护阶段,什么是模型?,定义:对问题的书面上的无歧义文字或图形的描述. 最杰出的模型:地图,什么是模型?,简言之,模型是对现实的简化。 (1)一个好的模型包括重要的因素,而忽略不相干的细节。 (2)每一个系统可以从不同的方面使用不同的模

2、型进行描述,因此每个模型都是对系统从语义上近似的抽象。 (3)模型可以是结构的、侧重于系统的组织,也可以是行为的、侧重于系统的动作。,为什么要建模?,软件建模与建模语言,1、模型是软件文档的重要成分 一个开发团队首要关注的不应是漂亮的文档、世界级的会议、响亮的口号或者华丽的源码,而是如何满足用户和项目的需要。 2、建模是软件工程的核心 一个狗窝一间平房一幢大楼 需求模型分析模型设计模型测试模型,建模的目标,通过建模,要实现以下4个目标: (1)便于开发人员展现系统。 可视化visualization (2)允许开发人员指定系统的结构或行为。 详述specification (3)提供指导开发人

3、员构造系统的模板。 构造construction (4)记录开发人员的决策。 文档化documentation,为什么单一视图解决不了问题?,工业化的成功经验是:从多个不同的层次和角度描述一个需要建造的产品。例如,建筑工业有:环境效果图、室内效果图、土建图、结构图、施工图等。,UML (Unified Modeling Language),统一UML最初由Rational软件公司和在这个领域中三个最优秀的方法论学者设计。它代表了这三人的经验和其它行业实践的革命性统一。 建模建模的一个重点是如何理解周围的世界。 语言UML起到了表达和交流知识的目的。,UML 的目标,提供易用的、表现力强的可视化

4、建模语言; 提供可扩展、可定制的核心扩充机制; 不依赖于特定的程序设计语言和开发过程; 提供形式化基础以利于理解建模语言; 促进面向对象工具的市场拓展; 支持高层开发概念(如协同、构架、模式、部件等); 集成最好的实践经验。,“4+1”视图,各种视图的UML 表示手段,逻辑视图:类图(class diagram);协同图(collaboration diagram);序列图(sequence diagram);状态图(statechart diagram);活动图(activity diagram); 进程视图:组件图(component diagram); 开发视图:组件图; 物理视图:部署

5、图(deployment diagram); 剧情:用例图(use case diagram);协同图;序列图。,UML 表示机制的层次结构:,1. 用例图 2. 类图 3. 行为图 3.1. 状态图 3.2. 活动图 3.3. 交互图 3.3.1. 序列图 3.3.2. 协同图,4. 实现图 4.1. 组件图 4.2. 部署图,第一节 用例图,1.1 用例图的概念 1.2 用例图建模技术 1.3 实例图书馆管理系统中的用例图,1.1.1 用例图概述,用例图显示谁将是相关的用户、用户希望系统提供什么服务以及用户需要为系统提供的服务,用来为系统的功能建模。 用例图最常用来描述系统以及子系统。,用

6、例图,用例图包含6个元素: 参与者(Actor) 用例(Use Case) 关联关系(Association) 包含关系(Include) 扩展关系(Extend) 泛化关系(Generalization),1.1.2 参与者,系统外部的一个实体。 参与用例的执行过程。 通过向系统输入或请求系统输入某些事件来触发系统的执行。 由参与用例时所担当的角色来表示。 每个参与者可以参与一个或多个用例。,参与者的种类:,系统用户 与所建造的系统交互的其他系统 一些可以运行的进程,如何寻找系统的参与者,谁将使用该系统的主要功能 谁将需要该系统的支持以完成其工作 谁将需要维护、管理该系统,以及保持该系统处于

7、工作状态 系统需要处理哪些硬件设备 与系统交互的是什么系统 谁或什么系统对本系统产生的结果感兴趣,参与者间的关系,在用例图中,使用泛化关系来描述多个参与者之间的公共行为。,参与者间的泛化关系示例:,1.1.3用例,用例的概念 外部可见的系统功能单元。 用例的用途是在不揭示系统内部构造的前提下定义连贯的行为,这些行为不但应包含正常使用的各种行为,而且应包括非正常使用时的各种行为。 一个用例代表软件系统功能的划分,代表系统角色和系统的一次交互。 不是需求或功能的规格说明,但是也展示和体现其所描述的过程中的需求情况。,识别用例,识别用例最好的方法就是从分析系统的参与者开始,考虑每个参与者是如何使用系

8、统的。 如何识别用例。 (1)特定参与者希望系统提供什么功能。 (2)系统是否存储和检索信息,如果是,由哪个参 与者触发。 (3)当系统改变状态时,是否通知参与者 (4)是否存在影响系统的外部事件。 (5)哪个参与者通知系统这些事件。,参与者与用例间的关系,关联关系 表示参与者和用例之间进行通信。 不同的参与者可以访问相同的用例。,用例与事件流,事件流是从用户角度描述执行用例的具体步骤。 简要说明:描述用例的作用 前提条件:用例之前必须要满足的条件 主事件流和其他事件流:用例的具体细节 事后条件:用例执行完后必须为真的条件,1.1.4用例间的关系,1 包含关系 2 扩展关系 3 泛化关系,用例

9、间的关系,包含关系 客户用例可以简单地包含提供者用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。 在具有包含关系的两个用例中,提供者用例不能单独存在,它只能以实例的形式存在于客户用例之中。 包含关系使得一个用例的功能可以在另一个用例中使用。,用例间的关系,扩展关系 扩展用例被定义为基础用例的增量扩展,扩展关系是把新的行为插入到已有用例中的方法。 基础用例提供扩展点以添加新的行为。 基础用例可以独立于扩展用例单独存在。基础用例即使没有扩展用例也是完整的,这点与包含关系有所不同。,用例间的关系,泛化关系 父用例也可以被特别列举为一个或多个子用例。 子用例表示父用例的特殊形式。 子用例从

10、父用例处继承行为和属性,还可以添加行为或覆盖、改变继承的行为。 体现了用例共同行为和特殊行为的关系。,用例间的关系,1.2 用例图建模技术,1.2.1 对语境建模 1.2.2 对需求建模,1.2.1 对语境建模,识别系统外部的参与者。 将类似参与者组织成泛化的结构层次。 在需要加深理解的地方,为每个参与者提供一个构造型。 将参与者放入到用例图中,并说明参与者与用例之间的通信路径。,1.2.2 对需求建模,识别系统的外部参与者来建立系统的语境。 考虑每一个参与者期望的行为或需要系统提供的行为。 把这些公共的行为命名为用例。 确定提供者用例和扩展用例。 对这些用例、参与者和它们之间的关系建模。 用

11、注释修饰用例。,1.3 实例图书馆管理系统的用例图,1.3.1 确定系统涉及的总体信息 1.3.2 确定系统的参与者 1.3.3 确定系统的用例 1.3.4 图书馆管理系统的用例图,1.3.1 确定系统涉及的总体信息,读者: 借书 还书 书籍预定,1.3.1 确定系统涉及的总体信息,图书馆管理员: 书籍借出处理 书籍归还处理 预定信息处理,1.3.1 确定系统涉及的总体信息,系统管理员: 增加书目 删除或更新书目 增加书籍 减少书籍 增加读者帐户信息 删除或更新读者帐户信息 书籍信息查询 读者信息查询,1.3.2 确定系统的参与者,首先分析系统所涉及的问题领域和系统运行的主要任务: 分析使用该

12、系统主要功能部分的是哪些人。 谁将需要该系统的支持以完成其工作。 系统的管理者与维护者。,1.3.2 确定系统的参与者,图书馆管理系统的参与者: 读者(借阅者) 图书馆管理员 图书馆管理系统维护者,1.3.3 确定系统的用例,1. 借阅者请求服务的用例 2. 图书馆管理员处理借书、还书等的用例 3. 系统管理员进行系统维护的用例,1. 借阅者请求服务的用例,登录系统 查询自己的借阅信息 查询书籍信息 预定书籍 借阅书籍 归还书籍,2. 图书馆管理员处理借书、还书的用例,处理书籍借阅 处理书籍归还 删除预定信息,3. 系统管理员进行系统维护的用例,查询借阅者信息 查询书籍信息 增加书目 删除或更

13、新书目 增加书籍 删除书籍 添加借阅者帐户 删除或更新借阅者帐户,1.3.4图书馆管理系统的用例图,1. 借阅者请求服务的用例图 2. 图书馆管理员处理借书、还书的用例图 3. 系统管理员进行系统维护的用例图,1. 借阅者请求服务的用例图,2. 图书馆管理员处理借书、还书的用例图,3. 系统管理员进行系统维护的用例图,第二节 类图,2.1 类图的概念 2.2 类图建模技术 2.3 实例图书馆管理系统的类图,2.1 类图的概念,描述类、接口、协作及它们之间关系的图。 显示系统中各个类的静态结构。,2.1.1 概述,类图的元素 类(Class) 接口(Interface) 协作(Collabora

14、tion) 依赖关系(Dependency) 泛化关系(Generalization) 关联关系(Association) 实现关系(Realization),2.1.2 类,面向对象系统组织结构的核心。 对一组具有相同属性、操作、关系和语义的对象的抽象。 包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。,2.1.2 类,1 名称 2 属性 3 操作 4 职责 5 约束 6 注释,类-名称,应该来自系统的问题域。 应该是一个名词,且不应该有前缀或后缀。 分为简单名称和路径名称。,类-属性,描述了类在软件系统中代表的事物(即对象)所具备的特性。 类可以有

15、任意数目的属性,也可以没有属性。 在UML中,类属性的语法为:,类-属性,1. 可见性 2. 属性名 3. 类型 4. 初始值 5. 属性字符串,类-属性-可见性类型:,公有(Public) “” 私有(Private)“” 受保护(Protected)“”,类-属性-名,每个属性都必须有一个名字以区别于类中的其他属性。 属性名由描述所属类的特性的名词或名词短语组成。 单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。,类-属性-类型,简单类型: 整型 布尔型 实型 枚举类型 系统中的其他类,类-属性-初始值,目的: 保护系统的完整性,防止漏掉

16、取值或被非法的值破坏系统的完整性。 为用户提供易用性。,类-属性-属性字符串,指定关于属性的其他信息。 任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。,类-操作,对类的对象所能做的事务的抽象。 一个类可以有任意数量的操作或者根本没有操作。 返回类型、名称和参数一起被称为操作签名。 在UML中,类操作的语法为:,类-操作,1. 可见性 2. 操作名 3. 参数表 4. 返回类型 5. 属性字符串,类-操作-可见性,类型: 公有(Public) “” 私有(Private) “” 受保护(Protected) “” 包内公有(Package) “”,类-操作

17、-名,用来描述所属类的行为的动词或动词短语。 单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。,类-操作-参数表,一些按顺序排列的属性定义了操作的输入。 是可选的,即操作不一定必须有参数才行。 定义方式:“名称:类型”。 若存在多个参数,将各个参数用逗号隔开。 参数可以具有默认值。,类-操作-返回类型,是可选的,即操作不一定必须有返回类型。 绝大部分编程语言只支持一个返回值。 具体的编程语言一般要加一个关键字void来表示无返回值。,类-操作-属性字符串,在操作的定义中加入一些除了预定义元素之外的信息。,类-职责,类或其他元素的契约或义务。

18、 自由形式的文本。 非形式化的方法。,类-约束,指定了类所要满足的一个或多个规则。 形式化的方法。,类-注释,注释可以包含图形也可以包含文本。,2.1.3 接口,在没有给出对象的实现和状态的情况下对对象行为的描述。 包含操作但不包含属性。 没有对外界可见的关联。 一个类可以实现一个或多个接口。,接口的类:,当一个接口是在某个特定类中实现时,使用该接口的类通过一个依赖关系与该接口的小圆圈相连接。,2.1.4 类之间的关系,1. 依赖关系: 类之间使用关系 2. 泛化关系: 类之间一般和特殊关系 3. 关联关系: 对象之间结构关系 4. 实现关系: 类中规格说明和实现之间关系,依赖关系,表示两个或

19、多个模型元素之间语义上的关系。 客户以某种形式依赖于提供者。提供者的改变会影响客户,称客户依赖于提供者。 关联、实现和泛化都是依赖关系。,泛化关系,存在于一般元素和特殊元素间的分类关系。 可以用于类、用例以及其他模型元素。 描述了一种“is a kind of” 的关系。,泛化关系,泛化的目的: 可以使子类共享父类的属性和操作,实现继承。 可以使子类的实例用于任何父类被声明使用的地方实现多态。,泛化关系 继承,泛化关系 多态,关联关系,一种结构关系。 指明事物的对象之间的联系。,关联关系,1. 名称(Name) 2. 角色(Role) 3. 多重性(Multiplicity) 4. 聚合关系(

20、Aggregation) 5. 组合关系(Composition) 6. 导航性(Navigation),关联关系名称,使用一个动词或动词短语来命名关联。 清晰而简洁地说明对象间关系。 关联的名称并不是必需的。,关联关系角色,关联关系中一个类对另一个类所表现出来的职责。 角色的名称应该是名词或名词短语,以解释对象是如何参与关系的。,关联关系多重性,指有多少对象可以参与该关联。 可以表达一个取值范围、特定值、无限定的范围或一组离散值。 格式:“minimummaximum” (均为Int型)。 赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。,关联关系聚合关系,一种特殊

21、类型的关联。 表示整体与部分关系的关联。 描述了“has a”的关系。,关联关系组合关系,聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。 成员对象的生命周期取决于聚合的生命周期。 聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。,关联关系导航性,描述一个对象通过链进行导航访问另一个对象,反过来不可以。 使用导航性可以降低类间的耦合度。 包括:单向关联和双向关联。,实现关系,一个元素完成另外一个元素的操作功能。 如接口类及其实现;接口没有属性,只有声明的操作方法(对方法没有实现部分),而由实现类具体定义实现部分。,泛化和实现都可以将一般描述与具体描述联系起来: 泛化将同一

22、语义层上的元素连接起来, 并且通常在同一模型内。 实现将不同语义层内的元素连接起来, 并且通常建立在不同的模型内。,绘制类图的步骤: 分析问题域,确定需求 寻找类 定义类的属性和操作 确定类之间的关系 精化类和类间的关系 绘制类图,2.2 类图建模技术,寻找类,使用名词/动词分析寻找类 收集相关信息 补充的需求规格说明 用例 项目词汇表 其他文档 分析信息 名词、名词短语 类或属性 动词、动词短语 操作,2.3 实例图书馆管理系统的类图,使用Rational Rose绘制类图的步骤 图书馆管理系统的类图,使用Rational Rose绘制类图的步骤,1. 创建类图 2. 加入类 3. 增加类的

23、属性 4. 增加类的方法,图书馆管理系统的类图,7个类: Item (书籍) Title (记录) Loan (罚款) Reservation (预订信息) Borrower (借阅者) Administrator (系统管理员) Librarian (图书管理员),图书馆管理系统的类图,第三节 状态图,3.1 状态机 3.2 状态图 3.3 状态 3.4 事件 3.5 转换 3.6 状态图建模技术 3.7 实例图书馆管理系统的状态图,状态机:用于描述一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。 状态图:用来描述状态机的,一个状态机可以用多张状态图来描述。,

24、门的状态,3.1 状态机,状态机是展示状态与状态转换的图。 状态机由状态、转换、事件、活动和动作5部分组成。 (1)状态表示一个模型在其生存期内的状况,一个状 态的生存期是有限的一个时间段。 (2)转换表示两个不同状态之间的联系,事件可以触 发状态之间的转换。 (3)事件是在某个时间产生的,可以触发状态转换。 (4)活动是在状态机中进行的一个非原子的执行,由 一系列动作组成。 (5)动作是一个可执行的原子计算,它导致状态的变 更或者返回一个值。,3.2 状态图,状态图主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。

25、状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。若干个状态由一条或者多条转换箭头连接,状态的转换由事件触发。组成UML的图形元素有状态、转换、初始状态、终结状态和判定等,一个简单的状态图如下图所示。,一个简单的状态图示意图,3.2.1 状态,状态是状态机的重要组成部分,它描述了状态机所建模对象的动态行为产生的结果。 状态由一个带圆角的矩形表示,状态图的图标可以分为3部分:名称、内部转换和嵌套状态图。,状态图的图标表示,(1)名称。名称表示状态的名字,通常用字符串表示。 (2)内部转换。在内部转换中可以包含进入或者退出此状态应该执行的活动或动作,它们将响应对象所接收到的事件,但是不改

26、变对象的状态。 (3)嵌套状态图。状态图中的状态有两种:一种是简单状态,简单状态不包含其他状态;一种是组成状态,组成状态是包含子状态的状态。,3.2.2 转换,转换用带箭头的直线表示,一端连接源状态,即转出的状态,箭头一端连接目标状态,即转入状态。转换可以标注与此转换相关的选项。,从图中可以看出,当源状态接收到一个事件,并且监护条件得到满足,则执行相应的动作,同时从源状态转换到目标状态。一个转换只允许一个事件,一个事件只允许一个动作。,3.2.3 初始状态,每个状态图都应该有一个初始状态。初始状态代表状态机的起始位置,初始状态只能作为转换的源,而不能作为转换的目标,用一个实心的圆来表示。初始状

27、态只允许有一个。,初始状态,3.2.4 终止状态,终止状态是模型元素的最后状态,是一个状态图的终止点。终止状态只能作为转换的目标,而不能作为转换的源。终止状态在一个状态图中可以有多个,它用一个含有实心圆的空心圆表示。,终止状态,3.2.5 判定,判定处在状态图中这样一个位置:工作流在此处按监护条件的取值而发生分支。 因为监护条件为布尔表达式,所以通常条件下的判定只有一个入转换和两个出转换,根据监护条件的真假可以触发不同的分支转换。,判定的示例,3.3 状态,状态描述了对象生命期中某个条件或者状况,在此期间对象将: 满足某些条件 等待某些事件 执行某些活动 对象在任何时候都会处于某种状态中,所有

28、对象都有状态。 对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。,3.3.1 概述,事实上,类对象的任何一个属性值都是一个状态,全部的状态构成一个庞大的状态空间。我们只关心那些明显影响对象行为的属性,以及由它们表达的对象状态,而不理睬那些与对象行为无关的状态。 状态分为简单状态和组成状态,状态包括状态名、活动、入口动作和出口动作等。,3.3.2 状态名 3.3.3 内部转换,内部转换只有源状态而没有目标状态,因此转换激发的结果并不改变状态本身。如果一个内部转换带有动作,动作也要被执行,但是由于没有状态改变发生,因此不需要执行入口和出口动作。 内部转换和自转换不同,虽然两者都不改变状

29、态本身,但是自转换会激发入口动作和出口动作的执行,而内部转换却不会。,3.3.4 入口动作与出口动作,入口动作和出口动作表示进入或退出某个状态所要执行的动作。入口动作用“entry/要执行的动作”表达,而出口动作用“exit/要执行的动作”表达。,3.3.5 简单状态,简单状态是指不包含其他状态的状态。简单状态没有子结构,但它可以具有内部转换、进入动作和退出动作等。,3.3.6 组成状态,组成状态可以使用 “或”关系分解为并发子状态,或者通过 “与”关系分解为互相排斥的顺序子状态。因此,嵌套的子状态可能是顺序子状态,也可能是并发子状态。如果包含顺序子状态的组成状态是活动的,则只有一个子状态是活

30、动的;如果包含并发子状态的组成状态是活动的,则与它正交的所有子状态都是活动的。,(1)顺序子状态 如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。,(2)并发子状态 有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。顺序子状态与并发子状态的区别在于并发子状态在同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。,3.3.7 历史状态,当离开一个组成状态重新进入此状态时不希望从它的子初始状态开始执行,而是希望直接进入上次离开组成状态时的

31、最后一个子状态,在这种情况下就要用到历史状态。 历史状态代表上次离开组成状态时的最后一个子状态,它用一个包含字母“H”的小圆圈表示。每当转换到组成状态的历史状态时,对象便恢复到上次离开该组成状态时的最后一个活动子状态,并执行入口动作。,3.4 事件,事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。 事件有多种,大致可以分为入口事件、出口事件、动作事件、信号事件、调用事件、修改事件、时间事件和延迟事件等几种。,(1)入口事件 入口事件表示一个入口的动作序列,它在进入状态时执行。 (2)出口事件 出口事件表示一个出口的动作序列,它在退出状态时执行。 (3)动作事件 动作事件也称为“

32、do事件”,它表示对一个嵌套状态机的调用。与动作事件相关的活动必定引用嵌套状态机,而非引用包含它的对象的操作。,(4)信号事件 信号是两个对象之间的通信媒介,信号的接收是信号接收对象的一个事件。 (5)调用事件 调用事件是一个对象对调用的接收,这个对象用状态的转换而不是用固定的处理过程实现操作。调用事件至少涉及两个以上的对象,一个对象请求调用另一个对象的操作。,(6)修改事件 修改事件依靠特定属性值的布尔表达式所表示的条件满足来触发状态的转换。监护条件与修改事件的区别在于监护条件只是在引起转换的触发器事件触发时和事件接收者对事件进行处理时被赋值一次,而修改事件则可以被多次赋值直到条件为真,多次

33、赋值满足条件后转换也会被激发。,(7)时间事件 时间事件代表时间的流逝。时间事件既可以被指定为绝对形式,也可以被指定为相对形式。 (8)延迟事件 延迟事件是在本状态不处理,要推迟到另一个状态才处理的事件。,3.5 转换,转换表示两个状态之间的一种关系,当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转变,转向另一个称之为目标状态的状态。当发生转换时,转换进入的状态为活动状态,转换离开的状态变为非活动状态。 转换通常分为外部转换、内部转换、完成转换和复合转换4种。一个转换一般包括5部分的信息:源状态、目标状态、触发事件、监护条件和动作。,3.5.1 外部转

34、换,外部转换是一种改变对象状态的转换,它是最常见的一种转换。外部转换用从源状态到目标状态的箭头表示。下图描述了一个火车上的卫生间的简单状态转换,图中箭头上标注的都是引发状态转换的外部事件。这种转换就称之为外部转换。,3.5.2 内部转换,内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。内部转换的激发规则和改变状态的外部转换的激发规则相同,如果一个内部转换带有动作,动作也要被执行。内部转换用于对不改变状态的插入动作建立模型。,完成转换又称为自转换,它是由状态中活动的完成引起的,是自然而然地完成的转换。 内部转换和自转换的区别:自转换是离开本状态后重新进入该状态,它会激发状态的入

35、口动作和出口动作的执行;而内部转换自始至终都不离开本状态,所以没有入/出口事件,也就不执行入/出口动作。,3.5.3 完成转换,3.5.4 复合转换,复合转换由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起。有判定参与的转换就是复合转换。除了简单的两个分支判定之外还可以有多条件的分支判定。多条件的分支判定又分为链式的和非链式的分支,这两种分支如下图所示。,链式分支,非链式分支,状态机描述了对象的具有事件驱动的动态行为,对象动作的执行、状态的改变都是以特定事件的发生为前提的,触发事件就是能够引起状态转换的事件。触发事件可以是信号、调用和时间段等。,3.5.5 触发事件,3.5.6

36、监护条件,转换可能具有一个监护条件,监护条件是触发转换必须满足的条件,它是一个布尔表达式。当事件被触发时,监护条件被赋值,如果布尔表达式的值为真,那么转换被触发,为假则不会引起转换,监护条件只能在触发事件发生时被赋值一次。,3.5.7 动作,动作是一组可执行语句或者计算处理过程。动作可以包含发送消息给另一个对象、操作调用、设置返回值、创建和销毁对象等。动作也可以是一个动作序列,即一系列简单的动作的组合。动作的执行时间非常短,与外界事件所经历的时间相比是可以忽略的,因此,在动作的执行过程中不能再插入其他事件。下表列出了UML中的各种动作。,UML中的各种动作,3.6 状态图建模技术,状态图一般用

37、于对系统中的某些对象和系统的行为建模。建模的时候要找出对象所处的状态、触发状态改变的动作,以及对象状态改变时应执行的动作。具体建模步骤如下: (1)找出适合用模型描述其行为的类 (2)确定对象可能存在的状态 (3)确定引起状态转换的事件 (4)确定转换进行时对象执行的相应动作 (5)对建模的结果进行相应的精化和细化,3.7 实例图书馆管理系统的状态图,3.7.1 使用Rose绘制状态图的步骤 3.7.2 图书馆管理系统的状态图,3.7.1 使用Rose绘制状态图的步骤,1. 创建状态图 2. 加入开始状态和终止状态 3. 增加状态 4. 增加转换 5. 增加历史状态,3.7.2 图书馆管理系统

38、中的状态图,在图书馆管理系统中,有明确状态转换的类包括:书籍和借阅者的帐户(相当于包含特定个人信息的电子借阅证)。可以在系统中为这两类事物建立状态图。,书的状态图,状态图说明: (1)New book:还未入库的新书。 (2)Delete:已经从书库里删除的书。 (3)Available:书籍处于可用状态,即可 以外借的状态。 (4)Reserved:预订状态。 (5)Borrowed:借出状态。,借阅者帐户的状态图,状态图说明: (1)New Borrower:新加入的借阅者的帐户。 (2)Account Available:借阅帐户为可用状态,即未达到所规定的书籍借阅数目上限。 (3)Ac

39、count Unavailable:借阅帐户为不可用状态,即所借的书籍已达到规定的书籍借阅数目上限,不能再借阅书籍了。 (4)Delete Account:个人帐户被删除状态。,第四节 部署图,4.1 概述 4.2 节点 4.3 关联关系 4.4 部署图建模技术 4.5 实例图书馆管理系统的部署图,4.1 概述,部署图描述了运行软件的系统中硬件和软件的物理结构。 部署图中通常包含2个元素: 节点(Node) 关联关系(Association) 部署图可以显示节点以及它们之间的必要连接,也可以显示这些连接的类型,还可以显示组件和组件之间的依赖关系,但是每个组件必须存在于某些节点上。,4.1 概述

40、,部署图示例:,4.2 节点,节点是在运行时代表计算资源的的物理元素。 节点通常拥有一些内存,并具有处理能力。 节点通过查看对实现系统有用的硬件资源来确定,这需要从能力和物理位置两方面来考虑。 在UML中,节点用一个立方体来表示。,4.2.1 节点的名称,每一个节点都必须有一个区别于其他节点的名称。节点的名称是一个字符串,位于节点图标的内部。 节点名称通常是从现实的词汇表中抽取出来的短名词或名词短语。 节点的名称有两种:简单名和路径名。,4.2.2 节点的种类,在实际的建模过程中,可以把节点分为两种类型: 处理器(Processor) 设备(Device),4.2.2 .1 处理器,处理器是能

41、够执行软件、具有计算能力的节点。,4.2.2 .2. 设备,设备是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务。,4.2.3 节点中的配置,部署图可以将节点和组件结合起来,以建模处理资源和软件实现之间的关系。 当组件驻留在某个节点时,可以将它建模在图上该节点的内部。 为显示组件之间的逻辑通信,需要添加一条表示依赖关系的虚线箭头。,4.2.3 节点中的配置,驻留在节点上的组件,4.2.3 节点中的配置,可以在节点和组件之间添加一条表示依赖关系的虚线箭头,并使用构造型来表示节点对组件的包容。,4.3 关联关系,部署图用关联关系表示各节点之间通信路径,表示为一条实线。 在连接硬件时

42、通常关心节点之间是如何连接的,因此关联关系一般不使用名称,而是使用构造型。,4.3 关联关系,关联关系示例:,4.4 部署图建模技术,对系统中的节点建模。 对节点之间的关联关系建模。 对驻留在节点上的组件建模。 对驻留在节点上的组件之间的依赖关系建模。 对建模的结果进行精化和细化。,部署图一般用于对系统的实现视图建模,建模时找出系统中节点以及它们之间的关联关系。,4.5 实例图书馆管理系统的部署图,4.5.1 使用Rational Rose绘制配置图的 步骤 4.5.2 图书馆管理系统的配置图,4.5.1 使用Rational Rose绘制配置图的 步骤,1. 打开配置图 2. 配置图工具栏按钮简介 3. 添加处理器 4. 增加处理器细节 5. 添加设备 6. 增加设备细节 7. 添加关联关系 8. 增加关联关系细节,4.5.2 图书馆管理系统的配置图,参考教材,蔡敏 徐慧慧 黄炳强 UML基础与ROSE建模教程 人民邮电出版社,2006.1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1