系统分析与设计——UML图总结

2023-11-15

一. 前言
期末考试之前,我复习系统分析与设计的时候对UML图做了一些知识汇总,现在放到博客上。如果有不对或不恰当的地方,欢迎各位指正。本文仅仅起记录作用,可随意转载,荣幸之至。
截图来自网络或是老师的PPT

二. 概述
· 系统模型的三个主要部分:
在这里插入图片描述
功能模型:从用户的角度来看,系统的功能。包括用例图等
对象模型:用对象表示系统的结构和子结构、属性、操作或关系等。包括类图
动态模型:表示系统的内部行为。包括顺序图、活动图、状态图等

· 行为图和交互图:
在这里插入图片描述
行为图包括:用例图、状态图、活动图和交互图。交互图又包括顺序图,协作图等。用一个树形结构来表示各种图的关系:

下面根据例子介绍主要的几种图。

三. 具体例子
· sequence diagram(顺序图):
从左到右画出对象及其生命线,对象用矩形表示,生命线用虚线;
在生命线中嵌入的矩形,表示某一过程;对象之间用带箭头的线表示消息传递:

上图表示客户在银行取款的部分顺序图。客户插卡属于消息传递,用带箭头实线表示并在线上面注明行为;
返回的消息用带箭头虚线表示。同步消息和异步消息的区别如图所示。

如果消息传递受某个条件限制,将该条件用 [] 括起来;
表示if…else…结构,用Alt关键字标示(即alternative),并将该结构用实线框括起来:

if…then…结构同上,区别在于关键字Alt改为Opt。
再放一个例子:电梯系统中,一个乘客在一楼呼叫电梯准备上六楼:

这个电梯系统的顺序图是我自己设计的,不一定很正确,但是可以参考画顺序图的规则。


· state machine diagram(状态图):
表示系统的各个对象的状态变化。状态用圆边矩形表示,状态之间用带箭头实线表示,实线上标注驱动状态改变的事件。
起始点(请忽略图中的文字):
在这里插入图片描述
结束点:
在这里插入图片描述
异常终止点:
在这里插入图片描述
例子:仍然是电梯系统,一个乘客在一楼呼叫电梯准备上六楼,电梯的状态图:
在这里插入图片描述
历史状态:例如,洗衣机洗到一半突然断电,但是记录了历史状态,当通电后可以继续运行:
在这里插入图片描述


· collaboration diagram(协作图):
主要表示对象间的协作关系。对象用矩形表示,用带无箭头实线表示对象间有关系,实线上方用箭头表示消息的传递,注意这些消息要用序号标记。
下图为一个打印公司的协作图:
在这里插入图片描述
再例如,下图为一个安保系统的协作图,包括的对象有保安,操作台,火警传感器,安保传感器,窃贼:
在这里插入图片描述


· use case diagram(用例图):
表示系统的对象和用例。系统具有边界,对象用矩形表示,画在边界外;用例用椭圆表示,画在边界内。一个对象是一个用例的actor,则将它们连起来。
用例的关系:包含、扩展、泛化,包含和扩展都是虚线,而泛化是实线+三角,泛化的画法同对象图。扩展关系标注为extend,是带箭头的虚线,指向被扩展的用例。包含关系标注为include,也是带箭头的虚线,指向被包含的用例。
行为者和用例的连接是不需要文字说明的。
在这里插入图片描述
在这里插入图片描述
当用例图设计多个系统、多个对象,可以分开来画:
在这里插入图片描述


· activity diagram(活动图):
活动图是用例流,不使用对象、类等,但是对象也可以标注出来,要下划线,可用[]表示当前该对象的状态。
活动图的泳道:将用例按照功能或者对象分成几个部分,用实线隔开,状似泳道:
在这里插入图片描述
包括起始点、终止点(和状态图相同),对操作流建模,当一个操作完成时,流立即转移到下一个操作。状态的自动转移使它区别于状态图。下例为“作者-出版社-印刷厂”的活动图:
在这里插入图片描述
分支(选择性转移)的画法(状态图的分支也是这样画):
在这里插入图片描述
并发执行的画法:
在这里插入图片描述


