软考中级软件设计师——UML(统一建模语言)篇

news2025/5/12 17:34:21

        UML的词汇表包含3种构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。

一、事物

UML 事物是模型中的基本元素,分为 结构事物、行为事物、分组事物、注释事物

1. 结构事物

  • 类(Class):具有相同属性和方法的对象的抽象(如 Student 类)。

  • 接口(Interface):定义一组操作的契约(如 Payment 接口)。

  • 协作(Collaboration):一组对象及其交互,共同实现特定功能(如 订单处理 协作,包含订单、支付、库存等对象的交互)。

  • 用例(Use Case):系统功能的描述(如 用户登录 用例)。

  • 构件(Component):可重用的软件模块(如 .dll 文件)。

  • 制品(Artifact):物理文件或文档(如源代码文件 User.java、配置文件 config.xml)。

  • 节点(Node):物理设备或运行时资源(如 服务器)。

  • 主动类(Active Class):拥有独立线程的类(如 多线程控制器)。

                   

 

2. 行为事物

  • 交互(Interaction):对象间的消息传递(如方法调用)。

  • 状态机(State Machine):对象状态的变化(如订单状态从 待支付 到 已支付)。

  • 活动(Activity):流程中的步骤(如业务流程中的 审核 步骤)。

                

3. 分组事物

  • 包(Package):对模型元素的分组(如将 用户管理模块 放入一个包)。

                                                   

4. 注释事物

  • 注释(Note):对模型的解释性说明(如附加的文字描述)。

                                                    

 

二、 关系

UML 关系描述事物之间的关联方式。

