架构师-软件系统架构图学习总结

news2024/11/19 20:39:52

--- 后之视今,亦犹今之视昔!

目录

早期系统架构图

早期系统架构视图

4+1视图解读

4+1架构视图缺点

现代系统架构图的指导实践

业务架构

例子

使用场景

画图技巧

客户端架构、前端架构

例子

使用场景

画图技巧

系统架构

例子

定义

使用场景

画图技巧

应用架构

例子

定义

使用场景

画图技巧

部署架构

例子

定义

使用场景

画图技巧

系统序列图

为什么系统序列图

从架构图到序列图


早期系统架构图

早期系统架构视图

第一次系统架构视图正式出现,是1995年Philippe在IEEE发表论文《The 4+1 View Model of Architecture》。并演变为RUP 4+1系统架构视图方法。下图是论文原图对4+1的阐释。文章介绍了如何通过这5种视图来表达【软件架构是什么】。

论文原图

4+1视图解读

Philippe的4+1,分别为逻辑视图、开发视图、处理视图、物理视图及场景视图。

从不同的角度来展示软件系统的设计。眼耳鼻舌身意,感知世界也总要分那么多的类型。

每个分类和具体的应用,可以看下涛哥的 架构蓝图--软件架构的“4+1”视图模型 - 知乎

4+1架构视图缺点

毕竟是95年提出的概念,4+1视图很多方面并不能适应现代的软件工程了。

  1. 架构复杂度增加,目前大部分系统已由单体系统进化为分布式系统
  2. 强绑定UML图,UML不能很好地表达架构图
  3. 理解不一致的问题,逻辑视图、开发视图、处理(process)视图比较容器混淆


现代系统架构图的指导实践

业务架构

        描述系统为用户提供了什么业务功能,重点在于业务逻辑。类似于4+1视图中的场景视图。但其组织形式和美观程度不是用例图可以提供的。

例子

使用场景

  1. 产品人员规划业务
  2. 给高P汇报业务
  3. 给新员工培训业务

画图技巧

  1. 通过不同颜色来标识不同角色
  2. 业务分组管理

客户端架构、前端架构

        类似与4+1中的【逻辑视图】。客户端和前端的领域逻辑架构。

例子

使用场景

  1. 整体架构设计
  2. 架构培训

画图技巧

  1. 通过不同颜色来标识不同角色
  2. 通过连接线表示关系

系统架构

例子

定义

     后端的逻辑架构,又叫后端架构、技术架构。

【个人理解】:系统架构个人认为应该包含业务架构+应用架构。来表示软件系统提供什么样的业务能力、解决方案,同时这个系统的子模块、子系统的组成。让技术人员形成一个整体的宏观认知。

使用场景

  1. 整体架构设计
  2. 架构图培训

画图技巧

  1. 通过不同颜色来标识不同角色
  2. 通过连接线表示关系

应用架构

例子

定义

     描述后端系统由哪些应用组成。有点类似开发视图。应用架构有时和系统架构等价的。但如果软件系统更大更复杂, 系统架构则看起来需要使用业务架构+应用架构等多个来组成。

使用场景

  1. 项目开发、测试
  2. 部署发布
  3. 子域架构设计

画图技巧

  1. 通过不同颜色来标识不同角色
  2. 通过连接线表示关系

部署架构

例子

定义

     描述后端系统具体如何部署。对应4+1视图的物理视图。

使用场景

  1. 总体架构设计
  2. 运维规划和优化

画图技巧

  1. 用图标代替区块

系统序列图

为什么系统序列图

组成角色 Role、角色关系 Relation

动态架构图 需要用系统序列图表示。(时序图)

从架构图到序列图

参考引用

Kruchten P. Architectural Blueprints—The “4+ 1” View Model of Software Architecture. 1995[J]. IEE Software, 2005, 12(6)

架构蓝图--软件架构的“4+1”视图模型 - 知乎

极客时间训练营-让优秀的人一起学习

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

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

相关文章

ES自动补全

安装IK分词器 要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characte…

Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

文章目录 一、实战概述二、实战步骤(一)创建数据库(二)创建用户表(三)后端项目引入数据库1、添加相关依赖2、用户实体类保持不变3、编写应用配置文件4、创建用户映射器接口5、创建用户服务类6、修改登录控制…

LeetCode讲解篇之216. 组合总和 III

文章目录 题目描述题解思路题解代码 题目描述 题解思路 使用递归回溯算法,当选择数字num后,在去选择大于num的合法数字,计算过程中的数字和,直到选择了k次,如果数组和等于n则加入结果集 从1开始选择数字,直…

【一个中年程序员的独白】

一个中年程序员的独白 从大四开启程序工作的大门大四与实习梦想与现实毕业论文 从大四开启程序工作的大门 2009 年,我在一所在当地还算小有名气的本科院校读大四。大四专业课很少,准确地应该是没有课了。学校组织各种招聘会,但是好多大厂&am…

高级分布式系统-第6讲 分布式系统的容错性--进程的容错

分布式系统的容错原则既适用于硬件, 也适用于软件。 两者的主要区别在于硬件部件的同类复制相对容易, 而软件组件在运行中的同类复制( 进程复制) 涉及到更为复杂的分布式操作系统的容错机制。 以下是建立进程失效容错机制的一些基…