· component diagram(组件图):
通常组件在运行时由一个或多个(对象)实现,具有比类图更高的抽象级别。组件图中所有的元素都是私有的。组件图之间通过接口相连,接口分为两种:一种用于访问其他组件(凸形),一种提供给其他组件访问(凹形)。例如:
在这里插入图片描述


· class diagram(类图)
类图是最常见的UML模型。包括类名、属性、方法三个部分:
在这里插入图片描述
类之间的关系有(根据关联强度从大到小):泛化=实现,组合,聚合,关联,依赖。
类图分为分析类图和设计类图。我们一般先构思分析类图,再构思设计类图。两者的区别:
a.一个分析类可能被分解成一个或多个设计类或接口;
b.在分析阶段类图研究领域的概念,可以理解为从需求中获取,而在设计阶段类图重点描述类与类之间的接口;
c.分析类的三高:高于设计实现(不必理会复杂的设计要求比如系统框架)、高于语言实现(不必理会采用哪一种特性的语言来编写)、高于实现方式(不必考虑采用哪一种具体的实现方式)。

设计类应当:指明每个模块的指责、具有完整的属性和完全的描述(可见性、属性名、类型、默认值)、完整的实现方法(可见性、方法名、变量列表、属性、返回值)。例如:
在这里插入图片描述
分析类转为设计类:细化分析类(分析类的抽象更加细节化、增加新的属性以使类能够完整地实现)、将大的分析类拆分;细化分析关系:拆分出整体和部分(用组合或聚合连接);注意标出数据结构的特点如indexed、sorted、set:
在这里插入图片描述
总之,当我们分析问题域的时候,我们一般用分析类图进行表示;当我们的分析已经成熟,考虑将它们具体地实现时,一般会借用设计类图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统分析与设计——UML图总结 的相关文章

  • 凌乱的日期

    import java util ArrayList import java util Arrays import java util Collections import java util HashSet import java uti