关系类型描述及示例表示符号
关联(Association)对象间的结构关系,它描述了一组链,链是对象之间的连接。实线,可带箭头(导航方向)
依赖(Dependency)依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。虚线箭头(指向被依赖方)
泛化(Generalization)泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。空心三角箭头(指向父类)
实现(Realization)实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间:另一种是在用例和实现它们的协作之间。空心三角箭头 + 虚线(指向接口)
聚合(Aggregation)弱“整体-部分”关系(如 汽车 与 轮胎空心菱形 + 实线(菱形在整体端)
组合(Composition)强“整体-部分”关系(如 公司 与 部门实心菱形 + 实线(菱形在整体端)

 

注意:

聚合:部分和整体的生命周期不一致,整体消失了,部分仍然存在部分可以脱离整体存在。
组合:部分和整体的生命周期一致,整体消失了,部分也消失了,部分不可以脱离整体而存在。


三、UML 的图

UML 定义了 13 种图,分别是类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、组合结构图、部署图、包图、交互概览图和计时图。序列图、通信图、交互概览图和计时图均被称为交互图。

1. 类图(Class Diagram)

     类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。 类图给出系统的静态设计视图。包含主动类的类图给出了系统的静态进程视图。      

        核心元素

  • :矩形框,分三栏(类名、属性、方法)。

  • 关系:关联(实线)、依赖(虚线箭头)、泛化(空心三角箭头)、实现(虚线空心三角箭头)、聚合(空心菱形)、组合(实心菱形)。

                                                         

        当对系统的静态设计视图建模时,通常以下述3种方式之一使用类图:

  •  对系统的词汇建模。
  •  对简单的协作建模。
  •  对逻辑数据库模式建模。

2. 用例图(Use Case Diagram)

        用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。

核心元素

  • 参与者:小人图标(如 用户管理员)。

  • 用例:椭圆框(如 登录支付)。

  • 关系:包含(<<include>>)、扩展(<<extend>>)、泛化。

注意:

  • 一个用例执行的时候,可能会发生一些特殊的情况或可选的情况,这种情况就是这个用例的扩展用例。
  • 关联是参与者和用例之间的关系。
  • 包含是用例和用例之间的关系。
  • 扩展是用例和用例之间的关系。
  • 泛化是参与者和参与者之间的关系也是用例和用例之间的关系。

        当对系统的静态用例视图建模时,可以用下列两种方式来使用用例图:

        (1)对系统的语境建模。
        (2)对系统的需求建模。

3. 序列图(Sequence Diagram)

        序列图是场景(Scenario)的图形化表示,描述了以时间顺序组织的对象之间的交互活动。

        把参加交互的对象放在图的上方,沿水平方向排列。通常把发起交互的对象放在左边,下级对象依次放在右边。然后,把这些象发送和接收的消息沿垂直方向按时间顺序从上到下放置。   

核心元素

  • 生命线(Lifeline):垂直虚线表示对象存活时间。

  • 消息(Message):箭头表示同步消息(实线箭头)、异步消息(虚线箭头)、返回消息(虚线返回箭头)。

  • 激活条(Activation Bar):矩形条表示对象执行操作的时间段。

        序列图有两个不同于通信图的特征:

  • 序列图有对象生命线。
  • 序列图有控制焦点。

4. 活动图(Activity Diagram)

        活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。

核心元素

  • 活动节点:圆角矩形表示具体操作

  • 决策节点:菱形

  • 分叉/汇合节点:粗线表示并行流程的开始与结束。

  • 泳道(Swimlane):纵向分区,区分不同角色或模块的责任。

        

        活动图一般包括活动状态和动作状态、转换和对象

        活动图可以表示分支、合并、分岔和汇合。

        当对一个系统的动态方面建模时,通常有两种使用活动图的方式:

  • 对工作流建模
  • 对操作建模。

5. 状态图(State Machine Diagram)

        状态图展现了一个状态机,它由状态、转换、事件和活动组成。状态图关注系统的动态视图,对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。

        状态是指对象的生命周期中某个条件或者状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果。

        嵌套在另外一个状态中的状态称为子状态,含有子状态的状态称为组合状态

        转换是两个状态之间的一种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警界(监护)条件满足时进入目标状态。

        动作是一个可执行的原子操作,是不可中断的,其执行时间是可忽略不计的。     

        在状态转换图中定义的状态主要有:初态(即初始状态)终态(即最终状态)和中间状态初态用一个黑圆点表示,终态用黑圆点外加一个圆表示,状态图中的状态用一个圆角四边形表示(可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名称和值,这部分是可选的;下面部分是活动表这部分也是可选的),状态之间为状态转换,用一条带箭头的线表示。带箭头的线上的事件发生时,状态转换开始(有时也称之为转换“点火”或转换被“触发”)。一张状态图中只能有一个初态,而终态可以没有,也可以有多个。   

                        

状态中的活动表的语法格式如下:事件名(参数表)/动作表达式

三种标准事件:entry,exit,do
entry:入口动作,进入状态,立即执行

exit:出口动作,退出状态,立即执行

do:内部活动,占有有限时间,并可以中断的工作

        事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。

  •  转换包括两个状态。
  •  事件触发转换(迁移)。
  • 活动(动作)可以在状态内执行,也可以在状态转换(迁移)时执行。

时间(time)事件
        时间事件是指在绝对时间或在某个时间间隔内发生的事情所引起的事件。例如到达某一时间或经过了某一时间段。用关键字When 或After表示。

6. 构件图(Component Diagram)

        构件图展现了一组构件之间的组织和依赖。

核心元素

  • 构件:矩形框左侧加两个小矩形(如 用户服务组件)。

  • 接口:空心圆(提供接口)、半圆(需求接口)。

  • 依赖关系:虚线箭头指向被依赖构件。

7. 部署图(Deployment Diagram)

        部署图是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。部署图对系统的静态部署视图进行建模,它与构件图相关。  

核心元素

  • 节点(Node):立方体表示物理设备(如 Web服务器数据库服务器)。

  • 构件实例:节点内部标注部署的构件(如 UserService 部署在 应用服务器)。

  • 通信路径:实线表示节点间的连接(如 TCP/IP 协议)。

        部署图展现了系统的软件和硬件之间的关系在实施阶段使用。

        

8.对象图(Object Diagram)

        对象图(Object Diagram)展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。

        在对系统的静态设计视图或静态进程视图建模时,主要是使用对象图对对象结构进行建模。对象结构建模涉及在给定时刻抓取系统中对象的快照。对象图表示了交互图表示的动态场景的一个静态画面,可以使用对象图可视化、详述、构造和文档化系统中存在的实例以及它们之间的相互关系。

9.通信图(Communication Diagram)

        通信图强调收发消息的对象的结构组织,在早期的版本中也被称作协作图。通信图强调参加交互的对象的组织。产生一张通信图,首先要将参加交互的对象作为图的顶点,然后把连接这些对象的链表示为图的弧,最后用对象发送和收的消息来修饰这些链。

                                

        通信图有两个不同于序列图的特性:

  • 通信图有路径,需要显式地表示以下几种链的路径:local(局部)、parameter(参数)、global(全局)以及self(自身),但不必表示 association(关联)。
  • 通信图有顺序号。

        通信图展现了对象之间的小溪流及其顺序。

10.UML总和

  • 静态建模:类图、对象图、用例图
  • 动态建模:序列图(顺序图,时序图)、通信图(协作图)、状态图、活动图
  • 物理建模:构件图(组件图)、部图
  • 交互图:序列图(顺序图,时序图)、:通信图(协作图)

 

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

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

相关文章

TSN网络与DIOS融合:破解煤矿井下电力系统越级跳闸难题

一、引言 1.1 研究背景与意义 在现代煤矿生产中&#xff0c;井下电力系统作为整个煤矿生产的动力核心&#xff0c;其重要性不言而喻。煤矿井下的各类机械设备&#xff0c;如采煤机、刮板输送机、通风机、排水泵等&#xff0c;都依赖稳定的电力供应才能正常运行。电力系统的稳定…

SierraNet协议分析使用指导[RDMA]| 如何设置 NVMe QP 端口以进行正确解码

在解码RoCEv2数据包&#xff08;包括TCP RDMA和RoCE RDMA&#xff09;时&#xff0c;若捕获的跟踪数据无法正确解码&#xff0c;通常需要执行特定的解码步骤。对于RoCE RDMA跟踪数据的处理&#xff0c;分析器主要采用两种方式获取必要信息以实现数据包解码&#xff1a; 首先&am…

信号处理基础

一、目的 掌握信号处理的基本思想&#xff0c;理解采样信号的频谱特性,加强信号采样与重建的有关基本概念的理解&#xff0c;深入理解线性时不变系统输出与输入的关系&#xff0c;了解数字信号采样率转换前后信号频谱的特征。 二、内容与设计思想 1、给定序列&#xff0c;绘…

小刚说C语言刷题—1058 - 求出100至999范围内的所有水仙花数

1.题目描述 2.参考代码(C语言版) #include <stdio.h> int main(void) { int i; int bai,shi,ge; for( i100;i<999;i) { baii/100; shii/10%10; gei%10; if((bai*bai*bai)(shi*shi*shi)(ge*ge*ge)i) printf("%d\n",i); } return 0; } 今天内容到此结束&…

深入解析Docker:核心架构与最佳实践

文章目录 前言一、Docker 解决了什么问题&#xff1f;二、Docker 底层核心架构2.1 Docker 引擎的分层架构2.2 镜像的奥秘&#xff1a;联合文件系统&#xff08;UnionFS&#xff09;2.3 容器隔离的核心技术2.3.1 命名空间2.3.2 控制组&#xff08;Cgroups&#xff09;2.3.3 内核…

Edge浏览器PDF字体显示错误

Edge浏览器PDF字体显示错误 软件版本信息 Edge Version: 136.0.3240.50 Word Version: Microsoft Office 专业增强版2021问题描述 在Word中使用多级列表自动编号, 并使用Word软件自带的导出为PDF文件功能, 在Word中显示正常的数字, 在Edge中查看PDF将会出现渲染错误的现象,…

Python训练营打卡——DAY22(2025.5.11)

复习日 学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 泰坦尼克号——来自灾难的机器学习 数据来源&#xff1a; kaggle泰坦里克号人员生还预测 挑战 泰坦尼克号沉没是历史上最臭名昭著的海难之一。 1912年4月15日&#xff0c;在被普…

实战项目4(05)

​目录 任务场景一 【sw1配置】 任务场景二 【sw1配置】 【sw2配置】 任务场景一 按照下图完成网络拓扑搭建和配置 任务要求&#xff1a; 1、在交换机SW1的E0/0/1端口进行设置&#xff0c;实现允许最多两个电脑可以正常进行通信。 2、在交换机SW1的E0/0/2端口进行设置&…

C++学习之STL学习

在经过前面的简单的C入门语法的学习后&#xff0c;我们开始接触C最重要的组成部分之一&#xff1a;STL 目录 STL的介绍 什么是STL STL的历史 UTF-8编码原理&#xff08;了解&#xff09; UTF-8编码原理 核心编码规则 规则解析 编码步骤示例 1. 确定码点范围 2. 转换为…

3. 仓颉 CEF 库封装

文章目录 1. capi 使用说明2. Cangjie CEF2. 1实现目标 3. 实现示例 1. capi 使用说明 根据上一节 https://blog.csdn.net/qq_51355375/article/details/147880718?spm1011.2415.3001.5331 所述&#xff0c; cefcapi 是libcef 共享库导出一个 C API, 而以源代码形式分发的 li…

LabVIEW多通道并行数据存储系统

在工业自动化监测、航空航天测试、生物医学信号采集等领域&#xff0c;常常需要对多个传感器通道的数据进行同步采集&#xff0c;并根据后续分析需求以不同采样率保存特定通道组合。传统单线程数据存储方案难以满足实时性和资源利用效率的要求&#xff0c;因此设计一个高效的多…

谷歌在即将举行的I/O大会之前,意外泄露了其全新设计语言“Material 3 Expressive”的细节

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

十三、基于大模型的在线搜索平台——整合function calling流程

基于大模型的在线搜索平台——整合function calling流程 一、function calling调用总结 上篇文章已经实现了信息抓取能力&#xff0c;并封装成了函数。现在最后一步将能力转换为大模型可以调用的能力&#xff0c;实现搜索功能就可以了。这篇主要实现大模型的function calling能…

力扣70题解

记录 2025.5.8 题目: 思路&#xff1a; 1.初始化&#xff1a;p 和 q 初始化为 0&#xff0c;表示到达第 0 级和第 1 级前的方法数。r 初始化为 1&#xff0c;表示到达第 1 级台阶有 1 种方法。 2.循环迭代&#xff1a;从第 1 级到第 n 级台阶进行迭代&#xff1a; p 更新为前…

电商双11美妆数据分析

1、初步了解 2.2 缺失值处理 通过上面观察数据发现sale_count,comment_count 存在缺失值,先观察存在缺失值的行的基本情况 2.3 数据挖掘寻找新的特征 给出各个关键词的分类类别 由title新生成两列类别 对是否是男性专用进行分析并新增一列 对每个产品总销量新增销售额这一列

24、TypeScript:预言家之书——React 19 类型系统

一、预言家的本质 "TypeScript是魔法世界的预言家之书&#xff0c;用静态类型编织代码的命运轨迹&#xff01;" 霍格沃茨符文研究院的巫师挥动魔杖&#xff0c;类型注解与泛型的星轨在空中交织成防护矩阵。 ——基于《国际魔法联合会》第12号类型协议&#xff0c;Ty…

第8章-1 查询性能优化-优化数据访问

上一篇&#xff1a;《第7章-3 维护索引和表》 在前面的章节中&#xff0c;我们介绍了如何设计最优的库表结构、如何建立最好的索引&#xff0c;这些对于提高性能来说是必不可少的。但这些还不够——还需要合理地设计查询。如果查询写得很糟糕&#xff0c;即使库表结构再合理、索…

PCL点云按指定方向进行聚类(指定类的宽度)

需指定方向和类的宽度。测试代码如下&#xff1a; #include <iostream> #include <fstream> #include <vector> #include <string> #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/visualization/pcl_visu…

C#对SQLServer增删改查

1.创建数据库 2.SqlServerHelper using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks;namespace WindowsFormsApp1 {internal class SqlServerHelper{//…

模拟太阳系(C#编写的maui跨平台项目源码)

源码下载地址&#xff1a;https://download.csdn.net/download/wgxds/90789056 本资源为用C#编写的maui跨平台项目源码&#xff0c;使用Visual Studio 2022开发环境&#xff0c;基于.net8.0框架&#xff0c;生成的程序为“模拟太阳系运行”。经测试&#xff0c;生成的程序可运行…