UML建模

news2024/9/20 14:31:35

UML定义了行为图(动态)和状态图(静态)两大类。(分类依据:对象是否根据时间变化)
下面简介一下用例图、类图、时序图和状态图的概念。

“4+1”视图模型

  • 逻辑视图:逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析。在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。
  • 开发视图:开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。服务于软件编程人员,方便后续的设计与实现。它通过系统输入输出关系的模型图和子系统图来描述。要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:JavaSDK,图像处理软件包)。
  • 进程视图:进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。
  • 物理视图:物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映射。

在这里插入图片描述

用例图

用例图的作用:是动态视图,是需求分析产物,主要作用就是描述参与者和用例之间的关系,帮助开放人员了解系统的功能。
由参与者(Actor)、用例(Use Case) 以及它们之间的关系构成。其中用例和参与者之间的对应关系又叫做通讯关联(Communication Association)。

用例图的构成元素有四个:参与者(角色)、用例、系统边界和元素

  • 参与者(Actor):系统外部并且直接与程序或者系统接触的人、系统、子系统的外部实体的抽象,在UML中使用一个小人来进行表示。

  • 用例:用例即使外部可见的系统功能,对系统提供的服务来进行描述,使用椭圆来进行表示。

  • 系统边界:指系统与系统之间的界限,使用方形框+系统名称来表示。

  • 元素间的关系有四个:关联、泛化、包含、依赖

    • 关联:参与者与用例之间的关系,,如何一方都可以接收或者发送信息(箭头指向信息接受方) 实线实心箭头。——>
    • 泛化:是类元一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并且对其进行了扩展。具体描述完全拥有一般描述的特性、成员和关系,并且包含补充信息(类似于Java这继承关系)。实线空心箭头。
    • 依赖:类A的实现需要使用到B,这就是依赖,这种使用关系是具有偶然性、临时性、非常弱的,并且B类的的变化会影响到A,则A与B就是存在依赖关系,依赖关系是弱的关联关系,例如:人们依赖计算机去做软件的开发。虚线+箭头 --------->

    箭头+虚线不仅仅可以代表依赖关系,还可以代表扩展、包含关系,扩展就是对用例功能的延申,包含就是将一个复杂的功能分解成数个小的功能

总结:用例图实是动态 的面向用户的包含用例(系统提供服务)、参与者(外部实体),重点在于两者之间的关联有关联、泛化、依赖三种关系。关联是参与者和用例,用实心实线箭头;泛化和继承一样,用实线空心箭头;依赖有包含(功能分解)和扩展(功能延伸)两种。关联 最实在;泛化 毕竟是继承,线条是实在的,但是儿子可能是空的;依赖 最不可靠,线条都是虚的,依赖可能是依赖子功能(没他不行),可能是依赖扩展的功能(有他更好)。
参与者:外部实体、名词
用例:系统服务、动词
   绘制范例:
在火车票预订系统中,客户可以进行购买车票、退订车票、查询余票和查询列车时刻四个操作。不管是购买车票还是退订车票,用户都必须先进行登录系统操作。其中查询列车时刻主要包括按站站查询和按车次查询两种方式。如果在登录系统的过程中忘记密码,则还可使用找回密码功能。	   

在这里插入图片描述

在学生信息管理系统的“网上选课模块”中,学生可以进行“查看课程信息”、“选择课程”和“删除已选课程”三个操作。“查看课程信息”主要包括“按课程编号查看”和“按课程名查看”两种方式。管理员可以进行 “维护课程信息” 操作。学生和管理员的所有操作均需“登录系统”后方可完成。如果在“登录系统”的过程中忘记密码,则还可使用“找回密码”功能。

在这里插入图片描述

类图和对象图

可见性4级:
protected:使用前缀#表示,只对该类的子类可见
private:使用前缀-表示,只在该类内部可见
package: 所有可见
public: 所有类可见

类之间可以建立四种关系:关联、依赖、聚合和泛化。
聚合就是一些系统特性的组成一个整体,如大雁与雁群的关系 实线+空心菱形,指向聚合对象。(eg:大雁聚合成雁群)
组合是特殊的聚合,实线+实心菱形,指向组合对象。(eg:菜单+按钮组合成窗口)
在这里插入图片描述

顺序图

在这里插入图片描述
同步消息:一个对象发消息后,知道对象回应,都处于阻塞状态。
异步消息:一个对象发消息后,不需要等响应,可以进行其他操作。

状态图

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

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

相关文章

CV攻城狮入门VIT(vision transformer)之旅——近年超火的Transformer你再不了解就晚了!

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

PowerJob 定时从SFTP下载文件踩的坑

一. 业务需求 SFTP上有多个目录, 每小时要下载一次文件, 每个目录的下载任务都是一个独立的工作流任务. 二.问题描述 手动执行每个任务可以正常执行, 但是当所有任务都开启定定时任务执行时(每小时执行一次),任务实例就会报错. 三.问题分析 查看服务端和worker端的日志, …

【ML特征工程】第 2 章 :简单数字的花式技巧

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

PDF怎么转换成Word?给大家分享三种简单的转换方法

我们怎么把拿到手的PDF文件转换成Word文档格式呢?众所周知,PDF文件虽然没有办法能够直接在文件上进行编辑,但是我们可以借助一些编辑软件来实现这一操作,尽管这样还是会有很多小伙伴习惯在Word中来编辑文件内容,因此怎…

