UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

2023-11-02

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。

UML是面向对象设计的建模工具,独立于任何具体程序设计语言

1、UML与面向对象

结构化开发 面向对象开发
系统分析 数据流图 UML
系统设计 模块结构图 UML

UML仅仅是一种语言。它不是一种系统设计的方法,而是系统建模的标准

1.1、UML视图

  • 用例视图

    用例是系统中的一个功能单元

    用例视图是其他视图的核心,从系统外部参与者的角度描述系统应该具有的功能

  • 逻辑视图

    设计人员和开发人员使用逻辑视图来描述用例视图提出的系统功能的实现,包括静态结构(类图、对象图)和动态协作关系(状态图、时序图、协作图、活动图)

  • 并发视图

    开发人员和系统集成人员考虑资源的有效利用、代码的并行执行和系统环境中的异步事件的处理而使用的图形,包括状态图、协作图、活动图

  • 组件视图

    组件是不同类型的代码模块,是构造应用的软件单元

    组件视图是开发人员用于描述系统的实现模块以及它们之间的依赖关系的图

  • 部署视图

    开发人员、系统集成人员和测试人员使用的

    用来显示系统的物理部署,描述了位于节点上的运行实例的部署情况

1.2、UML图

  • 静态图
    • 用例图
    • 类图
    • 对象图
    • 组件图
    • 部署图
    • 包图 (UML2.0)
    • 组成结构图 (UML2.0)
  • 动态图
    • 序列图
    • 协作图
    • 状态图
    • 活动图
    • 交互纵览图 (UML2.0)
    • 计时图 (UML2.0)

1.3、建模步骤

  • 建模是从总体到细节,逐步细化的过程;不要一开始就陷入细节中

示例

骰子游戏:软件模拟游戏者投掷两个骰子,如果总点数为7,则赢得游戏,否则为输

1、定义用例

用例是需求分析的一种工具,它是一些情况的描述

对系统总体上的描述

骰子游戏:

  1. 游戏者请求骰子
  2. 系统展示结果:如果骰子总点数是7,则赢,否则输

2、定义领域模型

识别问题中的概念

确定对象及对象间的关系

  • 游戏者
  • 骰子
  • 骰子游戏

在这里插入图片描述

3、定义交互图

动态建模

分配对象职责:对象间交互关系

顺序图、用例图

在这里插入图片描述

4、定义设计类图

静态建模

设计类:属性、方法

在这里插入图片描述

1.4、名词解释

  • UP

    The Unified Software Development Process

    统一过程:是一种流行的构造面向对象的迭代软件开发过程

  • RUP

    Rational Unified Process

    Rational统一过程

2、用例图

2.1、组成元素

在这里插入图片描述

  • 参考者

    外部用户或外部实体在系统中扮演的角色

    人、子系统、硬件设备、时间等…

  • 用例

    一组动作序列的描述

    名称:动宾结构

    如:售货、取货、修改资料、查询信息、删除订单…

  • 关系

    • 包含:include 由 父/基 --------> ;虚线箭头,连线上标注include;发生在用例之间;必须一起执行
    • 扩展:extend 由 --------> 父/基 ;虚线箭头,连线上标注extend;发生在用例之间;扩展功能可能不执行
    • 泛化:generalize 由 子(特殊) ——l> 父/基(一般) ;实线空心三角箭头;发生在 用例之间 或 参与者之间

2.2、示例

在这里插入图片描述

在这里插入图片描述

3、类图、对象图和包图

3.1、类图

在这里插入图片描述

1、可见性

  • public +
  • protected #
  • private -

2、属性

可见性 名称 :类型 [ = 缺省值]

3、方法

可见性 名称(参数列表) [ : 返回类型]

4、类间关系

extends、implements 特指Java中用法
关联依赖关系多重度应为:1 . . 1、1 . . n、n . . m;中间不用冒号,用两个点

在这里插入图片描述


3.2、对象图

系统在某一时刻的一个快照
对象图中的建模元素有 对象

对象图实质上是类图的实例

  • 对象:是类的实例
  • 链:是类之间的关联实例

在这里插入图片描述

在这里插入图片描述


3.3、包图

可类比java中的包机制

包图只有依赖关系

在这里插入图片描述

4、活动图

参考:活动图

  • 活动图本质是上是一种流程图,但是活动图是 面向对象 的,而流程图是 面向过程
  • 活动图用于表达系统动态特性的图

4.1、组成元素

动作和活动节点、开始和终止、控制流、判断节点、合并节点、泳道