点击随机红点的简单游戏(pygame)

import pygame import sys import random# 初始化 Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption("Click the Red Dot")# 定义颜色 black (0, 0, 0) red (255, 0, 0)…

XCTF:hello_pwn[WriteUP]

使用checksec查看ELF文件信息 checksec 4f2f44c9471d4dc2b59768779e378282 这里只需要注意两个重点: Arch:64bit的文件,后面写exp的重点 Stack:No canary found 没有栈溢出保护 使用IDA对ELF文件进行反汇编 双击左侧的函数栏…

推荐github热榜项目_crewAI

1 项目地址 https://github.com/joaomdmoura/crewAI 2 功能 通过设置多个智能体,协同解决问题,以处理复杂任务;这种方法的实现方式是将一个任务的输出作为另一个任务的输入。它的优势在于小而有效,原理直观易懂,而且…

window中安装Apache http server(httpd-2.4.58-win64-VS17)

windows中安装Apache http server(httpd-2.4.58-win64-VS17) 1、下载windows版本的的httpd, https://httpd.apache.org/docs/current/platform/windows.html#down 这里选择的是Apache Lounge编译的版本 https://www.apachelounge.com/download/ 2、解压到指定目录,这…

AI出题,做不完,根本做不完

前几天学到了一种针对大模型进行提示词编程的方法,效果比较炸裂,特别分享给大家。 因为有个小朋友正在学习加减法,所以本文的大部分例子都是用来生成加减法练习题。 角色扮演 这是GPT刚刚出现时,我学到的一种提示词编写方法&am…

F-score 和 Dice Loss 原理及代码

文章目录 1. F-score1. 1 原理1. 2 代码2. Dice Loss2.1 原理2.2 代码 通过看开源图像语义分割库的源码,发现它对 Dice Loss 的实现方式,是直接调用 F-score 函数,换言之,Dice Loss 是 F-score的特殊情况。于是就研究了一下这背后…

网站漏洞扫描 awvs 23.11下载 Acunetix Premium build 23.11 for Linux 完美版

Acunetix Premium build 23.11 for Linux 完美版 更新日志: 网站漏洞扫描 awvs 23.11下载 新功能 Java IAST 传感器已更新为支持 Java 17 并删除了对 AspectJWeaver 的要求对管理适用于 Docker 和 Linux 的 Acunetix On-Premises 服务的机制进行了更改&#xff0…

前端js写数据结构与算法

1、什么是数据结构与算法 数据结构:是指数据对象中数据元素之间的相互关系。包括集合结构、线性结构、树形结构、图形结构。 算法:解决问题的思路。 2、时间复杂度 1.是什么? 执行当前算法所“花费的时间” 2.干什么? 在写代码的过程中&#xf…

C# .NET SQL sugar中 IsAny进行根据条件判断数据是否存在 IsAny的使用

SQL sugar 中控制器直接判断数据是否存在 首先确保你的Service层继承的表名 控制器中使用IsAny进行根据条件判断数据是否存在

算法通关村第十五关—继续研究超大规模数据场景的问题(黄金)

继续研究超大规模数据场景的问题 一、对20GB文件进行排序 题目要求:假设你有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序?  分析:这里给出大小是20GB,其实面试官就在暗示你不要将所有的文件都装入到…

墙地砖外形检测的技术方案-图像获取

硬件系统 墙地砖外形检测硬件系统主要由工业相机、光源、瓷砖位置检测电路和上位机组成,其结构如图所示。为了提高系统检测精度和稳定性,系统采用的是较高精度的高速工业相机用于抓取墙地砖表面轮廓图像,图像数据通过USB接口向上位机传送&am…

Maven《一》-- 一文带你快速了解Maven

目录 🐶1.1 为什么使用Maven 1. Mavan是一个依赖管理工具 ①jar包的规模 ②jar包的来源问题 ③jar包的导入问题 ④jar包之间的依赖 2. Mavan是一个构建工具 ①你没有注意过的构建 ②脱离IDE环境仍需构建 3. 结论 🐶1.2 什么是Maven &#x…

系列四、Spring Security中的认证 授权(前后端不分离)

一、Spring Security中的认证 & 授权(前后端不分离) 1.1、MyWebSecurityConfigurerAdapter /*** Author : 一叶浮萍归大海* Date: 2024/1/11 21:50* Description:*/ Configuration public class MyWebSecurityConfigurerAdapter extends WebSecuri…

ZZULIOJ 1110: 最近共同祖先(函数专题)

题目描述 如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结 点(编号是1 的结点)都有一条唯一的路径,比如从10 到根结点的路径是(10, 5, 2, 1), 从4 到根结点的路径是(4, 2, 1)&#xff0…

x-cmd pkg | qrencode - 二维码生成工具

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 qrencode 是一个用于生成二维码的命令行工具。它可以将文本、URL、电话号码等信息转换为二维码图像。生成的二维码图像可以保存为图片文件,方便在电子文档、网页、移动应用等各种场景中使用。 它支持的二维…