UML 建模入门总结

article/2025/9/2 4:49:30

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>>   hot3.png

一、什么是UML?

UML这三个字母的全称是Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。

二、UML图为什么会分为结构型和行为型两种呢?

顾名思义,结构型的图描述的是某种结构,这种结构在某段时间内应该是稳定的,“静态”的;而结构型的图描述的是某种行为,是“动态”的。

分析系统需求时,我们会面对很多业务概念,它们之间会有某些关系,这些内容可以看成是“静态”的,我们可以利用UML的结构性的图来分析。同时,业务会涉及大量的流程、过程等,这些内容是“动态”的,我们可以用行为型的UML图来分析。

在我们软件设计时,我们需要考虑需要那些类、哪些构件、系统最后怎样部署等,这些内容可以看成是“静态”的,我们可以利用UML的结构型的图来设计。同时,我们也需要考虑软件如何和用户交互,类、构件、模块之间如何联系等“动态”内容,我们可以利用行为型的图来设计。

所谓“静态”和“动态”不是绝对的,下文我们将会进一步介绍结构型的UML和行为型的UML。

三、结构型的UML(Structure Diagram)

1. 类图(Class Diagram)

请看下面这个类图:

图 1.1 某模具系统类图

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

再看下面这个Person类图,这时软件设计时用到的一个图:

图 1.2 Person类图

该Person类有以下属性(Attribute):Name(姓名),Sex(性别),Department(部门)等,有以下操作(Operation):Work(工作)等。类有属性和操作,但用类图分析业务模型时,往往不需要使用操作,如图1.1中的类就只有属性。

Attribute有特性、特征等译法,Operation也称作方法,但本书遵循UML中文术语标准,即Attribute为属性,Operation为操作。

2. 对象图(Object Diagram)

一般情况下只有在软件开发中才会使用到对象图,下面的内容以开发的角度来说明对象图,如果你没有开发经验,阅读起来可能有一点难度。

图1.2中的Person类,用代码实例化如下:

Person person = new Person(); ……

类(Class)实例化后就是对象(Object),对象person是类Person的实例,上述代码可以用对象图表示如下:

图 1.3 Person类的对象图

对象图和类图的样子很相似,对象是类的实例化,“person : Person”表示对象person是类Person的实例。对象图往往只在需要描述复杂算法时才会使用,画出来的对象图往往不会只有一个对象,该图只画了一个对象,其目的是尽量简化以便读者的理解什么是对象图。

在需求分析工作中基本上不需要使用对象图,从严谨的角度来看某些情况下应该使用对象图,但我往往还是会用类图来处理,这样更加简便而且容易理解。我们将在类图一章再次讲解对象图。

3. 构件图(Component Diagram)

构件图也叫组件图,两个名字均符合UML中文术语标准。

一辆汽车由轮子、发动机等物理部件组成,一个软件往往也是由很多“物理部件”(如:控件、重用构件等)组成的,构件图就是用来描述软件内部物理组成的一种图。下图是某权限构件设计图:

图 1.4 某权限构件设计图

图1.4右上方有这样标志 的矩形表示一个构件,构件可以再包含构件。

软件需求分析工作中,需要用到构件图的情况不是很多,以下情况除外:

  1. 待开发的系统需要与第三方的系统、原有系统、某些老系统等交互,这时可用构件图描述交互要求。
  2. 客户对软件设计有某些特殊要求,这时可用构件图来描述要求。

构件图有时不会单独使用,还会和部署图一起结合使用。

4. 部署图(Deployment Diagram)

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

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

图中一个个立体的矩形是部署图的“节点”,一个节点表示一个物理的设备,节点之间的线条表示节点间的物理连接关系。

大部分客户都会具备一定的IT基础环境(如具备局域网、一些服务器、某些软件平台等),软件系统需要基于当前的IT基础环境来规划,这时我们可以使用部署图来做这个规划。

分析系统的需求,不能忽略系统架构、部署、IT架构等方面的要求,我们要基于客户当前的IT基础环境,做一个最符合客户利益的规划。

要活用构件图、部署图来分析需求,需要具备一定的IT基础架构知识和软件设计知识,如果你还不具备相关知识,那么可以考虑抓紧补充相关知识。不过需求分析工作更多的还是分析业务,提炼功能性需求,这部分工作能做好是相当不容易的事情。对于技术方面的非功能性需求分析,可交由有技术背景的专业人士负责。

5. 包图(Package Diagram)

Package有“打包”的意思,包图的主要用途是“打包”类图。用类图描述业务概念时,很多时候会因为业务类太多,而导致类图非常庞大,不利于阅读,这时可以将某些类放入“包”中,通过包图来组织业务概念图。

下图是包图的一个示例:

图 1.6 包图

图中好像文件夹样子的就是一个“包”,包之间的线条表示包之间的关系。

四、行为型的UML(Behavior Diagram)

活动图、状态机图、顺序图处于三种不同的角度来描述流程,是分析业务流程的三种不同利器,下面将会逐一说明。

1. 活动图(Activity Diagram)

图 1.7 起床到出门上班的活动图

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

2. 状态机图(State Machine Diagram)