在这里插入图片描述

  • 判断节点

在这里插入图片描述

在这里插入图片描述

  • 合并节点

在这里插入图片描述

  • 泳道

是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行

除了以上的对线性流程进行分区以外,使用泳道表示法可以更清晰地表示并发

在这里插入图片描述

工时审批流程

员工填写工时,项目工时报项目经理审批后再报部门经理审批、非项目工时直接报部门经理审批

在这里插入图片描述

  • 分叉节点与结合节点

在这里插入图片描述

4.2、实例

  • 客户下单

在这里插入图片描述
在这里插入图片描述

5、顺序图/时序图

  • 四个元素
    • 对象 Object
    • 生命线 Lifeline
    • 消息 Message
    • 激活 Activation

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6、协作图

  • 描述对象间的组织协作关系,它也可体现出系统用例的行为
  • 协作图由参与者, 对象, 连接和消息等基本元素组成

在这里插入图片描述

在这里插入图片描述

7、状态图

  • 状态图(statechart diagram)主要用来描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随发生的动作(action)
  • 一般可以状态机对一个对象 (这里的对象可以是类的实例, 用例的实例或整个系统的实例) 的生命周期建模
  • 状态图是用于显示状态机的,重点在于描述状态之间的控制流

在这里插入图片描述

  • 状态图与活动图的比较
    • 描述重点不同
      • 状态图描述的是 对象的状态及状态之间的转移
      • 活动图描述的是 从活动到活动的控制流
    • 使用场合不同
      • 如果是为了显示一个对象在其生命周期内的行为, 则使用状态图较好
      • 如果目的是分析用例,理解涉及多个用例的工作流程,或者使用多线程应用等, 则使用活动图较好
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图 的相关文章

  • 子集约束在 UML 类图中意味着什么

    有subset在部门类和人员类之间 但我不知道比是什么意思 家庭作业机会 查看由子集约束链接的两个关系 每个部门有多名成员 每个部门设经理一名 子集表示这两者之间的约束 如果后一个关系的元素是第一个关系的子集 那么你会如何描述其含义 EDI
  • 用例图包括

    我有一个关于用例图的问题 如图所示 用户可以输入或更新他的姓名和问题 正如您所看到的 用户在第一次输入信息时需要输入姓名和问题 因此包括在内 但是 如果他希望更新他的信息 图表是否表明他必须修改名称和问题 因为它们包含在内 例如 如果他拼错
  • 如何在 UML 类图中表示回调

    我有一个界面说 Interface ICallback public void informFunction 我有一堂课说 Class Implementation implements ICallback public Implement
  • 在 NetBeans 7.1.1 中创建 UML 类图

    我想安装 启用 NetBeans 插件来创建和查看 UML 图 如图所示here http wiki netbeans org wiki images b b8 Vista Nimbus Uml Screenshot NBLookAndFe
  • 如何在 UML 中指定“一次一个”?

    我正在制作一个类图Classroom and a Course class 我怎样才能表明Classroom只能有一个Course一次在其中吗 我知道我可以使用多重性来指定教室可以只开设一门课程 但这并不能完全指定在不同时间可以有除该一门课
  • 如何用UML表示通信协议?

    在我的 UML 模型中 我有一个系统及其相互通信的子组件 例如 我有一台计算机和一个遥控机器人 它们通过蓝牙进行通信 目前图中的流程类似于 计算机 触发 遥控车 的 setVelocity 函数 在这一点上 我想通过说以下的话来完善沟通 计
  • 如何在 UML 类图中表示“事件”?

    这是我的代码片段 public class Notation INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged private N
  • Eclipse:如何安装 UML2 工具

    我想尝试 UML2 Tools for Eclipse 如图所示本教程 http www vogella de articles UML article html 我目前拥有面向 Java EE 开发人员的 Eclipse 3 6 Heli
  • 如何用序列图来展示一个类与另一个类之间的关系,以该类的实例的实例作为输入?

    我将使用之前的相同示例question https stackoverflow com questions 66934927 how to represent the relationship between an instance of
  • 将 StarUML 图转换为 Visio 绘图

    我有一个使用 Star Uml 创建的类图 但现在的要求是将其移植到 MS Visio 是否可以将 uml 移植到具有可用 xml 信息的 vsd 提前致谢 导出为 Windows 图元文件 WMF 和增强型 Windows 图元文件 EM
  • 如何在 UML 序列图中显示实例化?

    如何显示 Web 服务器实例化视图并重新获得流的控制权 也许我没有使用正确的图表类型 非常感谢 Ruben 的答案中的图表是正确的 但缺少一般的 UML 答案 当 创建 线 在本例中为虚线 连接到所创建生命线的框 标签 顶部时 它会创建另一
  • 如何*真正*编写 UML 基数?

    我想一劳永逸地知道如何编写 UML 基数 因为我经常不得不争论它们 所以非常欢迎证明和来源 如果我想解释一下a Mother可以有几个Children but a Child有且仅有一个Mother 我应该写 Mother 1 Child
  • UML状态图中守卫和事件的区别

    我以为我可以区分event and guard 但我遇到了一个与守卫类似的事件 counter gt 4 pin is high switch on event 我将变量计数器从小于 4 的某个值更改为大于 4 的值作为事件 这是否意味着事
  • 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?

    我所说的 地图 是指我有一个 主 函数 它调用内部的许多其他程序 我希望能够看到哪个文件首先运行 第二个 第三个等等 基本上 我希望能够请参阅这个大型 OOP 设计程序 创建者没有为其制作 UML 类图 中的依赖项列表和顺序 以帮助破译代码
  • UML 到 Java 代码生成工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • UML 图 - 在我的应用程序中发送电子邮件被视为外部系统

    我的应用程序有一个联系选项 它将打开带有按摩页面的电子邮件应用程序 并且消息接收者设置为应用程序支持电子邮件 我已附上我的意思的图片 我已将其编写为需求 但不确定如何在系统类图和用例图中说明它 我最初在用例图中所做的是 将我的用户 主要参与
  • 如何设计/规划Web应用程序开发?

    我有兴趣学习如何在多个开发团队场景中设计 规划 Web 应用程序开发 担任 项目经理 主管 的角色 成功的 Web 应用程序开发需要哪些 文档 需要哪些 UML 图以及需要到什么程度 在设计 计划阶段 是否需要根据用例对每个类进行图表化 类
  • 在序列图中引用给定类的实例

    我必须建模一个系统 其中类的对象Person将调用静态方法getBook Book在课堂上Book这将返回特定书籍的实例 如何引用操作得到的图书实例 到目前为止 我可以想到两种方法 这两种方法我都没有见过 使用过 这就是为什么我正在寻找co
  • Eclipse Papyrus 上的 OCL 约束检查

    有人设法检查在 Eclipse Papyrus 中建模的类图上的 OCL 约束吗 我定义了一个简单的测试配置文件 对构造型属性只有一个约束 OCL self property gt 0 构造型扩展了 Property 元类 因此我将其应用于
  • 系统间依赖关系的UML图

    哪种 UML 图最能显示我们的 IT 系统和其他外部 IT 系统之间的依赖关系 例如我想在图表上显示 系统A从系统B获取数据 系统B可以调用系统A的一些功能 我想知道组件图和序列图之间的关系 你怎么认为 你的问题不是很具体 因为所有 UML

