【架构设计】作为架构师你应该掌握的画图技术

news2024/11/25 14:51:15

1.前言

  • 大家知道,架构的过程其实就是建模的过程,那自然离不开架构图。
  • 那么,我们先来看几个问题。

(1)什么是架构图?

架构图 = 架构 + 图,用图的形式把系统架构展示出来,配上简单的文案,不同的人开不同的架构图,比如业务架构图就是给老板和产品经理看的,技术架构是给研发人员看的,物理架构图是给部署运维的人员看的。

(2)如何判断架构图的好和坏?

  • 业务抽象设计的合理性,是否满足高内聚、低耦合的要求,不能太宽泛,也不能太细粒度
  • 层级划分目标系统边界,自下而上 或 由上而下,一般包括 基础设施、数据层、应用层、用户层四个层次
  • 纵向分层 上层依赖于下层越底层,越是基础服务;横向并列关系,级别相同
  • 理清架构图类型、业务要全面、专业术语一致、图形清晰美观、颜色类型划分合理

(3)什么是【 TOGAF】

  • 全称 The Open Group Architecture Framework 企业架构标准
  • 给企业架构专业人士之间的沟通提供一致性保障,设计上注重灵活性,可用于不同的架构风格。
  • 不同架构视图承载不同的架构设计决策,支持不同的目标和用途

在这里插入图片描述

2.业务架构图

(1)什么是业务架构图

  • 定义业务战略、企业治理、组织架构和关键业务流程。

  • 是对业务需求的提炼和抽象,使用一套方法论对项目所涉及需求的业务进行业务边界划分

  • 能比较清晰地看到系统的业务全貌,需求分析是否做到位,功能开发是否达到预期目标,都以此为依据

  • 业务架构图中尽量不出现技术的字眼,不同架构图的读者是不同的,确保能看懂。

  • 无技术背景人员可参与实现的讨论,向技术人员描述解决方案核心要做什么,必须实现的关键是什么

(2)怎么去画业务架构图

  • 分层

    • 业务按照层级进行划分,各个层级属于独立的版块,下层为上层提供服务能力支撑。比如:laaS / PaaS / SaaS
  • 分模块

    • 同层级中进行小归类,属于平行关系,可以独立存在
  • 分功能

    • 独立功能划分出来,即业务入口,业务方重点关注的功能点,可以认为是微服务划分

在这里插入图片描述

3.技术架构图

(1)什么是技术架构图

  • 应用架构本身只关心需要哪些应用系统,不关心在整个项目中你需要使用哪些技术
  • 技术架构则是实现应用架构的承接方,识别技术需求,进行技术选型,描述技术之间的关系
  • 解决的问题包括
    • 技术层面的分层、开发语言、框架的选择
    • 通信技术、存储技术的选择、非功能性需求的技术选择等

在这里插入图片描述

4.数据架构图

  • 描述一个组织逻辑的和物理的数据资产和数据管理资源的结构
  • 从数据视角,表达数据从产生到消费应用的全过程
  • 比如做一个电商实时大屏,数据来源有哪些,经过哪些组件处理,最终存储和应用到哪里
  • 常规里面不加具体的技术实现,但有时会方便沟通,则加入对应的技术实现

在这里插入图片描述

5.RUP4+1视图

(1)什么是RUP 4+1

  • 全称Rational Unified Process,中文统一软件开发过程,是一个面向对象画图的方法论
  • 在RUP中采用"4+1"视图模型来描述软件系统的体系结构
  • 包括五种视图:场景视图、开发视图、逻辑视图、物理视图、处理试图

(2)分类

  • 场景视图
    • 也叫用例视图,4+1中的1,是最核心的视图。在UML中通常由用例图表示并不限于使用UML的用例图进行设计,可以使用其他方法。
  • 逻辑视图
    • 描述系统的功能需求,系统给用户提供哪些服务,比如扫码、登录、支付
    • 对系统职责的逐级划分,理清功能需求和系统边界,也叫系统架构、应用架构、技术架构
  • 物理视图
    • 也叫部署视图,部署架构,对这个部署信息进行描述,包括服务器、虚拟机、终端设备分布等
  • 处理视图
    • 流程图,描述系统中的动态信息,最常见的是逻辑架构元素之间的交互关系
    • 比如支付下单的功能是怎末实现的,在UML中通常用时序图和流程图表示
  • 开发视图
    • 描述在开发环境中软件的静态组织结构,关注软件开发环境下实际模块的组织

6.场景视图

  • 场景视图也叫用例视图,4+1中的1,是最核心的是视图,在UML中通常由用例图表示,用例视图并不限于使用UML的用例图进行设计,可以使用其它方法。
  • 用例图主要分3个部分
    • 参与者
      • 代表系统外部与系统发生交互的人或事物
      • 事物可以是一个应用程序或者特殊进程
    • 用例:系统外部可见的一个功能单元,由参与者启动,比如观看课程
    • 参与者与用例的关系
      • 关联:以一条直线相连,比如用户登录系统
      • 归纳(泛化)
        • 指一个父用例可以形成多个子用例,父用例和子用例之间的关系就是泛化关系
        • 泛化关系通过一个三角箭头从子用例指向父用例来表示
        • 箭头表示参与者与参与者之间、用例与用例之间的关系;
        • 账号登录与微信登录,可归纳为登录系统
      • 包含:表示用例与用例之间的关系,用带有“包含”的箭头表示,箭头从基础用例指向包含用例
      • 拓展:用带有“拓展”的箭头表示,由拓展用例指向基础用例,如登录时忘记密码,是可选的,缺少不会影响用例的完整性

