网站建设定制单/百度登陆

网站建设定制单,百度登陆,百度搜索数据,2023年长沙疫情最新消息通知🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言

2. UML概述

2.1 UML的分类与功能

2.2 UML的语法与各图关系 ​

3. 四种图的概述

3.1 状态图

3.2 活动图(Activity Diagram)

3.3 构件图(Component Diagram)

3.4 部署图(Deployment Diagram)

4. 状态图

4.1 状态图概要

4.2 状态图中的事物及解释

4.3 状态的可选活动表​

4.4 实例 

(1)网上银行登录系统​

5. 活动图 

5.1 活动图概要

5.2 活动图和状态图的关系

5.3 活动图事物​编辑

5.4 活动图关系

5.5 实例

​编辑

6. 构件图

6.1 构件图概要

6.2 构件图中的事物及解释

6.3 构件图中的关系及解释

6.4 实例

实例1

实例2

7. 部署图

7.1 部署图概要

 7.2 部署图中的事物及解释​编辑

7.3 部署图中的关系及解释

7.4 实例

实例1

实例2

7.5  部署图与构件图的关系

8. 总结 


1. 前言

2. UML概述

所谓UML(Unified Modeling Language,统一建模语言),一种用来对软件密集系统进行可视化建模的语言。

这样的概念大概解释了UML是什么,不过还不够直观。

我们可以换个问题,UML做到了什么,让人们愿意为之喝彩?

答案就是,它统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。它是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。

如此一来,UML的本质也就呼之欲出了。UML的本质就是为了交流

一句话:一个UML就能完成整个软件开发中的交流需要

2.1 UML的分类与功能

UML2.0一共有12种图形(UML1.5定义了9种,2.0增加了3种)。

分别是:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图9种,包图、组合结构图、交互概览图3种。

“UML无用论”在很多年前就被提了出来,更是引发了业内不少争议。有用户将它捧上天,甚至“封神”,也有人斥之为垃圾,甚至称其“反人类”。

那么问题来了,UML 真的无用吗?或者用题主的话来说,UML 还有用吗?

我想先说自己的判断:UML 依然有用

之所以这么判断,主要基于以下三点事实:

第一,图比代码更清晰

在复杂需求中,UML图是非常必要的。

用例图描述系统的外部交互、序列图描述系统的内部交互、状态图描述系统的动态特性、部署图描述系统的物理节点、类图与对象图描述依赖关系......

所有的图都是协助团队策划稿能源更高效地厘清问题,掌握知识,高效解决问题的。

试问下,在敏捷开发中,如果没有流程图、序列图、状态图进行辅助,你如何在代码过程中保证业务流程、系统前后端、多个系统切换开发做到敏捷高效?

在敏捷开发时,面对稍复杂点的需求,如果要求团队提前用UML图厘清问题,后续填坑可以少很多。

第二,“假敏捷开发”太多

正如@萝魏紫 所言,中国假敏捷太多了,以敏捷为借口少写甚至不写文档,以至于大量项目在本不应出问题的沟通层面出现大量问题,没有统一的标准,沟通不出问题才怪。

UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。

不过,我们也必须注意到,UML不是万能的,但是在系统研发中的沟通作用,效果还是比较好的。

第三,UML 在业界依然在被应用

UML的实际应用例子,大家在这个问答中可以找到不少:

比如,@Milo Yip 表示,“腾讯没有统一、从上而下的软件工程方法论,毕竟业务差异很大。但在各种文档及简报中也经常以 UML 图来呈现一些信息,算是一种辅助沟通的方法。”另外,“我在面试时会让候选人做一些简单设计,用 UML 最好,不会的也可用他熟悉的编程语言表示。”

@fantiny 也举了自己前公司产品ExchangeUSE的例子,据介绍,当时UML在前期需求分析和架构设计阶段起到一定的作用,包括需求分析与共通化整理,系统模块化分析工具,架构设计的交流工具,实现合理性的分析工具。

2.2 UML的语法与各图关系 

各图关系: 

UML语法描述:

3. 四种图的概述

       这一部分先对 状态图、活动图、构件图和部署图 做一个简单的概述。

3.1 状态图

       状态图是一个类对象所可能经历的所有历程的模型图。状态图由对象的各个状态和连接这些状态的转换组成。