EasyRecovery2023重新找回丢失的文件数据恢复软件

Ontrack EasyRecovery2023易恢复一款数据文件恢复软件,号称最好的数据恢复软件!可以全面恢复删除丢失数据,能对电脑误删文件恢复,格式化硬盘数据恢复,手机U盘数据恢复等等,威力非常的强大!支持恢…

运动耳机怎么选,盘点目前适合运动的几款耳机

​相对于传统耳机而言,现如今越来越多的人喜欢使用骨传导耳机,毕竟无需入耳不管是在运动还是日常,防丢能力会更加好,耳挂式的佩戴更加不用担心在剧烈运动的情况下脱落,但在骨传导耳机中已经有了很多个品牌入驻&#xf…

先聊聊「堆栈」,再聊聊「逃逸分析」。Let’s Go!

要搞清楚GO的逃逸分析一定要先搞清楚内存分配和堆栈: 内存分配既可以分配到堆中,也可以分配到栈中。 什么样的数据会被分配到栈中,什么样的数据又会被分配到堆中呢? GO语言是如何进行内存分配的呢?其设计初衷和实现原…

云原生丨5大Datadog集成,快速提高团队效率!

Datadog是DevOps、开发人员和 SRE 团队的必备好物,它适用于各种规模的云应用程序。 然而,尽管 Datadog 功能十分强大,但大多数企业并没有充分发挥 Datadog 全部价值。 什么是 Datadog Datadog 是一个可观察性平台,提供监控、安…

3.1、数据链路层概述

3.1、数据链路层概述 3.1.1、数据链路层在网络体系结构中所处的地位 如下所示,主机 H1 给主机 H2 发送数据,中间要经过三个路由器和电话网、局域网以及广域网等多种网络 从五层协议原理体系结构的角度来看: 主机应具有体系结构中的各个层…

使用HTML制作静态网站:传统文化戏剧锡剧带psd设计图(2个页面)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【项目_01】搭建项目基本框架、底部tabbar、头部banner | 旅途拾景 | 基于Vue3全家桶

💭💭 ✨:搭建项目基本框架、底部tabbar、头部banner| 路途拾景 | 基于Vue3全家桶   💟:东非不开森的主页   💜: 因为很多东西来不及去做去看可是时间很快总是赶不上,所以要去成长呀&#x1f4…

作业-11.23

1、广播 接收端 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> #include <netinet/in.h> #include <netinet/ip.h> #include <arpa/inet.h> #include <unistd.h> #include <str…

Diffusion Autoencoders: Toward a Meaningful and Decodable Representation

​ Diffusion Autoencoders: Toward a Meaningful and Decodable Representation 扩散自编码器:面向有意义和可解码的表示 code&#xff1a;https://github.com/phizaz/diffae A CVPR 2022 (ORAL) paper (paper, site, 5-min video) Diffusion probabilistic models (DPMs) hav…

算法设计与分析 SCAU17089 最大m子段和

17089 最大m子段和 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description “最大m子段和”问题&#xff1a;给定由n个整数&#xff08;可能为负&#xff09;组成的序列a1、a2、a3、…、an&#xff0c;以及一个正整数m&a…

【Java】初识IO流【附导航】

文章目录01 什么是IO02 数据源03 什么是流04 IO流原理⇩➩ 导航01 什么是IO 对于任何程序设计语言而言&#xff0c;输入输出&#xff08;Input / Output&#xff09;系统都是非常核心的功能。程序运行需要数据&#xff0c;数据的获取往往需要跟系统外部进行通信&#xff0c;外部…

论文复现|Panoptic Deeplab(全景分割PyTorch)

摘要&#xff1a;这是发表于CVPR 2020的一篇论文的复现模型。本文分享自华为云社区《Panoptic Deeplab(全景分割PyTorch)》&#xff0c;作者&#xff1a;HWCloudAI 。 这是发表于CVPR 2020的一篇论文的复现模型&#xff0c;B. Cheng et al, “Panoptic-DeepLab: A Simple, Str…

63. 不同路径 II

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

MySQL主/从-主/主集群安装部署

MySQL集群架构的介绍 我们在使用到MySQL数据库的时候&#xff0c;只是一个单机的数据库服务。在实际的生产环境中&#xff0c;数据量可能会非常庞大&#xff0c;这样单机服务的MySQL在使用的时候&#xff0c;性能会受到影响影响。并且单机服务的MySQL的数据安全性也会受到影响…

数字信号处理-09-串行FIR滤波器MATLAB与FPGA实现

前言 本文介绍了设计滤波器的FPGA实现步骤&#xff0c;并结合杜勇老师的书籍中的串行FIR滤波器部分进行一步步实现硬件设计&#xff0c;对书中的架构做了简单的优化&#xff0c;并进行了仿真验证。 FIR滤波器的FPGA实现步骤 从工程角度分析FIR滤波器的FPGA实现步骤如下&…

Vim简洁教程

Vim简洁教程Vim简介使用方法命令模式输入模式底线命令模式模式转换使用流程Vim键盘图Vim简介 在Linux系统中&#xff0c;Vim是一款自带的文本编辑器&#xff0c;因此Vim常用于Linux系统中。Vim是从 vi 发展出来的&#xff0c;包含代码补全、编译及错误跳转等方便编程的功能&am…