一文看懂软件架构4+1视图

news2024/11/25 20:47:03

目录

一、概述 

二、各视图详解

1. 场景视图

2. 逻辑视图

3. 开发视图

4. 处理视图

5. 物理视图

葵花宝典:一看就懂的理解方式


一、概述 

 4+1视图包括:

  1. 场景视图(也叫用例视图):黑盒视图。从外部视角,描述系统的参与者(用户)与系统功能用例的关系。反映的是系统的最终用户需求和交互设计。
  2. 逻辑视图(也叫结构视图):白盒视图。从结构化视角,描述该系统对用户提供的所需功能服务所具备的组件结构和数据结构,以及一些边界约束条件,清晰的描述给用户提供的功能需求服务是如何构建的。描述该系统内部所具备了那些组织结构,以达到实现对外功能。
  3. 开发视图(也叫实现视图):白盒视图。从结构化视角和行为视角,去描述实现系统功能的各个组件和模块是如何实现的。
  4. 处理视图(也叫过程视图、行为视图):白盒视图。从行为视角,描述系统各个组件和模块是如何进行通信的。
  5. 物理视图(也叫部署视图):黑盒视图。从交互视角,描述系统可以部署到哪些物理环境(如服务器、PC端、移动端等)上和软件环境(如虚拟机、容器、进程等)上。

二、各视图详解

1. 场景视图

场景视图之所以是4+1视图的核心1,其他4个视图都是围绕场景视图为核心。

在UML中通常用用例图表示:

什么是用例图? 

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

用例图中包含以下三种关系:

  • 包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。
  • 扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能
  • 泛化关系,子用例继承父用例所有结构、行为和关系。

2. 逻辑视图

在系统设计中,如果系统的功能、场景等比较清晰,可能会对用例视图进行简化,但却不可以没有逻辑视图。

逻辑视图是对系统职责的的逐级划分,描述了体系中各个功能组件,以及他们的层级关系,作用和依赖范围。下面举几个例子:

springcloud微服务的逻辑视图:

Java体系架构逻辑视图: 

逻辑视图颗粒度比较大,其中的功能组件元素决定开发组织(每个功能模块由哪个团队去开发),因此,功能组件的边界和接口也是后续多个开发组织之间进行接口控制的关系依据。设计合理的逻辑架构,可以提升团队的沟通效率,进而提升整个系统的交付效率和质量。

3. 开发视图

描述开发文件在系统中如何组织,其元素是文件和目录。

一个设计良好的开发视图,应该能够满足以下要求:

通过逻辑架构元素,能够找到它所有代码和所有的二进制交付件每一个代码源文件,都能够找到它所属的逻辑架构元素每一个二进制交付件,都能够找到它集成了哪些逻辑架构元素。

4. 处理视图

用于描述系统组件之间的通信时序。在UML中通常由时序图和流程图表示。

5. 物理视图

描述系统在物理环境或软件环境上的部署。在UML中通常由部署图表示。

葵花宝典:一看就懂的理解方式

  • Use-case view 用例视图:描述系统功能、外部接口和主要用户。架构的所有元素都应该源于需求。

  • Logical view 逻辑视图:描述系统是如何由实现单元组织起来的。其元素是:包、类和接口。元素之间的关系包括依赖关系、接口实现关系、部分-整体关系等等。

  • Implementation view 实现视图:描述开发文件在文件系统中是如何组织的。其元素是文件和目录(任何配置项)。这包括开发工件和部署工件。

  • Process view 进程视图:一般是时序图。

  • Deployment view 部署视图:描述系统如何映射到硬件。

参考优秀博客:

【软件建模】详解架构4+1视图-云社区-华为云 (huaweicloud.com)

一文掌握14种UML图-腾讯云开发者社区-腾讯云 (tencent.com)

详解系统架构的“4+1”视图 (zhihu.com)

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

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

相关文章

