UML 4+1 视图:搭建软件架构的 “万能拼图”
UML 4+1 视图是一种全面描述软件架构的方法,以下为你详细介绍各个视图:
1.逻辑视图(Logical View)
- 概述:逻辑视图主要用于展现系统的功能架构,它聚焦于系统提供的功能以及这些功能的逻辑组织方式,不涉及系统的具体实现和运行时的细节,是从面向对象的角度对系统进行的抽象描述。
- 关键元素
- 类:是对系统中各种概念和实体的抽象描述,包含属性和操作。例如,在一个电商系统中,可能有 “用户” 类,具有 “用户名”“密码” 等属性,以及 “登录”“注册” 等操作。
- 接口:定义了类所提供的服务的契约,它规定了类必须实现的方法签名。比如,“支付接口” 可能定义了 “支付” 方法,具体的支付类如 “支付宝支付”“微信支付” 等都需要实现这个接口。
- 协作:描述了多个类之间为了完成特定功能而进行的交互和合作方式。以电商系统中的 “下单” 功能为例,可能涉及 “用户” 类、“商品” 类、“购物车” 类以及 “订单” 类等多个类的协作。
- 用例:从用户的角度描述系统的功能,它捕获了系统与外部参与者之间的交互过程。例如,“用户登录系统”“用户购买商品” 等都是电商系统中的用例。
2.进程视图(Process View)
- 概述:进程视图着重于系统在运行时的动态行为,关注系统中的进程、线程、任务等的组织和交互方式,以及它们之间的并发、同步和通信机制。
- 关键元素
- 进程:是系统中独立运行的程序单元,具有自己的地址空间和资源。例如,在一个分布式系统中,可能有专门的 “订单处理进程”“库存管理进程” 等,每个进程负责不同的功能模块。
- 线程:是进程中的执行单元,它可以在进程内并发执行。比如,在 “订单处理进程” 中,可能会有多个线程同时处理不同的订单,以提高系统的处理效率。
- 消息:用于进程之间或线程之间的通信,它包含了要传递的信息和相关的操作指令。例如,“订单处理进程” 完成订单处理后,可能会向 “库存管理进程” 发送一条消息,通知其更新库存。
- 信号:是一种特殊的消息,通常用于处理异步事件,如系统中的中断信号、定时器信号等。例如,当系统检测到某个资源不足时,可能会发送一个信号通知相关进程进行处理。
3.物理视图(Physical View)
- 概述:物理视图主要描述系统的硬件架构以及软件在硬件上的部署情况,它展示了系统的物理组成部分以及它们之间的连接和分布关系。
- 关键元素
- 节点:代表硬件设备,如服务器、客户端计算机、路由器、存储设备等。不同的节点具有不同的处理能力、存储能力和网络连接能力。例如,电商系统可能会有专门的 “Web 服务器” 节点用于处理用户的网页请求,“数据库服务器” 节点用于存储系统的数据。
- 部署图:用于显示软件组件(如应用程序、数据库管理系统、中间件等)如何部署到各个节点上。它描述了软件与硬件之间的映射关系,以及软件组件之间的通信路径。例如,在电商系统的部署图中,可以看到 “电商应用程序” 部署在 “Web 服务器” 上,“数据库系统” 部署在 “数据库服务器” 上,并且两者之间通过网络进行通信。
4.开发视图(Development View)
- 概述:开发视图也称为模块视图,主要关注系统的软件开发架构,包括软件模块、包、子系统等的组织和依赖关系,以及开发过程中的管理和控制。
- 关键元素
- 模块:是系统中相对独立的功能单元,具有明确的接口和职责。例如,在一个企业级应用系统中,可能会有 “用户管理模块”“财务管理模块”“销售管理模块” 等,每个模块负责不同的业务功能。
- 包:用于组织相关的模块,它可以将具有相似功能或密切关联的模块放在同一个包中,以便于管理和维护。例如,“用户管理模块” 中的相关类可能会被组织在 “com.example.user” 包中。
- 依赖关系:描述了模块之间或包之间的相互依赖关系,即一个模块或包的正常运行依赖于其他模块或包的存在和正确运行。例如,“销售管理模块” 可能依赖于 “用户管理模块” 来获取用户信息,这种依赖关系在开发视图中需要明确表示出来。
5.场景视图(Scenario View)
- 概述:场景视图也称为用例视图,它是其他四个视图的基础和驱动,通过描述系统的典型场景或用例,来捕获系统的功能需求和行为,为其他视图的设计提供依据。
- 关键元素
- 用例图:用于描述系统的功能边界和参与者与系统之间的交互关系。它展示了系统提供的各种用例以及与这些用例相关的参与者。例如,在电商系统的用例图中,“用户” 是一个参与者,“登录系统”“浏览商品”“购买商品” 等都是用例,它们之间通过关联关系连接起来。
- 活动图:用于描述用例的流程和活动,它展示了用例中各个活动的执行顺序、条件判断和并发执行情况。例如,在 “购买商品” 用例的活动图中,可以看到用户选择商品、添加到购物车、结算、支付等活动的执行流程,以及在不同条件下的分支情况。
- 序列图:用于描述参与者之间的消息交互顺序,它以时间顺序展示了对象之间如何通过发送和接收消息来完成特定的功能。例如,在 “用户登录系统” 的序列图中,可以看到用户输入用户名和密码后,系统如何验证用户身份、返回登录结果等消息交互过程。
通过 UML 4+1 视图的描述,可以让软件开发团队的不同成员,包括架构师、设计师、开发人员、测试人员等,从不同的角度全面理解软件系统的架构,有助于提高沟通效率、降低开发风险,并确保系统的设计和实现能够满足用户的需求。
相关文章:
UML 4+1 视图:搭建软件架构的 “万能拼图”
UML 41 视图是一种全面描述软件架构的方法,以下为你详细介绍各个视图: 1.逻辑视图(Logical View) 概述:逻辑视图主要用于展现系统的功能架构,它聚焦于系统提供的功能以及这些功能的逻辑组织方式ÿ…...
tkinter 库(设计图形界面系统)
几何管理的应用 # tkinter 库 是Python的标准GUI库,提供了创建图形用户界面的功能。 tkinter是一个跨平台的GUI库,支持Windows、macOS和Linux等操作系统。它是Python的标准库之一,无需额外安装。 #tkinter.Entry 是 Tkinter 的输入框控件类&…...
WordPress汉主题
WordPress汉主题wphan.com(以下简称WP汉主题)是一个专注于WordPress中文主题与插件开发的专业团队。该团队致力于为中文用户提供高质量的WordPress主题和插件资源,帮助用户轻松创建专业且吸引人的网站。 WP汉主题提供多种功能丰富的WordPress主题,涵盖博…...
在线文档协作工具选型必看:14款产品对比
本文将深入对比14款在线文档协作工具:PingCode; 2. Worktile; 3. 语雀; 4. 金山文档; 5. WPS云文档; 6. Google Docs; 7. 轻雀文档; 8. Microsoft 365 Online; 9. 明道云文档等。 在数字化办公日益普及的今天,企业对高效协同的需求不断升级,在…...
分布式计算Ray框架面试题及参考答案
目录 简述 Ray 的架构设计核心组件及其协作流程 全局控制存储(GCS)在 Ray 中的作用是什么?如何实现高可用性? 对比 Ray 的任务(Task)与 Actor 模型,说明各自适用场景 解释 Ray 的 Object Store 如何实现跨节点数据共享与零拷贝传输 Ray 的分布式调度器如何实现毫秒级…...
Java虚拟机JVM知识点(持续更新)
JVM内存模型 介绍下内存模型 根据JDK8的规范,我们的JVM内存模型可以拆分为:程序计数器、Java虚拟机栈、堆、元空间、本地方法栈,还有一部分叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 详细解释一下 程…...
【计算机网络】HTTP与HTTPS
文章目录 1. HTTP定义2. HTTP交互3. HTTP报文格式3.1 抓包工具-fiddler3.2 抓包操作3.3 报文格式3.3.1 请求报文3.3.2 响应报文 4. URL5. 请求头中的方法6. GET和POST的区别7. HTTP报头7.1 Host7.2 Content_Length7.3 Content_Type7.4 User-Agent(UA)7.5 Referer7.6 Cookie 8 状…...
数据结构:树的5种存储方案详解(C语言完整实现)
数据结构中的树结构常用来存储逻辑关系为 "一对多" 的数据。树结构可以细分为两类,分别是二叉树和非二叉树(普通树),存储它们的方案是不一样的: 二叉树的存储方案有 2 种,既可以用顺序表存储二叉…...
【蓝桥杯】 枚举和模拟练习题
系列文章目录 蓝桥杯例题 枚举和模拟 文章目录 系列文章目录前言一、好数: 题目参考:核心思想:代码实现: 二、艺术与篮球: 题目参考:核心思想:代码实现: 总结 前言 今天距离蓝桥杯还有13天&…...
WebGL图形编程实战【3】:矩阵操控 × 从二维到三维的跨越
上一篇文章:WebGL图形编程实战【2】:动态着色 纹理贴图技术揭秘 仓库地址:github…、gitee… 矩阵操控 矩阵变换 回到前面关于平移缩放、旋转的例子当中,我们是通过改变传递进去的xy的值来改变的。 在进行基础变换的时候&…...
如何把数据从SQLite迁移到PostgreSQL
## 如何把数据从SQLite迁移到PostgreSQL 文章目录 1、DB-Engines 中的SQLite 和 PostgreSQL2、SQLite安装和测试2.1、编译安装SQLite2.2、数据测试 3、Postgresql安装和测试3.1、编译安装postgresql3.2、测试 4、pgloader安装5、数据迁移和验证5.1、准备参数文件5.2、数据迁移…...
Qt使用QGraphicsView绘制线路图————附带详细实现代码
文章目录 0 效果1 核心1.1 简单示例1.1.1 解读 1.2 创建用户交互1.2.1 完整示例 1.3 创建图形元1.3.1 绘制直线1.3.2 绘制贝塞尔曲线1.3.3 绘制图片 1.4 移动的小车 2 使用自定义视图类参考 0 效果 视图中包含线路、道岔、信号灯、火车。 下图为站点信号灯: 下图…...
【系统性偏见:AI照出的文明暗伤与生存悖论】
系统性偏见:AI照出的文明暗伤与生存悖论 第一层:偏见如何从数据中“遗传” 当某科技公司用十年招聘数据训练AI筛选简历时,系统悄然学会:提到"女性工程师协会"的简历,获得面试的概率自动下降37%——这相当于…...
【Linux】调试器——gdb使用
目录 一、预备知识 二、常用指令 三、调试技巧 (一)监视变量的变化指令 watch (二)更改指定变量的值 set var 正文 一、预备知识 程序的发布形式有两种,debug和release模式,Linux gcc/g出来的二进制…...
【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)
之前我们分享过2000-2024年我国逐年的归一化植被指数(NDVI)栅格数据,该逐年数据是取的当年月归一化植被指数(NDVI)的年最大值!另外,我们基于此年度栅格数据按照行政区划取平均值,得到…...
Shell 不神秘:拆解 Linux 命令行的逻辑与效率
初始shell shell的概述 什么是shell 本质 shell本质是脚本文件:完成批处理。 比如 有一个文件 中十个文件,这十个文件中每个文件又有是个子文件,由人来处理,很麻烦,但如果写一个脚本文件,让脚本来替我…...
win 远程 ubuntu 服务器 安装图形界面
远程结果:无法使用docker环境使用此方法 注意要写IP和:数字 在 ubuntu 服务器上安装如下: # 安装 sudo apt-get install tightvncserver # 卸载 sudo apt purge tightvncserver sudo apt autoremove#安装缺失的字体包: sudo apt update s…...
大模型高质量rag构建:A Cheat Sheet and Some Recipes For Building Advanced RAG
原文:A Cheat Sheet and Some Recipes For Building Advanced RAG — LlamaIndex - Build Knowledge Assistants over your Enterprise DataLlamaIndex is a simple, flexible framework for building knowledge assistants using LLMs connected to your enterpris…...
【Qt】游戏场景和图元
一:图元 advance函数: 在 Qt 框架里,QGraphicsItem 是用于在 QGraphicsScene 中绘制图形项的基类。advance(int phase) 是 QGraphicsItem 类的一个虚函数,其主要用途是让图形项在场景的动画或更新过程里完成特定的逻辑操作。 p…...
C++位运算精要:高效解题的利器
引言 在算法竞赛和底层开发中,位运算(Bit Manipulation)因其极高的执行效率而广受青睐。它能在O(1)时间复杂度内完成某些复杂操作,大幅优化程序性能。本文系统梳理C位运算的核心技巧,涵盖基础操作、经典应用、优化策略…...
几种常见的.NET单元测试模拟框架介绍
目录 1. Moq 2. NSubstitute 3. AutoFixture 4. FakeItEasy 总结对比 单元测试模拟框架是一种在软件开发中用于辅助单元测试的工具。 它的主要作用是创建模拟对象来替代真实对象进行测试。在单元测试中,被测试的代码可能依赖于其他组件或服务,如数…...
开源的CMS建站系统可以随便用吗?有什么需要注意的?
开源CMS建站系统虽然具有许多优点,但并非完全“随便用”。无论选哪个CMS系统,大家在使用的时候,可以尽可能地多注意以下几点: 1、版权问题 了解开源许可证:不同的开源CMS系统采用不同的开源许可证,如GPL、…...
初始ARM
ARM最基础的组成单元。 最小系统:能系统能够正常工作的最少器件构成的系统 。 一、CPU基础定义 1. 核心定位 计算机三大核心部件: CPU(运算与控制)内部存储器(数据存储)输入/输出设备(数据交互…...
vue配置.eslintrc、.prettierrc详解
一、eslint简介 ESLint 是一个用于识别和报告 JavaScript 代码中潜在问题的静态代码分析工具。它可以帮助开发人员和团队维护一致的代码风格,减少错误,并确保代码质量。以下是 ESLint 的一些关键特点和功能: 1.静态代码分析:ESLi…...
DataPlatter:利用最少成本数据提升机器人操控的泛化能力
25年3月来自中科院计算所的论文“DataPlatter: Boosting Robotic Manipulation Generalization with Minimal Costly Data”。 视觉-语言-动作 (VLA) 模型在具身人工智能中的应用日益广泛,这加剧对多样化操作演示的需求。然而,数据收集的高成本往往导致…...
诠视科技MR眼镜如何安装apk应用
诠视科技MR眼镜如何安装apk应用 1、使用adb工具安装1.1 adb工具下载1.2 解压adb文件1.3 使用adb安装apk1.4 常用adb命令 2、拷贝到文件夹安装 1、使用adb工具安装 1.1 adb工具下载 点击下面的链接开始下载adb工具,下载结束以后解压文件。 下载链接: https://down…...
3.31Python有关文件操作
1.复制文件 import os from shutil ipmort copy,copytreepath os.path.join(os.getcwd(),test1.txt) target_path os.path.join(os.getcwd(),test1copy)copy(path,target_path) copytree(path,target_path) 注意:test1.txt 和 test1copy 文件夹/包 都点存在 …...
搭建前端环境和后端环境
搭建前端环境 ①、安装vscode,并安装相应的插件工具 ②、安装node.js,可以选择当前版本,或者其他版本 ③、创建工作区 创建一个空文件夹,然后通过vscode工具打开,保存为后缀名为.code-workspace ④、从gitee…...
Polhemus FastScan 单摄像头3D激光扫描器
FastSCAN Cobra是Polhemus公司研制的手持激光扫描仪。与以前的产品比较,它节省了30%的费用,体积也减小了一半 ,但仍然保留了所有功能,使用和携带都更加方便。作为超小的手持激光扫描仪,FastSCAN Cobra对扫描三维物体具…...
召唤数学精灵
1.召唤数学精灵 - 蓝桥云课 问题描述 数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式 A(n) 和累乘法仪式 B(n)。 累加法仪式 A(n) 是将从1到 n 的所有数字进行累加求和,即: A(n)12⋯n 累乘法仪式 B(n) …...
