[架构之路-192]-《软考-系统分析师》-8-软件工程 - 14种UML图快速概览

news2025/1/18 4:43:54

目录

第1章 UML概述

1.1 什么是UML?

1.2 为什么要用UML?

1.3 UML图有哪些?

1.4 UML图概览

第2章 UML图示

2.1 静态图、结构图 - 什么是类图?

泛化(Generalization)

实现(Realization)

关联(Association)

聚合(Aggregation)

组合(Composition)

依赖(Dependency)

2.2 静态图、结构图 - 什么是组件图?

2.3 静态图、结构图 - 什么是部署图?

2.4 静态图、结构图 - 什么是对象图?

2.5 静态图、结构图 - 什么是包图?

2.6 静态图、结构图 - 什么是组合结构图?

2.7 静态图、结构图 - 什么是组件图?

2.8 动态图、行为图 - 什么是用例图?

2.9 动态图、行为图 - 什么是活动图、流程图?

2.9.1 基本活动图

2.9.2 带泳道的活动图

2.9.3 带对象流的活动图

2.10 动态图、行为图 - 什么是状态机转换图?

2.11 动态图、行为图 - 什么是消息序列图? Message Sequence(序列)

2.12 动态图、行为图 - 什么是协作图、通信图?(Collaboration Diagrams):

2.13 动态图、行为图 -  什么是交互概览图?

2.14 动态图、行为图 -  什么是状态时序图?(新增)


第1章 UML概述

1.1 什么是UML?

UMLUnified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。

1.2 为什么要用UML?

通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。

UML提供了极富表达能力的建模语言,可以让软件开发过程中的不同人员分别得到自己感兴趣的信息。

Page-Jones 在《Fundamental Object-Oriented Design in UML》 一书中总结了UML的主要目的,如下:

  1. 为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。
  2. 为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
  3. 独立于特定的编程语言和开发过程。
  4. 为了解建模语言提供一个正式的基础。
  5. 鼓励面向对象工具市场的发展。
  6. 支持更高层次的开发概念,如协作,框架,模式和组件。
  7. 整合最佳的工作方法 (Best Practices)。

1.3 UML图有哪些?

  • UML图分为结构图和行为图。
  • 结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
  • 行为图又分活动图、用例图、状态机图和交互图。
  • 交互图又分为序列图、时序图、通讯图、交互概览图。

1.4 UML图概览

第2章 UML图示

2.1 静态图、结构图 - 什么是类图?

  • 【概念】 类图是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
  • 【目的】用来表示类、接口以及它们之间的静态结构和关系。

在类图中,常见的有以下几种关系。

泛化(Generalization)

  • 【泛化关系】是一种继承关系,表示子类继承父类的所有特征和行为。
  • 【箭头指向】带三角箭头的实线,箭头指向父类。

实现(Realization)

  • 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。
  • 【箭头指向】带三角箭头的虚线,箭头指向接口。

关联(Association)

  • 【关联关系】是一种拥有关系,它使得一个类知道另一个类的属性和方法。
  • 【代码体现】成员变量
  • 【箭头指向】带普通箭头的实线,指向被拥有者。双向的关联可以有两个箭头,或者没有箭头。单向的关联有一个箭头。

 自己买的车,想什么时候开就开。但是车是车,人是人,没有整体与部分的关系。

聚合(Aggregation)

  • 【聚合关系】是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
  • 【代码体现】成员变量
  • 【箭头指向】带空心菱形的实线,空心菱形指向整体。

 电脑有键盘才能输入信息,电脑是整体,键盘是部分,键盘也可以离开电脑,单纯的拿去敲。所以是聚合。

组合(Composition)

  • 【组合关系】是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。
  • 【代码体现】成员变量
  • 【箭头指向】带实心菱形和普通箭头的实线,实心菱形指向整体。

鸟是整体,翅膀是部分。鸟死了,翅膀也就不能飞了。所以是组合。我们再看一下,下面的一组经典的聚合组合关系的例子。

一个公司拥有多个部门,公司和部门之间是组合关系,公司破产了,部门就不复存在了。部门和员工是聚合关系,部门被裁掉,员工就换下家了。