状态机图又叫状态图,但状态图这个译名并没有译出Machine的意思。

状态机图从某个物品的状态是如何变化的角度来展示流程,下图某请假条审批流程:

图 1.8 请假处理流程

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

3. 顺序图(Sequence Diagram)

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

图 1.9 点菜的顺序图

该图有三个“小人”,每个“小人”下面的文字说明(如:顾客)表示其代表的角色。角色与角色之间有一些线条链接,表示角色之间是如何交互的。该图表示的意思是:顾客向服务员点菜后,服务员将点菜信息传递给厨师,然后厨师做菜,最后再由服务员送菜给你。

点菜过程涉及几个环节,每个环节均由不同的角色来负责,如果遇到类似的情况,你可以考虑使用顺序图来分析。用顺序图来分析的好处是能清晰表达整个过程所参与的角色,角色与角色之间的关系,各角色是如何被卷入这个过程当中的

4. 通信图(Communication Diagram)

通信图是顺序图的另外一种画法,点菜的顺序图,如果用通信图来画可表示如下:

图 1.10 点菜的通信图

三个“小人”分表表示三种角色:顾客、服务员、厨师;角色之间有直线联系表示他们之间有关系;带序号的文字和箭头,表示角色之间传递的信息。

顺序图更强调先后顺序,通信图更强调相互之间的关系。我觉得顺序图实用性更好一点,比通信图能表达更多的信息,更容易读懂,在需求分析工作中我基本不会使用通信图。

5. 用例图(Use Case Diagram)

下图是用例图的示意图:

图 1.11 用例图

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

6. 时序图(Timing Diagram)

时序图也叫时间图,时序图是UML中文术语标准的说法,而时间图不是标准的说法。
时序图是表示某东西的状态随时间变化而变化的一种图,参见下图:

图 1.12 灯的开关状态随时间变化图

此图表示在0秒到30秒,灯的状态是关的,30-60秒灯的状态为开,60秒后状态为关。

五、UML建模表总结

下面通过这个表格来总结一下我在需求分析工作中应用各种UML图的情况:

表 1.1 各种UML图实际应用情况

表 1.1 各种UML图实际应用情况

六、如何学好UML?

1. UML的认识误区

误区一:认为UML主要用于软件设计。

前面的文章你可以看到,UML除了用于软件设计,还能用于需求分析,而本书就是专门来说明如何在需求分析工作中活用UML的。

误区二:客户无法理解UML,在需求分析中应用UML实际意义不大。

我还不熟悉UML时,确实也有这样的怀疑,而实际工作中发现UML恰恰成为与客户沟通的良好桥梁!UML其实不难读懂,只要稍加解释客户马上就能读懂。我在所有的项目需求分析工作中,都直接使用UML图与客户沟通,并且给客户签署的需求规格说明书中含有大量的UML图。

UML能直观、形象、严谨地描述出业务概念、业务流程、客户的期望和需求,只要稍加引导客户,客户将会很容易读懂UML,甚至会主动使用UML与项目组交流。我曾经遇到过客户向我们索要画UML图的工具,客户见识过UML的威力后,也想在自己实际工作中使用。

误区三:认为UML语法繁杂,难以学习和应用。

在实际工作中,其实经常需要用到的UML语法并不多,而且很容易掌握。当我们在需求分析方面应用UML时,需要掌握的语法更少(在软件设计方面应用UML时需要掌握稍多一点的语法)。“二八原则”在这里完全适用,我们经常用到的UML语法,其实只占全部语法的20%,而本书将会重点介绍实用性强的UML语法。

误区四:UML用途不大。

很多人推崇UML,但也有不少人士不太认可UML。不认可的原因主要是因为一些人士学习UML后,发现在实际工作中发挥的作用并不是很大,有时候不用UML效果更好。

我不敢说UML能帮助我们解决所有问题,至少从我的多年使用经验上来说,UML对于提升我的需求分析能力帮助还是很大的。有人之所以感觉UML不太好用,我觉得原因还是只掌握了UML的形而没有领会UML的神。UML的常用语法可能几天就能学会了,而要真正做到“thinking in UML”却没有这么容易,需要长期的锻炼。

2. 要用好UML,你需要在平时多多培养下面的能力

  1. 书面表达能力。

  2. 归纳总结能力。

  3. “面向对象”的思维能力和抽象能力。


http://chatgpt.dhexx.cn/article/q7h4m6Ft.shtml

相关文章

UML软件建模StarUML

Mac哪款UML软件建模器好用呢?StarUML for mac是Mac平台上的一款UML建模器,StarUML for mac提供了几个模版,帮助用户建立使用新的图表,是目前最流行的UML建模工具。给开发工作带来大大的便利。兼容UML 2.x标准元模型和图表&#xf…

UML建模与软件开发设计(二)——UML概述

1.UML的定义 UML的全称为Unified Modeling Language,即统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分…

软件建模和UML

如果要建造一个高楼大厦,首先要做的肯定不是先去买所需的材料,而是需要对建筑物的大小,形状和样式建立一个模型,设计相应的图纸。而软件同样也需要建模。 1、软件建模的原则? 从不同的视角,选取最显著的特…