7.物理视图

  • 物理视图也叫部署视图,部署架构,对这个部署信息进行描述,包括服务器、虚拟机、终端设备分布等
  • 描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可计算机器节点上
  • 用于指导软件系统的部署实施过程,通常要考虑到解决系统的可靠性和可伸缩性要求
  • 没有统一标准格式,核心是清晰列出部署架构,能让运维方能看懂即可
  • 更多是综合的图形工具

在这里插入图片描述

8.开发视图

  • 描述在开发环境中软件的静态组织结构
  • 主要是系统模块的划分和组成,细化到内部包的组成设计,技术开发人员角度看系统的逻辑组成
  • 关注程序包,应用框架,引用的类库、SDK和中间件,以及工程和包的划分规则等,规范、约束开发环境的结构
  • 常规就是 类图,组件图

在这里插入图片描述
在这里插入图片描述

9.处理视图

  • 描述系统中的动态信息,最常见的是逻辑架构元素之间的交互关系
  • 比如 微信扫码支付下单功能是如何实现的
  • 在UML中通常由时序图和流程图表示
  • 什么是时序图
    • 是一种UML交互图,描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间 顺序的交互图; 又名序列图、顺序图
    • 通俗解释:就是交互流程图 (把大象装冰箱分几步)
    • 时序图包括四个元素
      • 对象(Object)
        • 时序图中的对象在交互中扮演的角色就是对象,使用矩形将对象名称包含起来, 名称下有下划线
      • 生命线(Lifeline)
        • 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象都有生命线
      • 激活(Activation)
        • 代表时序图中对象执行一项操作的时期, 表示该对象被占用以完成某个任务,当对象处于激活时期, 生命线可以拓宽为矩形
      • 消息(Message)
        • 对象之间的交互是通过相互发消息来实现的,箭头上面标出消息名,一个对象可以请求(要求)另一个对象做某件事件
        • 消息从源对象指向目标对象,消息一旦发送便将控制从源对象转移到目标对象
        • 消息的阅读顺序是【严格自上而下】
        • 消息交互中的【实线+实心箭头:同步请求消息】
        • 消息交互中的【实线+大于号:异步请求消息】
        • 消息交互中的【小于号+虚线:响应返回消息】
        • 自己调用自己的方法:反身消息
          在这里插入图片描述
          在这里插入图片描述

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

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

相关文章

Rust学习笔记——安装、创建、编译、输入输出

目录 一.安装 二.创建 三.编译 四.输入输出 (一).输出hello world (二).输入 一.安装 Rust Programming Language (rust-lang.org),这是Rust官网。 直接下载自己对应系统版本即可,小编是linux版。 下…

ARP协议map4(3层网络层的协议)

数据来源 一、广播与广播域概述 1、广播域广播域 广播:将广播地址做为目标地址的数据帧 广播域:网络中能接收到同一个广播所有节点的集合(广播域越小越好,这样通信效率更高) 下图每个圈都是一个广播域,说…

通关算法题之 ⌈数组⌋ 上

滑动窗口 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 输入: s "abcabcbb" 输出: 3 这就是变简单了,连 need 和 valid 都不需要,而且更新窗口内数据也只需要简单的更新计数器 …

(续)SSM整合之SSM整合笔记(ContextLoaderListener)(P179-188)

一 准备工作 1 新建模块ssm com.atguigu.ssm 2 导入依赖 <packaging>war</packaging><properties><spring.version>5.3.1</spring.version> </properties><dependencies><dependency><groupId>org.springframew…

Day10--初步实现自定义tabBar的效果

承接上文配置信息之后。 1.添加tabBar代码文件 我的操作&#xff1a; 1》在文件区新建一个custom-tab-bar文件夹 2》并在其中新建一个index组件 3》文件区展示图 4》最终的效果图&#xff1a; **************************************************************************…

界面组件DevExpress Reporting v22.1亮点 - 报表设计器功能全面升级

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reporting v22.1版本已正式发布&am…

数据结构之二叉树(前提知识)

文章目录前言**一、树****二、树的相关概念****节点的度****叶节点****分支节点****子节点****父节点****兄弟节点****树的度****节点的层****树的高度****祖先****子孙****森林****三、树的表示****孩子表示法****左孩子右兄弟法****双亲表示法****四、树在实际中的应用****总…

iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享