随机推荐

  • ubuntu安装驱动 USB转转串口 232串口 PL2303 DB9

    ubuntu安装驱动 USB转串口 RS232串口 PL2303 DB9 工具 安装软件minicom minicom功能快捷键 minicom的使用 cutecom软件安装 cutecom使用 工具 因为我使用的是rs232串口设备芯片为
  • 6.Docker容器底层实现了解与安全机制

    原文地址 点击直达 文章目录 0x00 底层实现 基本架构 简述I O设备 1 命名空间 2 控制组 子系统之Devices 子系统之cpuset 子系统之cpu 子系统之cpuacct 子系统之memory 子系统之blki
  • 一看就懂TCP/IP协议族全析

    TCP IP协议族 计算机与网络设备要相互通信 双方就必须基于相同的方法 如何探测到通信目标 由那一边现发起通信 使用哪种语言 使用那种操作系统 怎样结束通信等都需要事先确定 不同的硬件 操作系统之间的相互通信 所有的这一切都需要一种规则
  • QDialog、QWidget、QMainWindow的区别

    QDialog QWidget QMainWindow的区别 dialog有exec函数 如果是dialog窗口 后边的窗口是不可选的 widget和dialog都有show函数 如果通过这个函数显示这两种类型的窗口 则两个窗口都是可选的
  • 国际带宽市场的发展趋势和前景

    随着全球互联网的不断普及和云计算 人工智能等新技术的迅猛发展 国际带宽市场在不断扩大 成为了全球信息通信领域的重要组成部分 本文将就国际带宽市场的发展趋势和前景进行探讨 一 市场概况 国际带宽是指一个国家或地区连接国际互联网所拥有的带宽资源
  • VMware Workstation Pro 16.2.4安装教程

    VMware Workstation Pro 16 2 4 安装教程 文章目录 VMware Workstation Pro 16 2 4 安装教程 下载最新版VMware 双击打开 自定义安装位置 把 去掉 点击下一步 等待安装 点击许可
  • 主从服务器 共用文件,Docker+keepalived+nginx实现主从热备的方法示例

    前言 为解决单点故障 我们需要配置主从热备方案 服务器数量有限 故使用Docker模拟安装配置 本次配置默认已经安装了Docker 配置环境 centos7 64位 docker版本 Docker version 17 12 1 ce bu
  • Apache Storm之集群安装

    1 环境 storm 1 2 1 Java 7 storm 1 x对java 7 和 java 8均进行了测试 Pytho 2 6 6 Python 3 x理论上也可以 但是并不作为storm的测试 以上是storm的环境 如果不匹配的ja
  • python-异常处理汇总

    1 需求 当程序遇到问题时 不让程序结束 而越过错误继续向下执行 格式 try 语句t except 错误码 语句1 except 错误码 语句2 except 错误码 语句3 except 错误码 语句n else 语句e 注意 else
  • 数字IC秋招面试专题(二)verilog的signed和unsigned

    数字IC秋招面试专题 二 verilog的signed和unsigned 前言 一 右值按signed还是unsigned 二 signed的自动扩位 三 系统函数 signed 和 unsigned 总结 声明 未经作者允许 禁止转载 推
  • ​【UI界面】Foobar2000 FlatLite 整合版

    Foobar2000 是一款本地音乐播放器 这里我就不再做介绍了 不懂的请自行了解 此 Foobar2000 FlatLite 主题包为整合版本 下载既可用 主题界面是模块化的 JS 面板 每个面板都是独立的 面板里的图标也是由 JS 脚本
  • JAVA字符串的两种定义方式的区别

    关于JAVA中两种字符串定义方式的区别 第一次写 就当复习总结一下 希望能帮到需要的人吧 我们知道在JAVA中 对于字符串的实例化方式有两种 直接赋值 String str Hello World 构造方法实例化 String str ne
  • 编写dylib_如何使用第三方的dylib

    展开全部 所谓dylib 就是bsd风格的动态库 基本可以认为等价于e5a48de588b63231313335323631343130323136353331333339663331windows的dll和linux的so mac基于bs
  • car

    本篇介绍如何检验回归结果是否符合模型假设 以及样本中是否存在异常点 本篇使用的主要工具包是car 包名是Companion to Applied Regression的缩写 该包提供了许多用于模型检验的函数 初始模型如下 library c
  • HTML快速参考指南

    目录 HTML 基础文档 文本元素 逻辑样式 物理样式 链接 锚 图像元素 无序列表 有序列表 定义列表 表格 框架 表单 实体 其他元素 HTML 基础文档 Visible text goes here 文本元素 p This is a
  • windows下编写shell脚本完美解决换行问题$'\r': command not found

    前面已经写过另外一边关于解决编写shell脚本换行的问题 即在Linux下执行命令 sed i s r g 文件名称 比如 sed i s r g host1 sh 今天是另外一种方式解决 使用ultraEdit软件编写shell脚本 新建
  • 【mysql】出现 slow sql 问题及建议

    文章目录 1 SQL 执行什么情况下会变慢 2 影响 SQL 语句执行效率的主要因素有哪些 3 慢 SQL 是如何拖垮数据库的 4 最佳实践建议 1 SQL 执行什么情况下会变慢 数据量增加 数据库中的数据量可能会逐渐增加 导致查询变慢 查
  • Python 常用写法

    时间 1 now import datetime now datetime now nowStr now strftime now Y m d H M S list 1 分割最后一个 arr str rsplit 1 2 数组 加索引 en
  • 学习C++项目——select模型,poll模型和epoll模型

    学习计算机网络编程 一 思路和学习方法 本文学习于 C语言技术网 www freecplus net 在 b 站学习于 C 语言技术网 并加以自己的一些理解和复现 如有侵权会删除 接下来应该是网络编程部分最难也是最常用的部分 同时在这一章我
  • 系统分析与设计——UML图总结

    一 前言 期末考试之前 我复习系统分析与设计的时候对UML图做了一些知识汇总 现在放到博客上 如果有不对或不恰当的地方 欢迎各位指正 本文仅仅起记录作用 可随意转载 荣幸之至 截图来自网络或是老师的PPT 二 概述 系统模型的三个主要部分