UML简述(项目立项、设计、需求整理必备)

UML目录

  • 前言
  • 1、UML概述
    • 1.1、基本概念
    • 1.2、UML图类型说明
    • 1.3、UML的4+1视图
  • 2、UML图详细图示
    • 2.1、类图
    • 2.2、对象图
    • 2.3、组件图
    • 2.4、部署图
    • 2.5、包图
    • 2.6、用例图
    • 2.7、状态图
    • 2.8、活动图
    • 2.9、时序图
    • 2.10、通信图(协作图)
    • 2.11、定时图(计时图)

前言

今天给大家带来

1、UML概述

1.1、基本概念

统一建模语言(UML,Unified Model Language)
在这里插入图片描述

1.2、UML图类型说明

静态图/动态图UML图类型说明
静态图(结构图)类图一组类、接口、协作和它们之间的关系。
对象图一组对象和它们之间的关系。
构件图一个封装的类和它的接口。
部署图软硬件之间的映射。
制品图系统的物理结构。
包图由模型本身分解而成的组织单元,以及它们之间的依赖关系。
组织结构图描述了一个"组合结构"的内部结构,以及他们之间的关系。
动态图(行为图)用例图系统与外部参与者的交互。
状态图状态转换变迁。
活动图类似程序流程图,并行行为。
时序图强调按时间顺序。
通信(协作)图描述了收发消息的对象的组织关系。
定时图强调实际时间。
交互概览图与活动图类似,但是它的节点是交互图。
其中时序图、通信图、定时图、交互概览图属于交互图

1.3、UML的4+1视图

在这里插入图片描述
详细描述:

视图类型作用组成使用者
逻辑视图用于描述用例视图中提出的系统功能的实现。主要关注系统内部,即描述系统的静态结构(类、对象以及它们之间的关系),也描述系统内部的动态协作关系。1、静态图:类图、对象图。

2、动态图:状态机图、时序图、活动图等。
系统分析、设计人员
实现视图主要侧重于软件模块的组织和管理。要考虑软件内部的需求,如软件开发的容易性、软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。1、物理代码文件;

2、组件图。
程序员
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。1、状态图、活动图、通信图;系统集成人员
部署视图用于显示系统的物理配置,描述的位于节点上的运行实例的部署情况。1、部署图;系统和网络工程师
用例视图描述系统应具备的功能,关注系统外部,从系统的外部看到的系统的功能。1、用例图;最终用户

2、UML图详细图示

2.1、类图

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

  1. 类(Class):在面向对象编程中,类是对现实世界中一组具有相同特征的物体的抽象。
    在这里插入图片描述
  2. 接口(Interface):接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。
    在这里插入图片描述
    【类图中的关系】
    在这里插入图片描述
关系说明图形表示
泛化(Generalization)是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。(箭头指向父类)
在这里插入图片描述
实现(Realization)是一种类与接口的关系,表示类是接口所有特征和行为的实现。(箭头指向接口)
在这里插入图片描述
关联(Association)是一种拥有的关系,它使一个类知道另一个类的属性和方法(指向被拥有者,可以没有箭头)
在这里插入图片描述
聚合(Aggregation)是整体与部分的关系,且部分可以离开整体而单独存在。(菱形指向整体)在这里插入图片描述
组合(Composition)是整体与部分的关系,但部分不能离开整体而单独存在。(菱形指向整体)在这里插入图片描述
依赖(Dependency)是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。(指向被使用者)在这里插入图片描述

2.2、对象图

【概念】对象图(Object Diagram)是类图的一个实例,是系统在某个时间点的详细状态的快照。
【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。
在这里插入图片描述

2.3、组件图

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

2.4、部署图

【概念】部署图(Deployment Diagram)描述了系统内部的软件如何分布在不同的节点上。
【目的】用来表示软件和硬件的映射关系。
在这里插入图片描述

2.5、包图