AirServer是一款Mac应用程序&#xff0c;可将AirPlay / AirTunes的音频&#xff0c;视频&#xff0c;照片&#xff0c;幻灯片和镜像接收功能添加到Mac电脑。它可以实现将iPhone手机或Mac电脑上的媒体文件以及其他操作投射到Mac电脑上。使用AirServer&#xff0c;可以从Mac&…

如何利用DGL官方库中的rgcn链接预测代码跑自己的数据集(如何在DGL库的链接预测数据集模块定义自己的数据集类)

最近在忙我的省创&#xff0c;是有关于知识图谱的&#xff0c;其中有一个内容是使用rgcn的链接预测方法跑自己的数据集&#xff0c;我是用的dgl库中给出的在pytorch环境下实现rgcn的链接预测的代码&#xff0c;相关链接贴在这里&#xff1a; dgl库中关于rgcn的介绍文档 dgl库…

联盟快应用-如何进行测试?

官方文档&#xff1a;快应用-无需安装&#xff0c;即点即用-厂商联盟官方网站 什么是快应用&#xff1f; 可以简单理解为是另一种小程序。 快应用是一种新的应用形态&#xff0c;以往的手机端应用主要有两种方式&#xff1a;网页、原生应用&#xff1b;网页无需安装&#xff…

阻塞车间调度

阻塞车间调度 当前机器上的作业处理必须保留在该机器上&#xff0c;直到下一台机器可用于处理为止。也就是说如果该作业要执行的下一个工序的机器被使用&#xff0c;则该机器必须被占用。 n个作业必须在m个机器f个工厂上进行处理&#xff0c;在每一个工厂中连续机器之间没有缓…

Android11 framework Handler

Android11 framework Handler引言Handler工作流程MessageQueue主要函数Looper主要函数思考1.一个线程有几个handler&#xff0c;有几个looper2.为什么handler会有内存泄漏3.如果想要在子线程new Handler怎么做&#xff1f;4.子线程中的loop如果消息队列中没有消息处理的时候怎么…

深入底层学git:目录中包含的秘密

1.Git简介 Git具有最优的存储能力&#xff0c;在没有远端git服务器的情况下&#xff0c;git本地就可以独立作为版本管控系统&#xff0c;这其中.git裸仓库中起了关键作用&#xff0c;那么我们一起来看看.git下都放了哪些文件。 打开Git Bash&#xff0c;切换到项目目录&#x…

王道考研——操作系统(第二章 进程管理)(进程;线程)

一、进程的概念、组成、特征 进程的概念 进程的组成——PCB 进程的组成——程序段、数据段 知识滚雪球&#xff1a;程序是如何运行的&#xff1f; 进程的组成 进程的特征 知识回顾与重要考点 二、进程的状态与转换 进程的状态——创建态、就绪态 进程的状态——运行态 进程的…

刷题日记【第十二篇】-笔试必刷题【洗牌+MP3光标位置+年终奖+迷宫问题】

洗牌【编程题】 import java.util.*;public class Main {// 左: i --> 2*i;// 右: in --> 2*i 1;private static void playCard(int[] cards, int n, int k ) {for (int i 0; i < k; i) {//一次洗牌的顺序int[] newCards new int[cards.length];//遍历编号为0-n-1…

【Servlet】2:认识一下Web服务器——Tomcat

目录 第三章 | Tomcat 认识与配置 | 章节概述 | HTTP服务器概述 | Tomcat 安装与配置 | Tomcat 的目录结构、端口号 第四章 | Tomcat 基本使用 | 章节概述 | 本地Tomcat 静态资源网站访问 | IDEATomcat 静态资源网站访问 | IDEA中最基础web项目的目录结构 本文章属于后…

从零开始操作系统-07:APIC

这一节主要主要是APIC。 所需要的文件在Github&#xff1a;https://github.com/yongkangluo/Ubuntu20.04OS/tree/main/Files/Lec7-ExternalInterrupt 历史方法&#xff1a;PIC&#xff08;Programmable Interrupt Controller&#xff09; Intel 8259&#xff1a; APIC&#…

小侃设计模式(十三)-策略模式

1.概述 策略模式&#xff08;Strategy Pattern&#xff09;是一种比较简单的模式&#xff0c;它定义了算法家族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换&#xff0c;此模式让算法的变化&#xff0c;不会影响到使用算法的客户。策略模式具有较强的实用性&a…

ARM学习扫盲篇(一):CPSRSPSR、LcacheDcache、w/parityw/ECC

1、CPSR&SPSR CPSR—程序状态寄存器(current program status register) SPSR—程序状态保存寄存器&#xff08;saved program status register&#xff09; Icache&Dcache icache用来缓存指令&#xff1b; dcache用来缓存数据&#xff0c;dcache用的前提是mmu要启动…

(续)SSM整合之SSM整合笔记(ContextLoaderListener)(P177-178)

目录 ContextLoaderListener 一 ContextLoaderListener 二 测试ContextLoaderListener 1 新建模块spring_listener com.atguigu 2. 导入依赖 3 .转web 4 .web.xml 5 springmvc.xml 6 .spring.xml 7 首页index.html 8 控制层 HelloController 9 service接口…