状态图描述对象:一个类对象

状态图组成:一个类对象的各种状态、状态转化动作

3.2 活动图(Activity Diagram)

  1. 活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动
  2. 活动图描述了一组顺序的或并发的活动

状态图和活动图:

        1、状态图针对每一个类

        2、活动图针对整合算法系统

3.3 构件图(Component Diagram)

       构件图为系统的构件建模型—构件即构造应用的软件单元—还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响。

构件图(Component Diagram) 是 UML(统一建模语言)中用于描述系统物理构件及其相互关系的图。它展示了系统中各个“构件”(如可执行程序、库、模块等)之间的关系,以及它们如何通过接口进行交互。构件图通常用于描述系统的静态结构,尤其是关注系统的物理实现层次。

构件图的主要元素:

  1. 构件(Component):表示系统中的一个物理模块或部件,它是一个可执行的或可部署的单位。构件可以是程序文件、库文件、Web 服务、数据库、或者任何其他具有独立功能的部分。

    • 符号:构件通常用一个矩形表示,矩形的右上角有一个小的折角。
  2. 接口(Interface)构件之间的交互通常通过接口完成。接口定义了构件提供的服务或其所需的服务。

    • 符号:接口通常是一个小圆圈或带有名字的“半圆”。
  3. 依赖关系(Dependency):构件图中,构件之间可能有依赖关系,这表示一个构件依赖于另一个构件的功能或服务。

    • 符号:依赖关系通常用带箭头的虚线表示,箭头指向被依赖的构件。
  4. 端口(Port):端口是构件和外界进行交互的地方,通常用来定义通过接口暴露的功能。

    • 符号:端口通常表示为构件矩形的一部分,形状如小小的矩形或圆圈。

3.4 部署图(Deployment Diagram)

       部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配。

4. 状态图

4.1 状态图概要

  • 说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件的响应
  • 揭示Actor、类、子系统和组件的复杂特性。 为实时系统建模。
  • 对象的状态是指在这个对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动,或等待某些事件。
  • 转移是由一种状态到另一种状态的迁移。这种转移由被建模实体内部或外部事件触发。
  • 对一个类来说,转移通常是调用了一个可以引起状态发生重要变化的操作的结果。

4.2 状态图中的事物及解释

4.3 状态的可选活动表

4.4 实例 

(1)网上银行登录系统

5. 活动图 

5.1 活动图概要

  • 描述系统的动态行为
  • 包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态。
  • 活动图适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述。
  • 类似于传统意义上的流程图。
  • 活动图主要用于:
    + 业务建模时,用于详述业务用例,描述一项业务的执行过程;
    + 设计时,描述操作的流程。

5.2 活动图和状态图的关系

  • 活动图和状态图都体现状态在活动中变化。
  • 状态图是一个类对象在活动中状态发生变化。
  • 活动图是整个系统在活动中状态发生变化。

5.3 活动图事物

5.4 活动图关系

5.5 实例

  • 本活动图描述一个处理订单的用例执行过
    (1)执行setup order
    (2)根据order的类型是执行不同的分支:
    - single order:执行assign seat、charge credit card
    - subscription:同时执行assignseats、debit account或 award bonus
    - single order与subscription两步可同时进行

    (3) 最后mail packet。

6. 构件图

6.1 构件图概要

  • 构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。
  • 构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。

6.2 构件图中的事物及解释

  • 可替换的物理部分包括软件代码、脚本或命令行文件,也可以表示运行时的对象,文档,数据库等。
  • 节点(node)是运行时的物理对象,代表一个计算机资源。具体请参见教程“部署图(deployment diagram)”部分。

6.3 构件图中的关系及解释

6.4 实例

实例1

  • 图中的构件名称是Dictionary字典。
  • 该构件向外提供两个接口,即两个服务Spell-check拼写检查、Synonyms同义词。

实例2

  • 图中“Planner计划者”构件向外提供一个“update更新”接口服务。
  • 同时,该构件要求外部接口提供一个“Reservations预定”服务。

7. 部署图

7.1 部署图概要

  • 部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图
  • 如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。
  • 部署图的两种表现形式:实例层部署图和描述层部署图(会在后面的实例中给出)。

 7.2 部署图中的事物及解释

7.3 部署图中的关系及解释

7.4 实例