chatgpt赋能python:Python如何分段数据的平均数

Python如何分段数据的平均数 Python是一门极其流行的编程语言,广泛应用于数据分析与科学计算领域。在数据分析中,计算各个数据段的平均数是一项常见的任务。本文将介绍如何使用Python分段计算数据的平均数,以及如何优化这一过程以使速度更快…

Linux中的lrzsz

一、介绍 lrzsz是一款在Linux里可代替ftp上传和下载的程序,也就是一款软件。它是开发者常用的一款工具,这个工具用于windows机器和远端的Linux机器通过XShell传输文件。 二、lrzsz的安装 在安装之前,我们可以使用下述命令先查看yum仓库中是否存在我们要安装的软件: yum…

CentOS7使用Docker快速安装Davinci

环境信息 操作系统:CentOS7Docker : 23.0.6 (已配置阿里云镜像加速) 安装步骤 安装docker-compose-plugin 官方的例子使用的是docker-compose,但是由于yum能够安装的最新斑斑是1.x,而且官方的docker-compose要求最低版本为2.2以…

首个区块链技术领域国家标准出台 ,中创助力打造区块链技术和应用创新高地

区块链作为数字中国的重要技术底座,正在深刻改变着我国社会生产方式。何谓区块链,对大众来说,也许尚陌生,殊不知,这一产业已稳稳起跑在我国高质量发展的“赛道”上。 近日,《区块链和分布式记账技术参考架…

【JavaScript】超全基础万字大总结

目录 一、初识 JavaScript 1.1 JavaScript 是什么? 1.2 发展历史 1.3 JavaScript 和 HTML 和 CSS 之间的关系 1.4 JavaScript 运行过程 1.5 JavaScript 的组成 二、前置知识 2.1 第一个程序 2.2 JavaScript 的书写形式 2.3 输入输出 三、语法概览 3.1 变…

Linux(CentOS 7) 安装 Mysql8 、Java 以及 mycat2 详细流程

目录 一、Mysql8 安装 1.下载mysql8 2. 解压Mysql 压缩包 3.重名命mysql 文件 4.创建data文件夹 储存文件 5.创建用户组以及用户 6.授权用户 将mysql文件夹的所有者和所有组都改为mysql 7.mysql初始化进入bin目录执行mysqld文件进行初始化 8.编辑my.cnf 9.添加mysqld…

有哪些虚拟化和容器化工具推荐? - 易智编译EaseEditing

以下是几个常用的虚拟化和容器化工具推荐: VMware vSphere: VMware vSphere 是一套完整的虚拟化平台,包括虚拟化服务器、虚拟化存储和虚拟化网络。 它提供了高性能的虚拟机管理和资源调度功能,适用于企业级的虚拟化部署。 Docke…

IT知识百科:什么是跨站脚本(XSS)攻击?

