【软件工程】一篇入门UML建模图(用例图、对象图、顺序图与协作图)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言 

2. UML概述

2.1 UML的分类与功能

2.2 UML的语法与各图关系 

​编辑

3. 四种图的概述

3.1 用例图( Use Case Diagram )

​编辑

3.2 对象图( Object Diagram )

3.3 顺序图(Sequence Diagram)

3.4 协作图(Collaboration Diagram)

4. 用例图

4.1 用例图概要

4.2 用例图中的事物及解释

4.3 用例图中的关系及解释​编辑

4.4 例子

实例1 参与者之间的泛化关系

 实例2 用例之间扩展和包含关系

5. 顺序图

5.1 顺序图概要

5.2 顺序图中的事物及解释

5.3 顺序图与用例图与类图的关系​编辑

5.4 顺序图例子

6. 协作图

6.1 协作图概要

6.2 协作图中的事物及解释

6.3 协议图中的关系及解释

​编辑

6.4 协作图与顺序图的区别和联系

6.5 例子

1.打印操作的协作图​编辑

2.乘坐电梯的协作图​编辑

7. 对象图

7.1 对象图概述

7.2 实例

8. 总结


1. 前言 

通过前一篇文章,我们已经入门了UML图中的类图:

【软件工程】一篇入门UML建模图(类图)_uml图教程-CSDN博客

类图是UML图中最难、体系最庞大的图,主要包括:对象图、特征图、关系图三个层次。

对象图:

  • 边界图:和外界有交互的部分。
  • 控制图:存在行为控制的部分
  • 实体图:对数据实体有控制的部分

特征图:详细描绘每一个类的行为以及属性

关系图:我们最熟悉的UML类图形式,描述类与类之间的各种关系(泛化、实现;关联、依赖;聚合、组合)

上图中 轮胎和发动机 与 汽车 关系更改为聚合

2. UML概述

所谓UML(Unified Modeling Language,统一建模语言),一种用来对软件密集系统进行可视化建模的语言。

这样的概念大概解释了UML是什么,不过还不够直观。

我们可以换个问题,UML做到了什么,让人们愿意为之喝彩?

答案就是,它统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。它是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。

如此一来,UML的本质也就呼之欲出了。UML的本质就是为了交流

一句话:一个UML就能完成整个软件开发中的交流需要

2.1 UML的分类与功能

UML2.0一共有12种图形(UML1.5定义了9种,2.0增加了3种)。

分别是:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图9种,包图、组合结构图、交互概览图3种。

“UML无用论”在很多年前就被提了出来,更是引发了业内不少争议。有用户将它捧上天,甚至“封神”,也有人斥之为垃圾,甚至称其“反人类”。

那么问题来了,UML 真的无用吗?或者用题主的话来说,UML 还有用吗?

我想先说自己的判断:UML 依然有用

之所以这么判断,主要基于以下三点事实:

第一,图比代码更清晰

在复杂需求中,UML图是非常必要的。

用例图描述系统的外部交互、序列图描述系统的内部交互、状态图描述系统的动态特性、部署图描述系统的物理节点、类图与对象图描述依赖关系......

所有的图都是协助团队策划稿能源更高效地厘清问题,掌握知识,高效解决问题的。

试问下,在敏捷开发中,如果没有流程图、序列图、状态图进行辅助,你如何在代码过程中保证业务流程、系统前后端、多个系统切换开发做到敏捷高效?

在敏捷开发时,面对稍复杂点的需求,如果要求团队提前用UML图厘清问题,后续填坑可以少很多。

第二,“假敏捷开发”太多

正如@萝魏紫 所言,中国假敏捷太多了,以敏捷为借口少写甚至不写文档,以至于大量项目在本不应出问题的沟通层面出现大量问题,没有统一的标准,沟通不出问题才怪。

UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。

不过,我们也必须注意到,UML不是万能的,但是在系统研发中的沟通作用,效果还是比较好的。

第三,UML 在业界依然在被应用

UML的实际应用例子,大家在这个问答中可以找到不少:

比如,@Milo Yip 表示,“腾讯没有统一、从上而下的软件工程方法论,毕竟业务差异很大。但在各种文档及简报中也经常以 UML 图来呈现一些信息,算是一种辅助沟通的方法。”另外,“我在面试时会让候选人做一些简单设计,用 UML 最好,不会的也可用他熟悉的编程语言表示。”

@fantiny 也举了自己前公司产品ExchangeUSE的例子,据介绍,当时UML在前期需求分析和架构设计阶段起到一定的作用,包括需求分析与共通化整理,系统模块化分析工具,架构设计的交流工具,实现合理性的分析工具。

2.2 UML的语法与各图关系 

各图关系: 

UML语法描述:

3. 四种图的概述

       这一部分先对 用例图、对象图、顺序图与协作图 做一个简单的概述。

3.1 用例图( Use Case Diagram )

       用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元。

用例图:用户角度描述系统功能的一个例子 

3.2 对象图( Object Diagram )

       对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。

对象图:类图的其中一种(广义上的类图)

3.3 顺序图(Sequence Diagram)

  1. 顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。
  2. 顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件。

3.4 协作图(Collaboration Diagram)

  1. 协作图描述对象间的协作关系协作图跟顺序图 相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系.
  2. 协作图的一个用途是表示一个类操作的实现