实验三 UML建模

(一)实验目的要求 1. 了解UML的特点 2. 熟悉掌握UML中各类图的画法 (二)实验材料和仪器设备 1. PC机 2.UML绘图环境 (三)实验内容 1. 网上书店:注册的客户可以使用系统下订单、结账、给…

UML建模语言

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 UML简介 1997年,OMG 组织(Object Management Group对象管理组织)发布了统一建模语言(Un…

UML建模(二):基于UML的软件开发过程

基于UML的软件开发过程 需求分析阶段 可以使用用例图来描述目标软件系统所有重要、有风险的用例,利用用例图表示参与者与用例及用例与用例之间的关系; 可以使用类图来表示目标软件系统所基于的应用领域中的概念与概念之间的关系,这些相互关…

常用的UML建模详解

UML主要包括图表中的十一种,那在本次的介绍中,只讲解活动图、状态机图、顺序图。 种类UML图作用结构图类图主要用来业务概念模型分析,在需求分析中必不可少对象图一般开发人员会使用,产品经理不常用构件图用来分析IT基础架构&…

软件设计师 UML建模大题

目录 1.extend关系的内涵 2.多重度 3.事物和关系的图形化表示 4.用例图示例 5.类图示例 6.顺序图示例 7.状态图示例 8.活动图示例 UML建模技术类题目要求考生认真阅读题目说明中对现实问题的描述,使用UML建模的原则,从中确定用例图、类图、顺序图、状态图和活动图的各种…

软考-软件设计师 UML建模

文章目录 UML概念关系类图对象图用例图构件图部署图序列图通信图状态图活动图 UML概念 UML是统一建模语言,和程序设计语言并无关系。  UML三个要素:UML的基本构造块,支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。  …

UML建模与软件工程

前言 前面几篇博文小编初步为大家分享了UML建模中的相关内容-事物、关系、九种图。那么,我们有没有想过为什么要学习UML建模呢?学习UML建模有什么用途呢?如何使用UML中的模型图呢?本文小编将带您一起走进这精彩而奇妙的世界。 正…

UML建模工具介绍

1. PowerDesigner PowerDesigner 是业内首屈一指的数据建模工具,可让企业更轻松地直观展示、分析和操作元数据,从而更有效地实施企业信息体系结构。 2. StarUML StarUML(简称SU),是一种创建UML类图,是一种生成类图和其他类型的统一…

UML建模工具2021年8-11月更新(共15款)

UMLChina整理的UML建模工具列表请见http://www.umlchina.com/tools/search.aspx 最近一段时间更新: 工具最新版本:ConceptDraw DIAGRAM v15 更新时间:2021年11月16日 工具简介 以前的ConceptDraw Pro,1999年创建的老牌绘图工具…

如何做接口测试呢?接口测试有哪些工具【小白都会系列】

回想入职测试已经10年时间了,初入职场的我对于接口测试茫然不知。后来因为业务需要,开始慢慢接触接口测试。从最开始使用工具进行接口测试到编写代码实现接口自动化,到最后的测试平台开发。回想这一路走来感触颇深,因此为了避免打…

接口测试用例怎么写?一文1600字教你写一个优秀的接口测试的测试用例

一、用例设计1 1、接口测试概念 接口测试:测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的交互点 2、接口测试方法 a、可以通过开发脚本代码进行测试 b、可以通过开源免费的接口调用…

做接口测试的流程一般是怎么样的?

在讲接口流程测试之前,首先需要给大家申明下:接口测试对于测试人员而言,非常非常重要,懂功能测试接口测试,就能在企业中拿到一份非常不错的薪资。 这么重要的接口测试,一般也是面试笔试必问。为方便大家更…

自动化测试——接口测试怎么做?

目录: 一、什么是接口? 二、接口测试流程 三、接口测试工具 四、接口测试技术点 五、总结 导读: 为什么要做接口测试 接口测试本质上是功能测试的一种,属于后端服务器测试。但是它的影响范围要远广于web,app层面。原因…

接口测试教程(一看就会)

前言 掌握了http协议,就掌握了接口测试 笔者在网络上看过不少接口测试教程,一上来就开始讲怎么操作工具,而不告诉读者为什么要这么操作。读者可能照猫画虎成功了,也可能操作失败了但不知为何出错。 因此,本文作为接口…

接口测试的价值(为什么要做接口测试)

目录 首先了解一下互联网的技术架构: 接口测试的必要性 接口测试不能取代UI的测试 首先了解一下互联网的技术架构: 按照端来划分可以分为两部分:移动端和服务端,各自的内容大概如下图所示 后端(服务端)…

接口测试的原理,什么是接口测试?为什么要做接口测试?如何开展接口测试?

什么是接口? 业内常说的接口一般指两种: API:应用程序编程接口,程序间的接口GUI:图形用户界面,人与程序的接口 软件接口测试中的接口特指API接口接口测试又称API测试 接口实例:系统与系统间…

接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚

01、通用的项目架构 02、什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url,不同的请求类型(GET、POST),不同的参数,来执行不同的业务逻辑。…