【概念】描绘了系统在包层面上的结构设计(多个类或组件组成了一个子系统,就可以将它们放到一个包中)。
【目的】用来表示包和包之间的依赖关系。

2.6、用例图

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

  1. 用户角度描述系统功能;
  2. 参与者是外部触发因素(包括用户、组织、外部系统,时间);
  3. 用例是功能单元。

【关系】
1.包含关系:如图,其中这个提取出来的公共用例B称为抽象用例,原始用例A称为基本(基础)用例。当可以从两个或两个以上的用例提出公共行为时,应该使用包含关系来表示它们。
在这里插入图片描述这里表示B这个用例其实属于A,但是为了提出公共行为,才拉出来

  1. 扩展关系:如图,如果一个用例明显混合了两种或以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例;
    在这里插入图片描述这里简单说就是A和B原本是在一个用例下,但是这一个用例描述两个功能不明确,拆分称A和B,一般A是常用的功能,作为基础用例

  2. 泛化关系:表示子用例继承父用例所有结构、行为和关系。

【建模流程】

  1. 识别参与者(必须);
  2. 合并需求获得用例(必须);
  3. 细化用例描述(必须);
  4. 调整用例模型(可选);
    在这里插入图片描述
    【用例规约】用例名称、用例ID、角色、用例说明、前置条件、基本事件流、其他事件流、异常事件流、后置条件
    在这里插入图片描述

2.7、状态图

【概念】状态图(State Diagram)对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。
【目的】对类描述的补充,用于展现此类对象所具有的可能状态,以及某些事件发生时状态转移情况。
在这里插入图片描述
在这里插入图片描述

2.8、活动图

【概念】描述了具体业务用例的实现流程。
【目的】用来表示用例实现的工作流程。
在这里插入图片描述

2.9、时序图

【概念】序列图(Sequence Diagram)根据时间序列展示对象如何进行协作。它强调对象之间发消息发送接收的顺序,同时显示对象之间的交往。
【目的】通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
在这里插入图片描述
组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。

组合片段共有13种,名称及含义如下:

片段类型名称说明
Opt选项包含一个可能发生或可能不发生的序列。可以在临界中指定序列发生的条件。
Alt抉择包含一个片段列表,这些片段包含备选消息序列。在任何场合下只发生一个序列。可以在每个片段中设置—个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。 如果所有临界都为 False 并且没有 else,则不执行任何片段。
Loop循环片段重复一定次数。可以在临界中指示片段重复的条件。Loop 组合片段具有Min 和Max 属性,它们指示片段可以重复的最小和最大次数。默认值是无限制。
Break中断如果执行此片段,则放弃序列的其余部分。 可以使用临界来指示发生中断的条件。
Par并行并行处理。片段中的事件可以交错。
Critical关键用在 Par 或 seq 片段中。指示此片段中的消息不得与其他消息交错。
Seq弱顺序有两个或更多操作数片段。涉及同一生命线的消息必须以片段的顺序发生。如果消息涉及的生命线不同,来自不同片段的消息可能会井行交错。
Strict强顺序有两个或更多操作数片段。这些片段必须技给定顺序发生。
Consider考虑指定此片段描述的消息列表。其他消息可发生在运行的系統中,但对此描述来说意义不大。在Messages属性中键入该列表。
Ignore忽略此片段未描述的消息列表。这些消息可发生在运行的系统中,但对此描述来说意义不大。在Messages属性中键入该列表。
Assert断言操作数片段指定唯一有效的序列。通常用在 Consider 或 Ignore 片段中。
Neg否定此片段中显示的序列不得发生。通常用在 Consider 或 Ignore 片段中。

2.10、通信图(协作图)

【概念】通信图(Communication Diagram)描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。
【目的】用来显示不同对象的关系。
在这里插入图片描述

2.11、定时图(计时图)