协作图和顺序图:

        1、都表示类之间的交互行为。

        2、协作图仅仅表示交互行为的存在,顺序图除了表示交互行为外还表示行为的顺序。

4. 用例图

4.1 用例图概要

  1. 用例图是被称为参与者的外部用户所能观察到的系统功能的模型图。 (《UML参考手册》)
  2. 用例图列出系统中的用例和系统外的参与者,并显示哪个参与者参与了哪个用例的执行(或称为发起了哪个用例)。
  3. 用例图多用于静态建模阶段(主要是业务建模和需求建模)。

4.2 用例图中的事物及解释

4.3 用例图中的关系及解释

用例之间:拓展、包含

参与者之间:泛化

参与者和用户:关联

4.4 例子

实例1 参与者之间的泛化关系

       在参与者之间不存在泛化关系的情况下,各个参与者参与 用例的情况分别是:经理参与用例管理人事和批准预算;安全主管参与用例批准安全证书;保安参与用例监视周边。由于安全主管与经理,安全主管与保安之间泛化关系的存在,意味着安全主管可以担任经理和保安的角色,就能够参与经理和保安参与的用例。这样,安全主管就可以参与全部4个用例。但经理或者保安却不能担任安全主管的角色,也就不能参与用例批准安全证书。

 实例2 用例之间扩展和包含关系

       用例的上下文是:短途旅行但汽车的油不足以应付全部路程。那么为汽车加油的动作在旅行的每个场景(事件流)中都会出现,不加油就不会完成旅行。吃饭是每一个人的基础,人可以不旅行但是必须吃饭。

5. 顺序图

5.1 顺序图概要

  • 顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件。
  • 顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。 顺序图属于动态建模。
  • 顺序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺序。
  • 浏览顺序图的方法是:从上到下查看对象间交换的消息。

5.2 顺序图中的事物及解释

5.3 顺序图与用例图与类图的关系

5.4 顺序图例子

 

  • 此图是描述购票这个用例的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。
  • 此图中存在的事物有:
    对象(信息亭 Kjosk ,售票中心 Box Office, 信用卡服务 Credit Card Service ),生命线,消息符号。
  • 售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出可用的座位表。

6. 协作图

6.1 协作图概要

  • 协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态情况。
  • 协作图主要描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。
  • 协作图可以表示类操作的实现。

6.2 协作图中的事物及解释

6.3 协议图中的关系及解释

6.4 协作图与顺序图的区别和联系

        1. 协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同。

        2. 顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。

        3. 协作图清楚地表示了对象间的关系(强调空间),但时间顺序必须从顺序号获得。

        4. 协作图和顺序图可以相互转化。

协作图省略对象间交互动作的时间关系,让我们着眼于交互行为的空间关系 

6.5 例子

1.打印操作的协作图

2.乘坐电梯的协作图

       参与者需要乘坐电梯,他从系统外部按下按钮,让电梯到达他想去的楼层。此时,电梯系统的操作被启动,电梯控制对象以循环的方式检查所有的电梯,从中选择一个工作队列长度最短的。然后,它创建一个作业命令,并将该命令放入对应电梯的工作队列,接着激活队列。电梯对象并发运行,从它的队列中选择一个作业并执行。电梯是一个活动对象,它与它的控制线程并发执行。

7. 对象图

7.1 对象图概述

类的类型有三个:

1.边界类(系统边界):用户界面、系统接口、硬件接口

2.实体类(系统信息):系统存储的信息及相关行为

3.控制类(协调用例行为):封装用例所持有的控制行为

边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。

控制类用于对一个或几个用例所特有的控制行为进行建模。

实体类是用于对必须存储的信息和相关行为建模的类。

边界类,控制类,实体类很像MVC中的V层,C层,M层!!!

view层(用来和外界用户交互)、C层(方法层,交互的方法)、M层(数据库的操作对象以及表实体,数据持久层)  

7.2 实例

 

8. 总结

本文到这里就结束啦~~

目前已经完成:【软件工程】一篇入门UML建模图(类图)_uml图教程-CSDN博客

以及本篇关于:用例图、顺序图、协作图、对象图

后续猫猫还将讲:状态图、活动图、构件图、部署图

如果觉得对你有帮助,友友们可以点个赞,收个藏呀~

第1章课程定位教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS书管理系统介绍 1.4.1书管理系统需求分析 1.4.2书管理系统系统设计 1.4.3书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视 3.4.1用例视 3.4.2逻辑视 3.4.3并发视 3.4.4组件视 3.4.5部署视 3.5UML形符号 3.5.1用例图 3.5.2类 3.5.3对象图 3.5.4状态 3.5.5活动 3.5.6顺序图 3.5.7协作图 3.5.8组件 3.5.9部署 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类概述 6.3类的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类 6.3.5绘制控制类 6.3.6UML中的类语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态 8.2.1状态概述 8.2.2状态组成 8.2.3绘制员工下班回家状态 8.3活动 8.3.1活动概述 8.3.2活动组成 8.3.3绘制WebShop电子商城活动 8.4活动拾遗 8.4.1活动流程的比较 8.4.2活动状态的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图协作图的比较 8.7.2 顺序图协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件 9.2.1组件概述 9.2.2组件组成 9.2.3绘制WebShop电子商城组件 9.3部署 9.3.1部署概述 9.3.2部署组成 9.3.3绘制WebShop电子商城部署 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二月的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值