依赖(Dependency)

  • 【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助。
  • 【箭头指向】带普通箭头的虚线,普通箭头指向被使用者。

 老司机只管开车,车是谁的不重要,给什么车开什么车。

2.2 静态图、结构图 - 什么是组件图?

  • 【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。
  • 【目的】用来展示各个组件之间的依赖关系。

 订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

2.3 静态图、结构图 - 什么是部署图?

  • 【概念】描述了系统内部的软件如何分布在不同的节点上。
  • 【目的】用来表示软件和硬件的映射关系。

 图中简单的表示,不同机器上面部署的不同软件。

描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。强调了物理设备以及之间的连接关系。

部署模型的目的:

描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。

2.4 静态图、结构图 - 什么是对象图?

  • 【概念】对象图是类图的一个实例,是系统在某个时间点的详细状态的快照。
  • 【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。

图中就是描述的,某时间点bat这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng

2.5 静态图、结构图 - 什么是包图?

  • 【概念】描绘了系统在包层面上的结构设计。
  • 【目的】用来表示包和包之间的依赖关系。

  • 《Use》关系表示使用依赖,Web Shopping依赖Payment
  • 《Merge》关系表示合并,Web Shopping合并了Shopping Cart就拥有了Shopping Cart的功能
  • 《Access》关系表示私有引入,比如代码中的指定包名类名
  • 《Import》关系表示公共引入,比如Java中的import之后,就可以直接使用import包中的类了。

2.6 静态图、结构图 - 什么是组合结构图?

  • 【概念】描述了一个"组合结构"的内部结构,以及他们之间的关系。这个"组合结构"可以是系统的一部分,或者一个整体。
  • 【目的】用来表示系统中逻辑上的"组合结构"。

 图中描述了Car是由车轴连接着的两个前面轮子、两个后面轮子,和引擎组合的。

2.7 静态图、结构图 - 什么是组件图?

  • 【概念】组件图提供了一种通用的扩展机制,用于为特定域和平台定制UML模型。
  • 【目的】用于在特定领域中构建UML模型。

 图中我们定义了一个简易的EJB的概要图。Bean是从Component扩展来的。Entity BeanSession Bean继承了BeanEJB拥有RemoteHome接口,和JAR包。

构件图(Component Diagrams):

构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。

2.8 动态图、行为图 - 什么是用例图?

  • 【概念】用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。
  • 【目的】用来描述整个系统的功能。

用例图中包含以下三种关系:

  • 包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。
  • 扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能
  • 泛化关系,子用例继承父用例所有结构、行为和关系。

2.9 动态图、行为图 - 什么是活动图、流程图?

  • 【概念】描述了具体业务用例的实现流程。
  • 【目的】用来表示用例实现的工作流程。活动图是一种表述过程基理、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。

2.9.1 基本活动图

图中简单描述了,从开始到登录到查看订单列表,或者登录失败直接结束。

2.9.2 带泳道的活动图

泳道表明每个活动是由哪些人或哪些部门负责完成。

2.9.3 带对象流的活动图

用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。对象流用带有箭头的虚线表示。

2.10 动态图、行为图 - 什么是状态机转换图?

  • 【概念】状态机图对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。
  • 【目的】用来表示指定对象,在整个生命周期,响应不同事件的不同状态。

 图中描述了,门在其生命周期内所经历的状态。

2.11 动态图、行为图 - 什么是消息序列图? Message Sequence(序列)

  • 【概念】序列图根据时间序列展示对象如何进行协作。它展示了在用例的特定场景中,对象如何与其他对象交互。
  • 【目的】通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。时间顺序是时序图要重点展示的目的。

 图中展示的是支付宝条码支付场景的序列图。其中,loop是循环,alt是选择,序列图的其他关系这里就不介绍了。

(1) 生命线

 生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。

(2) 同步消息

 同步等待消息

(3) 异步消息

异步发送消息,不需等待

(4) 注释

(5) 约束条件

2.12 动态图、行为图 - 什么是协作图、通信图?(Collaboration Diagrams):

