UML概述
UML简介
UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。
UML的定义包括UML语义和UML表示法两个部分。
(1) UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。
(2) UML表示法:UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
UML模型图构成:
-
事物(Things):UML模型中最基本的构成元素,是具有代表性的成分的抽象
构件事物: UML模型的静态部分,描述概念或物理元素 类:具有相同属性相同操作 相同关系相同语义的对象的描述 接口:描述元素的外部可见行为,即服务集合的定义说明 协作:描述了一组事物间的相互作用的集合 用例:代表一个系统或系统的一部分行为,是一组 动作序列的集合 构件:系统中物理存在,可替换的部件 节点:运行时存在的物理元素 行为事物:UML模型图的动态部分,描述跨越空间和时间的行为 交互:实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接 状态机:描述事物或交互在生命周期内响应事件所经历的状态序列 分组事物: UML模型图的组织部分,描述事物的组织结构 包:把元素组织成组的机制 注释事物: UML模型的解释部分,用来对模型中的元素进行说明,解释 注解:对元素进行约束或解释的简单符号
-
关系(Relationships):关系把事物紧密联系在一起;
依赖(dependency)是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义 关联(association)是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系 泛化(generalization)是一种特殊/一般的关系。也可以看作是常说的继承关系 实现(realization)是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约
-
图(Diagrams ):图是事物和关系的可视化表示;
用例图
用例图是被称为参与者的外部用户所能观察到的系统功能的模型图。 (《UML参考手册》)
用例图列出系统中的用例和系统外的参与者,并显示哪个参与者参与了哪个用例的执行(或称为发起了哪个用例)。
用例图多用于静态建模阶段(主要是业务建模和需求建模)。
用例图中的事务及解释
用例图中的关系及解释
类图
类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象
类图中的事务及解释
-
类
从上到下分为三部分,分别是类名、属性和操作。类名是必须有的。 类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等 类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等
-
关联关系
描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关联语义较弱。也有两种语义较强,分别是聚合和组合。
-
泛化关系
在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间
-
实现关系
对应于类和接口之间的关系
-
依赖关系
描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式,例如绑定(bind)、友元(friend)等
顺序图
顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件。
顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。 顺序图属于动态建模。
顺序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺序。
浏览顺序图的方法是:从上到下查看对象间交换的消息。
顺序图中的事物及解释
协作图
协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态情况。
协作图主要描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。
协作图可以表示类操作的实现。
协作图中的事物及解释
消息标签
协作图与顺序图的区别和联系
协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同。
顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。
协作图清楚地表示了对象间的关系(强调空间),但时间顺序必须从顺序号获得。
协作图和顺序图可以相互转化。
状态图
说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件的响应。
揭示Actor、类、子系统和组件的复杂特性。 为实时系统建模。
状态图的组成
状态
- 对象的状态是指在这个对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动,或等待某些事件。
转移
- 转移是由一种状态到另一种状态的迁移。这种转移由被建模实体内部或外部事件触发。
= 对一个类来说,转移通常是调用了一个可以引起状态发生重要变化的操作的
结果。
状态图中的事物及解释
状态的可选活动表
活动图
描述系统的动态行为。包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态。
活动图适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述。类似于传统意义上的流程图。
活动图主要用于:业务建模时,用于详述业务用例,描述一项业务的执行过程;设计时,描述操作的流程。
活动图事务
活动图关系
构件图
构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。
构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。
构件图中的事物及解释
构件图中的关系及解释
部署图
部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图。
如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。
部署图的两种表现形式:实例层部署图和描述层部署图