实例1

  • 实例层部署图描述各节点和它们之间的连接。
  • 本图中的信息与上张描述层部署图中的内容是相互对应的。
  • 图中的关系是各个节点之间存在的通信关系。

实例2

  • 描述层部署图表示了系统中的各节点和每个节点包含的构件。
  • 图中包括的各种关系如下:
    • 通信链关系(不带箭头的直线)
      • TicketServe票服务器与Kiosk信息厅之间存在一对多的通信关联;与SalesTerminal售票终端也存在一对多的通信关联;
    • 依赖关系(带箭头的虚线)
      • TicketSeller售票构件依赖CreditCardCharges信用卡付款构件和TicketDB票数据库构件提供的服务。

7.5  部署图与构件图的关系

部署图(Deployment Diagram)构件图(Component Diagram) 都是 UML 中用于描述系统的静态结构,但它们关注的层次不同,功能上也有所区别。

  1. 构件图 主要关注系统的逻辑结构和软件层面,描述系统中的各个构件(如模块、库、服务等)及其相互关系,强调模块间的依赖、接口和交互。

  2. 部署图 主要关注系统的物理部署和硬件层面,展示节点(如服务器、工作站、设备等)之间的关系,并标明哪些构件部署到哪些节点上。

关系:

  • 构件图 描述的是系统的软件组件及其内部结构,而 部署图 描述的是这些组件如何在物理硬件上部署和运行。
  • 构件图 中的构件通常会在 部署图 中被映射到一个或多个节点上,显示它们的实际部署情况。
  • 例如,构件图中的业务逻辑组件可能会被部署到一个服务器节点上,而数据库组件则可能被部署到另一台数据库服务器节点。

8. 总结 

本文到这里就结束啦~~

目前已经完成:

【软件工程】一篇入门UML建模图(类图)_uml图教程-CSDN博客

【软件工程】一篇入门UML建模图(用例图、对象图、顺序图与协作图)-CSDN博客

本篇讲述:状态图、活动图、构件图、部署图

如果觉得对你有帮助,友友们可以点个赞,收个藏呀~

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

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

相关文章

基于编译器特性浅析C++程序性能优化

最近在恶补计算机基础知识,学到CSAPP第五章的内容,在这里总结并且展开一下C程序性能优化相关的内容。 衡量程序性能的方式 一般而言,程序的性能可以用CPE(Cycles Per Element)来衡量,其指的是处理每个元素…

transformer模型介绍——大语言模型 LLMBook 学习(二)

1. transformer模型 1.1 注意力机制 **注意力机制(Attention Mechanism)**在人工智能中的应用,实际上是对人类认知系统中的注意力机制的一种模拟。它主要模仿了人类在处理信息时的选择性注意(Selective Attention)&a…

Dify 本地部署教程

目录 一、下载安装包 二、修改配置 三、启动容器 四、访问 Dify 五、总结 本篇文章主要记录 Dify 本地部署过程,有问题欢迎交流~ 一、下载安装包 从 Github 仓库下载最新稳定版软件包,点击下载~,当然也可以克隆仓库或者从仓库里直接下载zip源码包。 目前最新版本是V…

2.1 掌握XML基础知识

本文介绍了结构化、半结构化和非结构化数据的概念与特点。结构化数据以固定格式存储于数据库,便于查询与管理,常用于金融等领域。半结构化数据如XML、JSON,具有一定的组织形式但模式不固定,适用于Web内容和日志文件。非结构化数据…

Android Studio 配置国内镜像源

Android Studio版本号:2022.1.1 Patch 2 1、配置gradle国内镜像,用腾讯云 镜像源地址:https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址:Index of /AndroidSDK/

超过 37000 台 VMwareESXi 服务器可能受到持续攻击威胁

近日,威胁监测平台影子服务器基金会(The Shadowserver Foundation)发布报告,指出超 3.7 万个互联网暴露的威睿(VMware)ESXi 实例存在严重安全隐患,极易受到 CVE-2025-22224 漏洞的攻击。该漏洞属…

npm终端执行时报错

终端npm执行时报错下错误: 报错了,就来百度,报错的原因是 1、这个错误是因为 PowerShell 的执行策略(Execution Policy)限制了脚本的运行 2、默认情况下,Windows 系统可能会禁止运行未签名的脚本&#x…