备注:所谓协作,就是与外界通信。与消息序列图可以相互转换!!!

  • 【概念】描述了收发消息的对象的组织关系,强调对象之间的合作、通信关系不是时间顺序
  • 【目的】用来显示不同对象的关系。

 图中展示了一个线上书店的通讯图,方框和小人表示生命线,不同生命线之间可以传递消息,消息前面的数字可以表达序列顺序。

2.13 动态图、行为图 -  什么是交互概览图?

  • 【概念】交互概览图与活动图类似,但是它的节点是交互图。包含交互图的节点来描绘控制流。
  • 【目的】提供了控制流的概述。

交互概览图类似于活动图,因为它们都可视化一系列活动

不同之处在于,对于交互概述,每个单独的活动都被描绘为可以包含嵌套交互图的框架。 这使得交互概述图对于“解构复杂场景非常有用,否则需要将多个if-then-else路径图示为单个序列图” [1]  。

交互概览图的其他符号元素与活动图相同。 这些包括初始,最终,决策,合并,分支和连接节点。 交互概述图中的两个新元素是“交互事件”“交互元素”

 图中表示一个调度系统的交互概览图,跟活动图很像。

其中sd的框代表具体的交互流程,ref框代表使用交互。

2.14 动态图、行为图 -  什么是状态时序图?(新增)

  • 【概念】时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。
  • 【目的】用来表示元素状态或者随时间的变化而变化的视图。

 图中展示了老年痴呆病人随着时间的变化病情的变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四:redis的常见命令及5种基本数据类型

四:redis的常见命令及数据类型 Redis 键(key) 命令1.String(字符串)2.List(列表类型)3.set(集合)4.Hash(哈希)5.Zset(有序集合) redis官网可查看所有命令: https://www.redis.net.cn/order/ Redis 键(key) 命令 127.0.0.1:6379> keys * …

String、StringBufer、StringBuild类

文章目录 1. String1.1 String的特性1.2 String的不可变的特性理解1.3 String不同实例化方式的对比1.4 *String中的常用方法1.5 String与其他类型之间的转换1.5.1 String与基本数据类型、包装类之间的转换1.5.2 String与字符数组(char[])之间的转换 2. StringBuffer类2.1 Strin…

如何从菜鸟变成大佬:提升写文案的技巧

其实很多人都不知道文案是什么? 他们分不清文案和日常的写作之间的区别。 其实,文案和日常的写作的最大区别就是是否能够产生销售力。 比如你平时写作文、写博客、写情感文章、写政府报告,公文、写书之类的,都不属于文案的范畴…

基于线上考研资讯数据抓取的推荐系统的设计与实现(论文+源码)_kaic

摘 要 随着互联网的飞速发展,互联网在各行各业的应用迅速成为众多学校关注的焦点。他们利用互联网提供电子商务服务,然后有了“考研信息平台”,这将使学生考研的信息平台更加方便和简单。 对于考研信息平台的设计,大多采用java技…

Ae:绘画面板

Ae菜单:窗口/绘画 Paint 快捷键:Ctrl 8 绘画工具(画笔工具、仿制图章工具及橡皮擦工具)仅能工作在图层面板上。在使用绘画工具之前,建议先在绘画 Paint面板中查看或进行相关设置。 说明: 如果要在绘画描边…

尝试通过俄罗斯方块解释程序员这个职业

每到毕业季和高考季,总会有相关的职业前景咨询环节等待着我,不管我愿不愿意~~。 每次我都会变着法向众人解释程序员这个职业,声泪俱下地描述互联网各种血泪史,先去考公不要进坑云云。可是效果非常不好,7、8月份这群人…

使用docker compose 安装最新版neo4j

一、Neo4j和图数据库简介 neo4j是基于Java语言编写图形数据库。图是一组节点和连接这些节点的关系。图形数据库也被称为图形数据库管理系统或GDBMS。 Neo4j的是一种流行的图形数据库。 其他的图形数据库是Oracle NoSQL数据库,OrientDB,HypherGraphDB&am…