跨站脚本(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者利用该漏洞在受害者的网页中插入恶意脚本,从而能够获取用户的敏感信息、劫持会话或进行其他恶意活动。本文将详细介绍跨站脚本攻击的原理、类型、常…

vue props传值层级多,子级孙子级怎么修改传参

vue props传值层级多了,子级孙子级怎么修改传参 1.出现背景2.怎么在孙组件里改变传过来的值呢2.1这样改是不行的2.2可行的方法2.2.1 引用对象只改变单属性2.2.2 provide和inject 1.出现背景 本来自己写页面的话是直接全部写在一个vue文件里,一个vue文件…

【solidworks】此文档 templates\gba0.drwdot 使用字体长仿宋体,而该字体不可用

一、问题背景 在SolidWorks中绘制工程图纸时,新建一个图纸,打开后就弹出字体错误 此文档 templates\gba0.drwdot 使用字体长仿宋体,而该字体不可用。 二、解决办法 点击选择新的字体,拖到最下面选择汉仪长仿宋体。 上面之所…

41 管理虚拟机可维护性-虚拟机NMI Watchdog

文章目录 41 管理虚拟机可维护性-虚拟机NMI Watchdog41.1 概述41.2 注意事项41.3 操作步骤 41 管理虚拟机可维护性-虚拟机NMI Watchdog 41.1 概述 NMI Watchdog是一种用来检测Linux出现hardlockup(硬死锁)的机制。通过产生NMI不可屏蔽中断,…

win10+tf2.x+cuda+cudnn踩坑记录( Loaded cuDNN version 8400)

项目场景: 项目用到了tensorflow2.x: 想要用GPU跑算法win10系统下需要安装cuda和cudnn配置带有tenserflow-gpu的环境 问题描述 jyputer运行错误提示:Loaded cuDNN version 8400 Could not locate zlibwapi.dll. Please make sure it is in…

智安网络|保护企业网络空间资产安全的重要性

在数字化时代,企业网络空间资产的安全和保护变得越来越重要,并且拥有安全性能优越、系统完整的企业网络系统,是企业发展的必要条件。但想要实现网络空间安全首先需要关注网络漏洞问题。 保护企业网络空间资产的重要性 网络空间资产安全是企…

【深度学习】跌倒识别(带数据集和源码)从0到1,内含很多数据处理的坑点和技巧,收获满满

文章目录 前言1. 数据集1.1 数据初探1.2 数据处理1.3 训练前验证图片1.4 翻车教训和进阶知识 2. 训练3.效果展示 前言 又要到做跌倒识别了。 主流方案有两种: 1.基于关键点的识别,然后做业务判断,判断跌倒,用openpose可以做到。…

Neural Architecture Search: A Survey

本文是神经架构搜索相关主题的第一篇文章,针对《Neural Architecture Search: A Survey》的一个翻译。 神经架构搜索:综述 摘要1 引言2 搜索空间3 搜索策略4 性能评估策略5 未来方向 摘要 过去几年,深度学习在图像识别、语音识别和机器翻译…

网络故障排除

计算机网络构成了数字业务的基础。为了确保业务连续性,需要日夜监控和管理这些网络背后的 IT 基础架构。IT 管理员在管理 IT 基础架构时经常遇到问题,这是他们工作的关键部分,更重要的部分是解决网络问题。 什么是网络故障排除 网络故障排除…

推动开源与商业共生共赢 | 2023开放原子全球开源峰会开源商业化创新发展分论坛即将启幕

开源具有利他性,专有软件或私有软件具有利己性,而开源的商业模式也具有利己性。利他性的开源与利己性的商业模式相结合,如何真正为开源做贡献? 由开放原子开源基金会主办,软通动力信息技术(集团&#xff0…

【MySQL高级篇笔记-索引优化与查询优化(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、索引失效案例 二、关联查询优化 1、采用左外连接 2、采用内连接 3、join语句原理 1.驱动表和被驱动表 2.Simple Nested-Loop Join(简单嵌套循环连接) 3.Index Nested-Loop Join(索引嵌套循环连接) 4.Block Nested-Loop J…

【Web服务器】Nginx+Tomcat负载均衡、动静分离群集

文章目录 一、Tomcat 简介1. Tomcat 重要目录 二、Nginx 负载均衡1. Nginx 应用2. Nginx 负载均衡实现原理2.1 正向代理2.2 反向代理2.3 负载均衡原理总结2.4 配置方向代理的主要参数2.5 Nginx 代理转发类型 3. Nginx 负载均衡模式3.1 rr 轮询 负载均衡模式3.2 least_conn 最少…

优秀测试工程师简历要怎么写?为什么连面试都过不了?

目录 前言 简历请用数字化结果不要只是堆砌工作经历 简历一:我的工作内容有: 简历二:我的工作内容有: 千万别小瞧 了解你的过去是判断你未来的最好方式 增加好印象,记住这些小Tips 1)了解公司的特点 2&…