JVM类加载器面试题及原理

JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而让Java程序能够启动起来。 1. 类加载器的种类 启动类加载器(BootStrap ClassLoader):加载JAVA_HOME/jre/lib目录下的库扩展类加载器&#xff…

C语言每日一练——day_3(快速上手C语言)

引言 针对初学者,每日练习几个题,快速上手C语言。第三天。(会连续更新) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…

用Qt手搓AI助手,挑战24小时开发DeepSeek Assistant!

一、项目需求分析与技术选型 DeepSeekAssistant是一款基于深度求索(DeepSeek)API的智能对话助手,核心需求包括: 用户界面友好:支持多轮对话展示数据持久化:历史记录存储与检索异步网络通信:AP…

Go本地缓存设计与实现

本地缓存是一个项目中很常见的组件。在很多人的眼中就是一个简单的key-value的map存储即可实现,但实际上,设计一个本地缓存需要考虑的问题远比你想象的多,比如说,本地缓存是将数据存储在内存,若数据量激增突破了内存限…

AWS云编排详解-Cloud Formation

作者:私语茶馆 1.关键概念 名词 说明 软件: CloudFormation 描述AWS 资源、配置值和互连关系。借助集成设施即代码加快云部署 CloudFormation Designer 拖拽式图形化模板编辑界面。 Amazon Simple Notification Service (SNS) SNS可通过电子邮件跟踪堆栈的创建和删除进度,…

《PyQt5》——设计Python GUI(图形用户界面)实例

PyQt5 PyQt5的配置和基础使用可以参考这篇文章:《 PyQt5》—— 创建 Python GUI(图形用户界面) Python GUI(图形用户界面)实例 本实例是设计一个通过玉米和豆粕的价格来预测生猪的价格,并显示预测价格与实…

SpringBoot最简单方式实现自定义异常页面(404)

最简单的方式实现所有自定义异常页面(如 404、500 等)是通过 静态资源文件 或 模板引擎 来实现。 方法 1:使用静态资源文件(最简单) Spring Boot 默认会在 src/main/resources/static 或 src/main/resources/public …

django下防御race condition漏洞(竞争型漏洞)

目录 竞争型漏洞 概念 常见类型及示例 环境搭建 ​编辑漏洞复现 ucenter/1/ ucenter/2/ ucenter/3/ ucenter/4/ 总结 悲观锁 乐观锁 竞争型漏洞 概念 竞争型漏洞,也称为竞态条件漏洞(Race Condition Vulnerability),…

用Python写一个算24点的小程序

一、运行界面 二、显示答案——递归介绍 工作流程&#xff1a; 1. 基本情况&#xff1a;函数首先检查输入的数字列表 nums 的长度。如果列表中只剩下一个数字&#xff0c;它会判断这个数字是否接近 24&#xff08;使用 abs(nums[0] - 24) < 1e-10 来处理浮点数精度问题&…

GitHub上传项目

总结&#xff08;有基础的话直接执行这几步&#xff0c;就不需要再往下看了&#xff09;&#xff1a; git init 修改git的config文件&#xff1a;添加:[user]:name你的github用户名 email你注册github的用户名 git branch -m master main git remote add origin 你的URL gi…

常见排序算法深度评测:从原理到10万级数据实战

常见排序算法深度评测&#xff1a;从原理到10万级数据实战 摘要 本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法&#xff0c;通过C语言实现10万随机数排序并统计耗时。测试显示&#xff1a;快速排序综合性能最优&…

【C】链式二叉树算法题2

目录 1 另一棵树的子树 1&#xff09; 题目描述 示例1&#xff1a; 示例2&#xff1a; 2&#xff09; 算法解析 3&#xff09; 代码 2 二叉树的遍历 1&#xff09; 问题描述 2&#xff09; 算法解析 3&#xff09; 代码 3 总结 1 另一棵树的子树 leetcode链接…

配置Hadoop集群

Hadoop的运行模式 本地运行&#xff1a;在一台单机上运行&#xff0c;没有分布式文件系统&#xff0c;直接读写本地操作系统的文件系统。特点&#xff1a;不对配置文件进行修改&#xff0c;Hadoop 不会启动 伪分布式&#xff1a;也是在一台单机上运行&#xff0c;但用不同的 …