随机推荐

  • Linux系统中关闭看门狗的指令

    1 echo V gt dev watchdog 关掉看门狗
  • Python读取超时(Read timed out.)

    HTTPConnectionPool host XXXXXXXX port xxxx Read timed out XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Read timed out 解决方案 pip3 de
  • 编程语言python入门要电脑什么配置能带动-Python是万能的编程语言吗?这五大用途很重要!...

    这个真的不好说 因为Python可以做的事情有很多 用途也是非常广泛的 尤其是在以下领域中更具有作用 1 web开发 Python是一种解释型的脚本语言 开发效率高 所以非常适合用来做web开发 Python有上百种web开发框架 有很多成
  • 【ML on Kubernetes】第 1 章:机器学习的挑战

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • aps是什么意思_aps画幅是什么意思

    APS的原意是指 高级摄影系统 Advanced Photo System 是数码相机普及前的一种过渡产品 它仍使用胶卷 但在胶卷和暗盒上通过磁性材料和数字计划 记录了很多相关数据 还有一个特点就是APS允许用户随时在三种画幅格式切换 它们
  • 特征融合方法

    概述 基本概念 在很多工作中 融合不同尺度的特征是提高分割性能的一个重要手段 低层特征分辨率更高 包含更多位置 细节信息 但是由于经过的卷积更少 其语义性更低 噪声更多 高层特征具有更强的语义信息 但是分辨率很低 对细节的感知能力较差 如何
  • MyBatis PostgreSQL实现数组类型的操作

    我的GitHub Powerveil GitHub 我的Gitee Powercs12 powercs12 Gitee com 皮卡丘每天学Java 最近在学习数据库PostgreSQL 遇到如何实现对数组类型的数据操作 试着自己尝试学习实
  • UE5关于高亮显示物体轮廓线

    描边材质如果是透明的话 不会显示描边 材质参数勾选 允许自定义深度写入 即可 材质参考这个文章 https blog csdn net Axiang 0123 article details 121168272 ops request mi
  • 多标签分类怎么做?教你4招

    首先简单介绍下 多标签分类与多分类 多任务学习的关系 多分类学习 Multi class 分类器去划分的类别是多个的 但对于每一个样本只能有一个类别 类别间是互斥的 例如 分类器判断这只动物是猫 狗 猪 每个样本只能有一种类别 就是一个三分
  • iview表格单元格动态绑定class/style,不刷新表格本身.

    对订单表格的时间列 动态检验时间是否过期并用颜色标记 关键点是在render中的渲染函数动态绑定class style 小问题是表格数据本身是确定的不再变化 我们又需要跟随时间变化 所以首选需要一个定时器 定时器不能放在表格里会导致计时器不
  • 我的第一个小爬虫程序-python

    爬什么 爬代理服务器网站的服务器 端口 代理种类 所在地区 更新日期 今日评分 总的评分 可用 速度测评信息 这样的网页有七八个 好在网址明名很规则 具体说就是爬很多的这样的html代码里的信息 span class tbBottomLin
  • 【论文】AMC:AutoML用于移动设备上的模型压缩和加速

    摘要 模型压缩是在计算资源有限且功率预算紧张的移动设备上高效部署神经网络模型的有效技术 传统的模型压缩技术依赖于手工制作的特性 需要领域专家在模型大小 速度和精度之间进行权衡 以探索大的设计空间 这通常是次优和耗时的 在本文中 我们提出了用
  • 不想安装环境,我如何与前端工程师远程协作开发?

    最近我的一名前端工程师朋友Wendy正基于自己的想法开发一个开源项目 为了让用户了解并试用项目 她准备用Nextjs这个前端框架搭建一个用户使用手册网站 写文档的时候 她想到了我这个产品经理朋友 希望我能够帮助她一起开发这个网站 提供更好的
  • 【Qt/C++异常笔记】“QHostInfo”: 不是类或命名空间名称

    文章目录 异常描述 异常原因 解决方法 开发环境 异常描述 在读取主机名称时 需要用到 QHostInfo localHostName 但是使用了之后一直报错 QHostInfo 不是类或命名空间名称 头文件中引用 include
  • 《数据结构与算法》实验:图结构的建立与搜索

    数据结构与算法 实验和课程Github资源 数据结构与算法 实验 线性结构及其应用 算术表达式求值 数据结构与算法 实验 树型结构的建立与遍历 数据结构与算法 实验 图结构的建立与搜索 数据结构与算法 实验 查找结构的实验比较 二叉查找树B
  • 图的m着色问题(第十二次实验)

    图的m着色问题 问题 图的m着色问题 给定无向连通图G和m种颜色 用这些颜色给图的顶点着色 每个顶点一种颜色 如果要求G的每条边的两个顶点着不同颜色 给出所有可能的着色方案 如果不存在 则回答 NO 解析 图着色问题描述为 给定无向连通图G
  • Qt开发之QTableWidget

    QTableWidget从继承QTableView 实质属于模型 视图范畴之内 只是带了默认模型 model 基于项目 item 的表格视图控件 我们不需要实现model内的数据加工 QTableWidget为应用程序提供了标准的表显示工具
  • 【MybBatis高级篇】MyBatis 拦截器

    MybBatis高级篇 MyBatis 拦截器 拦截器介绍 实现拦截器 注册拦截器 应用 yml DynamicSql Dao 层代码 xml 启动类 拦截器核心代码 代码测试 拦截器应用场景 MyBatis 是一个流行的 Java 持久层
  • python数据分析与可视化——第二章实训

    1 读取数据 import csv f open F 专业课程作业 python时空数据分析与可视化 white wine csv r 定义读取器 reader csv reader f data 定义列表存储读取的数据 for row i
  • UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言 Unified Modeling Language UML 是一种为面向对象系统的产品进行说明 可视化和编制文档的一种标准语言 是非专利的第三代建模和规约语言 UML是面向对象设计的建模工具 独立于任何具体程序设计语言 1 U