AIGC周报|下一个裁谁?老板:问问AI;OpenAI推出Shap·E;库克:AI仍有不少问题要解决

AIGC(AI Generated Content)即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT,以及 DallE 2、Stable Diffusion 等文生图模型,都属于 AIGC 的典型案例,它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

网络基础之应用层协议,组织方式,自定义协议和http协议https协议简单介绍

网络基础之应用层协议 应用层介绍应用层是什么 组织方式序列化反序列化常见的自定义序列化方式 HTTP协议——超文本传输协议(最早就是用来传输web网页传输的)HTTP协议的特性HTTP协议的格式: HTTP 请求请求行HTTP常见HeaderHTTP常见状态码 HTT…

asp.net+C#公交线路换乘查询系统

系统功能结构图 (1)用户查询模块 在用户查询模块中,主要是查询出用户自己所需要的线路信息,这也是整个系统最主要的功能模块。主要包括: ①查询车次信息:输入要查询的车次进行搜索,可以查询出于它相应的站点名和站点描…

unity航点寻径

一、游戏框架:设置了六个路标,角色会在这六个路标之间一次移动,当移动到第六个路标后又会返回第一个路标,继续依次移动。 road: 道路,由五个立方体组成 sign:路标,由六个胶囊组成 …

系统集成项目管理工程师 下午 真题 及考点(2020年下半年)

文章目录 2020年下半年试题一:第10章 项目质量管理,规划质量管理过程的输入试题二:第9章 项目成本管理,典型:EAC ACETC AC(BAC-EV)/CPI BAC/CPI试题三:第18章 项目风险管理&#x…

Grafana 系列-统一展示-3-Prometheus 仪表板

系列文章 Grafana 系列文章 知识储备 Prometheus Template Variables 你可以使用变量来代替硬编码的细节,如 server、app 和 pod_name 在 metric 查询中。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,帮助你改变仪表盘中显示的数据。Grafana 将…

【Java EE】-Servlet(四) Cookie和Session

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 寂寞会发慌,孤独是饱满的。——史铁生《命若琴弦》 主要内容:Cookie的理解,Cookie是什么?Cookie从哪里来&#x…

【消息中间件】kafka高性能设计之内存池

文章目录 前言实现创建内存池分配内存释放内存 总结 前言 Kafka的内存池是一个用于管理内存分配的缓存区域。它通过在内存上保留一块固定大小的内存池,用于分配消息缓存、批处理缓存等对象,以减少频繁调用内存分配函数的开销。 Kafka内存池的实现利用了…

怎么在本地运行umi框架的生产模式

怎么在本地运行umi框架的生产模式 第一种 先使用build进行编译构建, 在webstorm软件上可以在package.json文件上点击运行;或者直接在命令行上敲max build进行构建, 构建好后就会多个dist目录,里面就是编译好的静态文件。 然后在package.json中添加 "serve&qu…

UDP通信机制详解

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

Helm常用命令记录

问: 到哪里去搜索helm package? 答: artifacthub.io helm versionhelm repo add bitnami https://charts.bitnami.com/bitnamihelm install my-release bitnmai/mysqlkubectl get po --all-namespaceshelm uninstall my-release 安装monitoring,推荐kube-prometheus-stack&am…

【SWAT水文模型】SWAT水文模型建立及应用第三期:基于世界土壤数据库HWSD建立土壤库

SWAT水文模型建立及应用:土壤库建立 1 简介2 土壤数据下载2.1 数据下载方式2.1.1 世界土壤数据库HWSD数据2.1.2 中国土壤数据库 2.2 数据下载 3 土壤数据的准备3.1 SWAT土壤数据库参数3.2 提取HWSD中土壤参数3.3 土壤类型分布图的处理3.4 土壤质地转化3.5 土壤参数的…

人工智能浪潮中,AI如何为企业降本增效?

人工智能浪潮下,企业应如何抓住机遇,用AI降本增效?如何选择适合自身产业的人工智能服务?如果你想了解更多,本文或许能给你提供一点思路。 一、企业如何利用AI降本增效 在人工智能浪潮下,已有多款AI产品问世…