UML学习归纳整理

写在前面

之前在学校比较系统的学习过统一建模语言UML,但长时间没使用遗忘了许多,最近因工作需要,所以对UML重新学习和梳理一下。UML可帮助我们做软件需求分析和软件设计的工作,会让你的需求分析或者软件设计工作更上一层楼。

UML的分类

主要分为两类:结构型的UML和行为型的UML

仅作参考,不同应用环境可能略有不同

其中基本不使用和很少会使用的我们不必深究,主要看实际应用较多的其他几种。

静态视图

1、 类元 类元是模型中的离散概念,拥有身份、状态、行为和关系。有几种类元包括类、接口和数据类型。其他几种类元是行为概念、环境事物、执行结构的具体化。这些类元中包括用例、参与者、构件、节点和子系统。图列出了几种类元和它们的功能。元模型术语类元中包括了所有这些概念。

2、类元之间关系 类元之间的关系有关联、泛化、各种形式的依赖关系,包括实现关系和使用关系。 关联:对象通常要和其他对象发生关联,关联可以具有多层形式。多重性问题(一对一、一对多)。在UML中关联用一条直线来表示。 泛化:一个类继承了其他类的属性和操作。在UML中泛化用“从之类画一条带空心三角形箭头的连线指向父类”来表示。 依赖:一个类使用了另一个类。在UML中依赖用“从依赖类到被依赖的带箭头的虚线”表示。 聚集是关联的一种,聚集对象由部分对象组成。也就是整体与部分关联。在UML中用“整体和部分之间用带空心菱形箭头的连线连接”来表示。 组合是一种特殊的聚集,在一个组合对象中,部分对象只能作为组合对象的一部分与组合对象同时存在。在UML中用“整体和部分之间用带实心菱形箭头的连线连接”来表示。 实现:类和接口之间的关系被称为实现。在UML中实现关系用一个带空心三角形箭头加虚线来表示,箭头指向接口。 关系的种类

图举例: 1.关联

2.依赖

3.限定关联

  1. 聚集和组成

5.泛化

6.实现关系

结构型的UML

(1)类图

请看下面这个类图:

某模具系统类图

此图截取自某模具管理系统的业务概念分析图,图中一个一个的矩形就是类,这些类之间有各种线条连接,这些线条表示类之间的关系。类图是分析业务概念的首选,类图可能是使用率最高的UML图。 再看下面这个Person类图,这时软件设计时用到的一个图:

Person类图

该Person类有以下属性(Attribute):Name(姓名),Sex(性别),Department(部门)等,有以下操作(Operation):Work(工作)等。类有属性和操作,但用类图分析业务模型时,往往不需要使用操作,如图1.1中的类就只有属性。 Attribute有特性、特征等译法,Operation也称作方法,但本书遵循UML中文术语标准,即Attribute为属性,Operation为操作。

关于类图的详细讲解,<a href="http://blog.csdn.net/wudalang_gd/article/details/53365240">请戳这里</a>

(2)构建图

构件图也叫组件图,两个名字均符合UML中文术语标准。 一辆汽车由轮子、发动机等物理部件组成,一个软件往往也是由很多“物理部件”(如:控件、重用构件等)组成的,构件图就是用来描述软件内部物理组成的一种图。下图是某权限构件设计图:

图右上方有这样标志 的矩形表示一个构件,构件可以再包含构件。 软件需求分析工作中,需要用到构件图的情况不是很多,以下情况除外:

  1. 待开发的系统需要与第三方的系统、原有系统、某些老系统等交互,这时可用构件图描述交互要求。
  2. 客户对软件设计有某些特殊要求,这时可用构件图来描述要求。 构件图有时不会单独使用,还会和部署图一起结合使用。

关于构建图的详细讲解,请戳这里

(3)部署图

部署图是用来描述系统如何部署、本系统与其他系统是怎样的关系的一种图,如下图:

某24小时便利店的管理系统部署图

图中一个个立体的矩形是部署图的“节点”,一个节点表示一个物理的设备,节点之间的线条表示节点间的物理连接关系。 大部分客户都会具备一定的IT基础环境(如具备局域网、一些服务器、某些软件平台等),软件系统需要基于当前的IT基础环境来规划,这时我们可以使用部署图来做这个规划。 分析系统的需求,不能忽略系统架构、部署、IT架构等方面的要求,我们要基于客户当前的IT基础环境,做一个最符合客户利益的规划。 要活用构件图、部署图来分析需求,需要具备一定的IT基础架构知识和软件设计知识,如果你还不具备相关知识,那么可以考虑抓紧补充相关知识。不过需求分析工作更多的还是分析业务,提炼功能性需求,这部分工作能做好是相当不容易的事情。对于技术方面的非功能性需求分析,可交由有技术背景的专业人士负责。

关于部署图的详细讲解,请戳这里

行为型的UML

(1)活动图

我们将起床到出门上班这个过程画成活动图,可能是这样的:

起床到出门上班的活动图

活动图中的一个圆边框框表示一个“活动”,多个活动之间的带箭头线条表示活动的先后顺序,该图只是表达了一个顺序流程,活动图还可以表达分支结构。如果你以前曾学过流程图的话,你会发现活动图和流程图很相似。活动图可能是三种能表示流程的UML图中最接近我们思维习惯的一种,下面来学习另外两种能表达流程的图。

关于活动图的详细讲解,请戳这里

(2)状态图

状态机图又叫状态图,但状态图这个译名并没有译出Machine的意思。 状态机图从某个物品的状态是如何变化的角度来展示流程,下图某请假条审批流程:

请假处理流程

整个请假审批流程是围绕“请假条”这个物体进行的,随着不同的审批阶段,请假条具备不同的状态。我们分析业务流程时会发现很多流程其实是围绕某个物品进行的,这时可考虑使用状态机图。

关于状态图的详细讲解,请戳这里

(3)顺序图

你去餐厅吃饭,向服务员点餐到服务员送菜上来,这个过程用顺序图可表示如下:

点菜的顺序图

该图有三个“小人”,每个“小人”下面的文字说明(如:顾客)表示其代表的角色。角色与角色之间有一些线条链接,表示角色之间是如何交互的。该图表示的意思是:顾客向服务员点菜后,服务员将点菜信息传递给厨师,然后厨师做菜,最后再由服务员送菜给你。 点菜过程涉及几个环节,每个环节均由不同的角色来负责,如果遇到类似的情况,你可以考虑使用顺序图来分析。用顺序图来分析的好处是能清晰表达整个过程所参与的角色,角色与角色之间的关系,各角色是如何被卷入这个过程当中的。

关于顺序图的详细讲解,请戳这里

(4)用例图

下图是用例图的示意图:

用例图表达的是什么角色通过软件系统能做什么事情,我们可以使用用例图系统地表达软件系统的绝大部分需求。

关于用例图的详细讲解,请戳这里

写在最后

以上一些基本不使用或很少使用的uml图没整理出来,通过本篇,可以大概熟悉UML各种图的用途了。

想了解更多关于uml的,可以参考下面这些: http://www.cnblogs.com/SanMaoSpace/p/5102529.html http://www.uml.org.cn/oobject/201309023.asp

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

有个AI陪你一起写代码,是种怎样的体验?| 附ICLR论文

后来,程序猿要写的代码越来越多,世界上便有了各种各样的API,来减少大家的工作量。有些功能,可以让API来帮我们实现。

1002
来自专栏快乐八哥

数据可视化-EChart2.0使用总结1

图表是企业级Web开发必不可少的一个功能点。也是“数据可视化的一个具体呈现”。今天看到阮一峰翻译的“数据可视化:基本图表”一文,同时梳理一下公司现在项目使用的E...

2665
来自专栏令仔很忙

软件工程---软件需求分析

   需求分析是软件定义时期的最后一个阶段,它的基本任务是准确回答“系统必须做什么?”

1222
来自专栏IT派

算法应用实践:如何用Python写一个贪吃蛇AI

这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过。但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了。 问题的关键在...

1980
来自专栏新智元

【深度学习框架的未来】李沐:AWS开源端到端AI框架编译器NNVM

【新智元导读】AWS AI主任科学家李沐今天在官博发表文章,介绍了一种新的编译器NNVM,可以大大简化新的AI前端框架和后端硬件的设计,在各种前端和后端为用户提...

3665
来自专栏机器学习算法与Python学习

254页教程《Writing Code for NLP Research》

EMNLP2018 254 页的《为NLP研究写出好代码》(Writing Code for NLP Research)的教程会给出答案。

1252
来自专栏PPV课数据科学社区

告诉你做数据分析必须学R的4个理由

论坛君:你很可能已经听说过 R,或许你知道 R 是一种编程语言,而且知道它与统计学有关,但它是否适合您呢?本文作者将试图向大家讲解他对R的看法,分享他认为试用开...

3406
来自专栏IT大咖说

当Elasticsearch遇见智能客服机器人

摘要 本次分享主要会介绍一下ES是如何帮我们完成NLP的任务的。在做NLP相关任务的时候,ES的相似度算法并不足以支撑用户的搜索,需要使用一些与语义相关的方法进...

6016
来自专栏PPV课数据科学社区

做数据分析必须学R语言的4个理由

R 是一种灵活的编程语言,专为促进探索性数据分析、经典统计学测试和高级图形学而设计。R 拥有丰富的、仍在不断扩大的数据包库,处于统计学、数据分析和数据挖掘发展的...

3766
来自专栏PPV课数据科学社区

【连载】R语言18讲(四)

? 前面讲到了怎么导入数据,获取数据,按照数据挖掘的流程,在我们导入数据之后接下来的工作便是对数据进行初步的探索,探索的工作主要包括两大块,第一是数据...

2868

扫码关注云+社区