系列文章目录
文章目录
- 系列文章目录
- 前言
- [一、类图(class diagram)](#一、类图(class diagram))
- [二、对象图(object diagram)](#二、对象图(object diagram))
- [三、构件图(component diagram)](#三、构件图(component diagram))
- [四、活动图(activity diagram)](#四、活动图(activity diagram))
- [五、用例图(use case diagram)](#五、用例图(use case diagram))
- [六、顺序图(sequence diagram)](#六、顺序图(sequence diagram))
- [七、通信图(communication diagram)](#七、通信图(communication diagram))
- [八、部署图(deployment diagram)](#八、部署图(deployment diagram))
- [九、状态图(state diagram)](#九、状态图(state diagram))
- 总结
前言
UML是系统分析师考试的一个重要考点,需要考生掌握。但是有些考生,在学习的过程中会有这样的疑问,在敏捷开发时代,UML还有没有必要去学习?
UML还是有用的,主要用在设计和分析阶段,但是UML不适合用来做代码生成。图形化的方式传达信息的能力很强,但是通过图形化语言去做编程反而很困难。
对于UML有几种图,大家的第一反应可能都是类图。其实,还有用例图、顺序图、活动图、状态图、组件图等。这里提到的每一种图,都代表着工程的一个特定维度,它们的专注点是正交的,都有其的用处。使用UML来分析和设计,可以让大家对整个系统有个更全面的认知。
UML的主要作用和价值是用于OOAD(面向对象分析与设计)中的图形建模。UML包含了很多图形,敏捷开发可能会少用一些(OOD部分),但是如果完全不用,开发过程中多少都会有点问题。使用UML,可以清晰的表达出架构的整体规划是什么,他们的关系是什么,各自职责是什么。
一、类图(class diagram)
类图是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。用来表示类、接口以及它们之间的静态结构和关系。
在类图中,常见的有以下几种关系。
- 泛化(Generalization)
是一种继承关系,表示子类继承父类的所有特征和行为。 - 实现(Realization)
是一种类与接口的关系,表示类是接口所有特征和行为的实现。 - 关联(Association)
是一种拥有关系,它使得一个类知道另一个类的属性和方法。 - 聚合(Aggregation)
是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。 - 组合(Composition)
是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。 - 依赖(Dependency)
是一种使用关系,即一个类的实现需要另一个类的协助。
二、对象图(object diagram)
同类一样,对象在这里的概念与面向对象编程思想中的对象一样,它是类的实例。,是具有具体属性值和行为的一个具体事物。
面向对象技术已经席卷了整个世界,事实也去确实如此。作为一种程序设计方法,它的建立具有很多优点。基于构件的软件开发方法就是面向对象技术孕育出来的。采用这种方法建立一个系统时,首先建立一组类,然后通过增加已有构件的功能或者添加新的构件来逐步扩充系统,最后在建立一个新系统时,还可以重用已经建好的类。这样做可以大大削减系统开发时间。
使用UML可以建立起易于使用和易于理解的对象模型,以使程序员能够创建出这些模型所对应的软件。所以,UML对基于类开发的全过程都有益处。
和类图比较
类图 | 对象图 |
---|---|
在类中包含三部分,分别是类名、类的属性和类的操作 | 对象包含两个部分:对象的名称和对象的属性 |
类的名称栏只包含类名 | 对象的名称栏包含"对象名:类名" |
类的属性栏定义了所有属性的特征 | 对象的属性栏定义了属性的当前值 |
类中列出了操作 | 对象图中不包含操作内容,因为对属于同一个类的对象,其操作是相同的 |
类中使用了关联连接,关联中使用名称、角色以及约束等特征定义 | 对象使用链进行连接,链中包含名称、角色 |
类是一类对象的抽象,类不存在多重性 | 对象可以具有多重性 |
三、构件图(component diagram)
也叫组件图。是用来描述软件内部物理组成的一种图。一辆汽车由轮子、发动机等物理部件组成,一个软件往往也是由很多"物理部件"(如:控件、重用构件等)组成。
待开发的系统需要与第三方的系统、原有系统、某些老系统等交互,这时可用构件图描述交互要求。
四、活动图(activity diagram)
活动图(activity diagram,动态图)是阐明了业务用例实现的工作流程。业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。
活动图的基本元素:
动作状态(原子性的动作或操作执行状态,它不能被外部事物的转换中断,它要么执行要么不执行)
活动状态(非原子性,可以分解为其他子活动或者动作状态)
组合状态
分叉与结合
分支与合并
泳道(为了对活动的职责进行组织而在活动图中将活动状态分为不同的组)
对象流
五、用例图(use case diagram)
用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。用例图在各种开发活动中被广泛的应用,但是它最常用来描述系统及子系统。
当用例视图在外部用户出现以前出现时,它捕获到系统、子系统或类的行为。它将系统功能划分成对参与者(即系统的理想用户)有用的需求。而交互部分被称作用例。用例使用系统与一个或者多个参与者之间的一系列消息来描述系统中的交互。
用例图包含六个元素,分别是:参与者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。
用例图可一个包含注释和约束,还可一个包含包,用于将模型中的元素组合成更大的模块。有时,可以将用例的实例引入到图中。用例图模型如下所示,参与者用人形图标来标识,用例用椭圆来表示,连线表示它们之间的关系。
六、顺序图(sequence diagram)
UML顺序图一般用于:确认和丰富一个使用情境的逻辑。一个使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条备选线路;一个贯穿单个用例的完整流程,例如动作基本过程的逻辑描述,或是动作的基本过程的一部分再加上一个或多个的备用情境的逻辑描述。
七、通信图(communication diagram)
强调的是发送和接收消息的对象之间的组织结构。一个通信图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。使用协作图来说明系统的动态情况。协作图使描述复杂的程序逻辑或多个平行事务变得容易。
八、部署图(deployment diagram)
部署图(Deployment Diagram),也称为实施图,它和组件图一样,是面向对象系统的物理方面建模的两种图之一。组件图是说明组件之间的逻辑关系的,而部署图则是在此基础上更进一步,描述系统硬件的物理拓扑结构及在此结构上执行的软件。部署图可以显示计算节点的拓扑结构和通信路径、节点上运行的软件组件。
在UML中,部署图显示了系统的硬件和安装在硬件上的软件,以及用于连接异构计算机之间的中间件。部署图通常被认为是一个网络图或者物理架构图。
部署图常见的有制品 节点 设备 运行环境和部署规范
九、状态图(state diagram)
动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,
状态图中最常用的元素有4个,分别是:
- 开始:状态开始标记,用实心圆形表示。
- 结束:状态结束标记,用一个空心圆形中间嵌入一个实心原型表示。
- 状态:对象在某个时间上的状态,用圆角矩形表示。
- 转移:导致状态发生变化的事件,用实线箭线表示,箭头指向变化后的状态,在实线上用文字表示事件。
下图中分别表示有结束状态和没有结束状态的两种简单状态图
总结
- 用例图:从用户角度描述系统功能,并指出各功能的操作者。
- 静态图:包括类图和对象图。类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作,类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
- 行为图:描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图。状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件,状态图是对类图的补充,活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并进行活动。
- 交互图:描述对象间的交互关系,包括时序图和协作图。时序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用时序图;如果强调上下级关系,则选择协作图。
- 实现图:包括组件图和部署图。组件图描述代码部件的物理结构及各部件之间的依赖关系,组件图有助于分析和理解部件之间的相互影响程度;部署图定义系统中软硬件的物理体系结构。