《统一建模语言(UML)》由会员分享,可在线阅读,更多相关《统一建模语言(UML)(40页珍藏版)》请在金锄头文库上搜索。
1、统一建模语言(UML) UML(Unified Modeling Language)是 一种建模语言,是为面向对象开发系统的产品 进行可视化的说明和编制文档的方法。它是由 信息系统(IS,Information System) 和面向 对象领域的三位著名的方法学家:Grady Booch、 James Rumbaugh、和Ivar Jacobson提出的,由OMG 组织 (Object Management Group) 采纳作为业界标准。 UML 取代目前软件业众多的分析和设计方法 (Booch、 Coad、 Jacobson、 Odell、 Rumbaugh、 Wirfs-Brock 等)
2、,成为一种标 准,这是软件界第一次有了一个统一的建模语 言。 11.1 UML 简介1 UML 的产生和成长 UML发展历史大致可以概括为四个阶段: 第一阶段:面向对象的方法学家联合行动。1994年10月,Grady Booch和Jim Rumbaugh开始 致力于这一工作。 第二阶段:公司的联合行动。1996年, UML的开发者得到了来自公众的正面反 应,并倡议成立了UML成员协会,以完善、加强和促 进UML的定义工作。第三阶段:在OMG组织、控制下对UML规范进行的修订 和 改进,产生了UML1.2、1.3、1.4、1.5等版本。 第四阶段:目前所处阶段。目前所处阶段是本世纪开始以来的重大
3、修订,推出 了全新的版本2.0。2 UML的定义及目标 UML 是一种标准的图形化建模语言,它是面向对象分析与设 计的一种标准表示。 1、它是一种可视化的建模语言。2、它是一种建模语言规格说明,是一种表示的标准。3、不是过程也不是方法,但允许任何一种过程和方法使用它UML 主要作者提出的目标是:提供给用户一个易于使用和表达的可视化的建模语言,使他们 能够开发和交流有意义的模型。独立于任何开发语言。独立于任何 开发过程。简单并且可扩展,具有扩展和专有化机制,便于扩展, 无需对核心概念进行修改。提供了解建模语言的一个基本手段。支 持面向对象的设计与开发中涌现出的高级概念,例如协作、框架、 模式和构
4、件,强调在软件开发中对架构、框架、模式和构件的重用 。最佳的软件工程实践经验的集成。有利于面向对象工具的市场成 长。 3 UML 的应用领域 1在不同类型系统中的应用UML 常见的应用有:信息系统(Information System); 技术系统(Technical System); 嵌入式实时系统(Embedded Real-Time System);分布式系统(Distributed System); 系统软件(System Software);商业系统(Business System);在软件开发的不同阶段中的应用,UML适用于 系统开发过程中从需求规格描述到系统完成后 测试的不同阶段
5、。11.2 UML 语言概述 1 视图(views)视图用来表示被建模系统的各个方 面。视图由多个图(Diagrams)构成, 它不是一个图片(graph), 而是在某 一个抽象层上对系统的抽象表示。如果 要为系统建立一个完整的模型图,只需 定义一定数量的视图,每个视图表示系 统的一个特殊的方面就可以了。另外, 视图还把建模语言和系统开发时选择的 方法或过程连接起来。2 图(diagram)图由图片(graph)组成。图片是模型元 素的符号化。把这些符号有机地组织起来形成 的图,表示了系统的一个特殊部分或某个方面 。一个典型的系统模型应有多个各种类型的图 ,图是一个具体视图的组成部分,在画一个
6、图 时就相当于把这个图分配给某个视图了。依据 图本身的内容,有些图可能是多个视图的一部 分。UML 中包含用例图、类图、对象图、状 态图、顺序图、协作图、活动图、构件图、部 署图共九种。使用这九种图就可以描述世界上 任何复杂的事物,这充分地显示了UML 的多 样性和灵活性。 3 模型元素图为 一些通用的模型元素符号示例在图中使用的概念统称为模型元素。4 通用机制UML 语言利用通用机制为图附加一 些信息,这些信息通常无法用基本的模 型元素表示,常用的通用机制有修饰( adornment)、 笔记(note)和规格说 明(specification)等。 5 UML建模工具 随着UML的诞生与发
7、展,涌现出了 众多的UML建模工具。如Rational Rose 、Microsoft的 Microsoft Office Visio、 Jude、免费的UML工具BOUML、Sparx Systems的Enterprise Architect(EA)、使 用java编写的开源UML产品ArgoUml、 StartUML等等。 11.3 用例建模用例建模描述一个系统应该做什么,描述 的是外部参与者所理解的系统功能。构建用例 模型是通过开发者与客户或最终使用者对需求 规格说明达成的共识,明确系统的基本功能, 为后阶段的工作打下基础。用例模型的基本组成部件是用例、参与者 和系统。用例用于描述系统的
8、功能,也就是从 外部用户的角度,观察系统应支持哪些功能, 帮助分析人员理解系统的行为,它是对系统功 能的宏观描述。 1 用例图用例模型可以由若干个用例图组成 ,用例图中包含系统、参与者和用例等 三种模型元素。 2 参与者(actor)1)参与者是与系统交互的人或事2)寻找参与者通过回答下列的一些问题确定参与者:(1)使用系统主要功能的人是谁?(即主要参与者 )(2)需要借助于系统完成日常工作的人。(3)维护、管理系统,保证系统正常工作的人(次 要参与者)。(4)系统要控制哪些硬件设备?(5)系统需要与哪些其它系统交互?(6)对系统产生的结果感兴趣的人或事是哪些? 3 用例用例代表的是参与者感受
9、到的一个完整的功 能。UML 中的用例是动作步骤的集合。系统 中的每种可执行情况就是一个动作,每个动作 由许多具体步骤实现。1)用例的特征(1)用例总由参与者初始化,即:参与者必 须直接或间接地指示系统执行用例。(2)用例为参与者提供值。用例必须为参与 者提供实在的值,这个值能被参与者识别。(3)用例是一个完整的描述。 2寻找用例对于已识别的参与者,通过询问下列问题 就可发现用例: (1)参与者需要系统提供哪种功能?参与者需 要做什么? (2)参与者需要读取、产生、删除、修改或存 储系统中的某种信息吗? (3)系统中发生的事件需要通知参与者吗?或 者参与者需要通知系统某件事吗?这些事件( 功能
10、)能干些什么? (4)如果用系统的新功能处理参与者的日常工 作,是简单化了还是提高了工作效率?3) 用例的描述应包括下面几个方面: (1)用例的目标: 用例的最终任务是什么?想达到什么样的目标? (2)用例是怎样被启动(initiate)的: 哪个参与者在怎样的情况下启动执行用例?比如张三买 了车,是所以要投保的原因。 (3)参与者和用例之间的消息流: 参与者和用例之间的哪些消息是用来通知对方的?哪些 是修改或检索信息的?哪些是帮助用例做决定的?系 统和参与者之间的主消息流描述了什么问题?系统使用 或修改了哪些实体? (4)用例的多种执行方案: 在不同的条件或特殊情况下,用例能依当时条件选择一
11、种 合适的执行方案。 (5)如何通过给参与者一个值来结束用例。 4)用例之间的关系用例之间有扩展(extend)、使 用(use)、组合三种关系。扩展和使用 是继承关系的另一种体现形式。组合则 是把相关的用例打成包(package), 当作一个整体看待。11.4 类与对象建模 1 类和对象在面向对象建模技术中,我们采用分类的方法将 客观世界的实体映射为对象,并归纳成一个个类。、 对象和他们之间的关联是面向对象技术中最基本的元 素。在UML中,类和对象模型分别由类图和对象图表示。 2 类图和对象图类图是类图属于一种静态模型,是用类和 它们之间的关系描述系统的一种图示。 对象图是类图的一个实例。表
12、示在某一时 刻类的具体实例和这些实例之间的具体连接关 系。 3 关系类图由类和它们之间的关系组成,类与 类之间的关系有关联(association)、依赖( dependency)、泛化(generalization) 1) 关联关系关联表示两个类之间存在某种语义上的联 系,用于描述类与类之间的连接。根据不同 的含义关联可分为普通关联、递归关联 、限定关联、或关联、有序关联、三元 关联和聚合等七种。 2)聚合(aggregation)(一般聚合、共享 聚合、组合复合聚合)聚合是一种特殊形式的关联。聚合 表示类与类之间的整体与部分的关系。 3)泛化(generalization)泛化表示的是一般
13、描述和具体描述 之间的关系,具体描述建立在一般描述 的基础上,并对其进行了扩展。具体描 述与一般描述完全一致,具有其所有特 性、成员和关系。 4)依赖(Dependency)依赖是两个模型元素间的语义连接, 一个是独立的模型元素,一个是依赖的 模型元素。 5)细化(refinement)细化是UML中的术语,表示对事物 更详细一层的描述。两个元素A、B描述 同一件事物,它们的区别是抽象层次不同, 若元素B是在元素A的基础上的更详细的 描述,则称元素B细化了元素A,或称元素A 细化成元素B。 4 约束和派生(规则)UML 中的规则称为约束和派生。约 束用于限制一个模型,我们已经讨论过 的约束有或
14、关联、有序关联和继承约束 。派生用于描述某种事物的产生规则, 比如说一个人的年龄可以由该人的生日 和当前日期派生出来。一般说来,约束 和派生能应用于任何模型元素,但最常 用于属性、关联、继承、角色和时间 5 包对于一个复杂的系统,通常都是把它分为若干个较小的系 统(子系统)。解决这个问题的一个思路是将许多类集合成一个 更高层次的单位,形成一个高内聚、低耦合的类的集合。这个思路被松散地应用到许多对象技术中。 6 如何确定类 1)寻找类 在进行构造类图描述系统的工作时,首先要定义类,也 就是将系统要处理的数据抽象成类的属性,将处理数 据的方法抽象为操作。 2)类名 类的名字用黑体字书写在长方形的最
15、上面,给类命名时 最好能够反映类所代表的问题域中的概念。 3)定义属性 类的属性放在类名字的下方,用来描述该类的对象所具 有的特征。 4)定义操作 存取、或改变属性值、或执行某个动作都是操作。操作 通常又称为函数。 11.5 动态建模1 消息(massage)在面向对象技术中,对象间的交互是通过 对象间消息的传递来完成的。 2状态图(State Diagram)状态图(State Diagram)用来描述一 个特定对象的所有可能状态及其引起状 态转移的事件。大多数面向对象技术都 用状态图表示单个对象在其生命周期中 的行为。 3顺序图(Sequence Diagram )顺序图用来描述对象之间动
16、态的交互关系, 着重体现对象间消息传递的时间顺序。顺序图存在两个轴:水平轴表示不同的对象, 垂直轴表示时间。顺序图中的对象用一个带有 垂直虚线的矩形框表示,并标有对象名和类名。 垂直虚线是对象的生命线,用于表示在某段时间 内对象是存在的。对象间的通信通过在对象的 生命线间画消息来表示。消息的箭头指明消息 的类型。4 协作图(Collaboration Diagram)协作图主要描述相互合作的对象间的交互 关系和链接关系(一条链接是一个关联的实例 化)。 顺序图和协作图都用来描述对象间的交 互,但是侧重点不一样。顺序图强调的是时间 ,而协作图强调的是空间链接,显示真正的对 象以及对象间是如何联系在一起的,可以只显 示对象的内部结构,同顺序图一样,协作图也 可以说明操作的执行,用例的执行或系统中的 一次简单的交互情节。 5活动图(Activity Diagram)活动图使用状态图的符号,与状态 图有相同的开始点和结束点。活动图中 的状态称为动作状态,用圆角矩形表示 ,动作状态之间的转移用箭头表示。转 移上可以附加监护条件、发送子句和动 作表达式。1