【概念】时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。
【目的】用于展示交互过程中的真实事件信息,具体描述对象状态变化的时间以及维持特定状态的时间段。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BurpSuite2024.2.1

1.更新介绍 此版本引入了特定的API 扫描功能,并将 Bambdas 合并到 Logger 捕获过滤器中。我们还改进了 DOM Invader 和 Burp Suite 导航记录器的功能,并进行了许多其他改进和错误修复。 API扫描 我们引入了特定的 API 扫描功能。您现在可以上传 OpenAP…

【PHP】PHP通过串口与硬件通讯,向硬件设备发送数据并接收硬件返回的数据

一、前言 之前写过两篇PHP实现与硬件串口交互的文章,一篇是【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据(上)_php串口通信-CSDN博客,另一篇是【PHP】PHP实现与硬件串口交互,向硬件设备发送指令数…

Java开发从入门到精通(一):Java的基础语法进阶

Java大数据开发和安全开发 (一)Java注释符1.1 单行注释 //1.2 多行注释 /* */1.3 文档注释 /** */1.4 各种注释区别1.5 注释的特点1.5 注释的快捷键 (二)Java的字面量(三)Java的变量3.1 认识变量3.2 为什么…

基于Easyexcel实现不同场景的导出功能

基于Easyexcel实现不同场景的导出功能 导出的数据包含有图片 导出excel表格的数据包含有图片,这种场景比较少。通Easyexcel实现这样的需求,我认为最简便的方法就是使用前面提到的自定义转换器(com.alibaba.excel.converters.Converter&…

sql 注入 之sqli-labs/less-5 双注入,也称:报错注入

该关卡返回正确或者错误页面,还有错误的代码,所以可以使用报错注入。报错注入的方式: updatexml 函数注入: mysql5.1.5 版本以上支持该函数,返回数据限制32位 模板:select * from user where id1 and (updatexml(&q…

【YOLO v5 v7 v8 v9小目标改进】辅助超推理SAHI:分而治之,解决高分辨率图像中小物体检测的问题

辅助超推理SAHI:分而治之,解决高分辨率图像中小物体检测的问题 设计思路结构小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改YOLO v9 魔改 论文:https://arxiv.org/pdf/2202.06934.pdf 代码:https://github.com/obss/sahi 设计思…

RabbitMQ 交换器

RabbitMQ 交换器 官方例子 http://www.rabbitmq.com/getstarted.html direct 如上图所示,两个队列绑定到了direct交换器上,第一个队列绑定的 binding key 为 orange ,第二个队列有两个绑定,分别是 black 和 green 。 如上图所示…

为什么那么多程序员推荐 Linux,是不是在 Linux 下开发效率高?

为什么那么多程序员推荐 Linux,是不是在 Linux 下开发效率高? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Linux 的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全…

java SSM厂房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM厂房管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S…

基于el-tree实现懒加载穿梭条

一、关键代码 <template><div><!-- 左侧待选列表 --><div class"left-box"><p>待选列表</p><el-input placeholder"输入关键词过滤" v-model"leftFilterText" clearable/><el-treeref"tree…

电商自动集成端口(API商品接口)上线!轻松用API对接各大电商接口

对卖家阿沸而言&#xff0c;处理订单配送是一项比较复杂的任务&#xff0c;他必须要同时处理大量的来自全球多个渠道和地点的各种SKU订单&#xff0c;还要将库存分开管理&#xff0c;发货时总是搞得手忙脚乱...... 我们知道&#xff0c;正确配送订单对于保持客户满意度和忠诚度…

Java多线程——如何保证原子性

目录 引出原子性保障原子性CAS 创建线程有几种方式&#xff1f;方式1&#xff1a;继承Thread创建线程方式2&#xff1a;通过Runnable方式3&#xff1a;通过Callable创建线程方式4&#xff1a;通过线程池概述ThreadPoolExecutor API代码实现源码分析工作原理&#xff1a;线程池的…