软件架构-可视化

article/2025/4/20 9:03:48

软件架构-可视化

    当我们在讨论系统时,往往都会说这个系统的架构是什么样的,在你口述的同时,如果能借助某些图表,效果会更好,传统的uml建模比较复杂,目前的软件工程大家更关注效率(这里我不谈敏捷开发),uml变得很不实用,那么探寻一种更简洁有效的“架构描述”方式变得比较迫切,笔者基于这个需求结合c4模型,uml,和自己的从业经验,总结了一套描述架构的方式.


      1.系统上下文/系统全景图(System Context diagram)

      2.系统应用程序架构图(Container diagram)

      3.系统组件图(Component diagram)

      4.组件明细图(Component detail diagram)

    >组件API(Component  interface)

    >组件涉及的数据存储模型(data diagram)

    >组件类图(Class  diagram)

    >组件时序图(sequence diagram)

       5.系统物理部署(System deploy diagram)

上面我从人类比较习惯的认知事物的思维方式,自顶而下,层层推进的方式去描述我们的系统,每一层都从意图,结构,受众这3方面讲述了改成架构图的作用。


.系统上下文/系统全景图(System Context diagram)

     做为系统最高层次的抽象,不涉及细节,起到总揽大局的作用。

    意图

    系统上下文/系统全景图回答了下面几个问题:

  • 我们构建的软件系统是什么?

  • 谁会用它?

  • 如何和现有it系统融合?

  结构

        结构,描述的是画系统上下文应该包含哪些元素,一般包含待构建的系统,使用该系统的人员,现有的it系统,以及上面3者之间的交互,在这里细节不重要

    因为你画的是一个系统大局景观的广角视图,关注的重点在人和系统上,而不再技术和协议。  

     系统使用人员

            主要分为2大类:业务用户和系统管理员。

     关联IT系统 

            现有存在的it系统,需要与待构建系统进行交互。

     交互

           系统人员和待构建系统,待构建系统和现有it系统之前的交互,简单的链接线和简短的标注描述关键用例。

 受众

         直接的软件开发团队内部人员,外部技术人员和非技术人员。

  示例

  二.系统应用程序架构图(C4中的容器图)

应用程序架构图也是对软件系统较高层次的抽象,不过相对系统上下文,它进一步的说明高层次的技术选择。

意图

    应用程序架构图,可以帮助你回复下面的问题:

  • 构建系统的整体形态是什么样的?
  • 高层次的技术决策有哪些?
  • 系统内各个职责的分布?
  • 应用程序是怎么交互的?

结构

      首先明白那些是我们所说的应用程序指的是组成软件系统逻辑上可独立执行和部署的文件

    web服务器:apache服务器, nigix服务器,微软的iis等;

    应用服务器:jboss,ibm websphere,weblogic等;

    sql数据库:mysql,db2等;

    nosql数据库:redis,mongodb,hbase等;

    搜索引擎:solr,elasticsearch等;

    文件系统:oss,hdfs等;

    定时器:corn等;

     每个应用程序应用有自己的逻辑名称(web服务器),技术选择(nigix),应用程序的职责声名(负责反向代理和负载均衡)。

交互

    应用程序之前的通信一般是进程间的通信,交互的标注需要关注如下信息:

    交互的目的:为了传输数据,存储数据等

    通信方法和协议: rpc调用,java消息,http服务,soap服务

    通信方式:同步,异步

受众

    直接的软件开发团队内部人员和外部技术人员;

示例

  

 


http://chatgpt.dhexx.cn/article/l84yk63y.shtml

相关文章

48 款数据可视化分析工具大集合

作者:DC君 来源:DataCastle数据城堡 本篇专门推荐48款数据可视化工具,全到你无法想象。 1、Excel 作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是Excel在颜色、线条和样式上…

爬取某小说榜单爬虫及可视化分析

爬取某小说榜单爬虫及可视化分析(仅用于学习) gitee代码链接:https://gitee.com/huang_jia_son/duoduo.git 介绍 GUI界面python爬虫数据清洗与处理pyecharts可视化展示软件架构 (1)通过tkinter制作GUI界面&#xf…

咖啡PowerBI可视化实例

目录 一、导入数据 二、构建指标 1、构架表之间的关系 ​ 2、完善表 3、构建指标 三、可视化 1、整体分析 2、省份业务 3、产品维度 4、地区维度 5、客户维度 6、价格分析 7、利润分析 8、其它分析 一、导入数据 二、构建指标 1、构架表之间的关系 软件会…

CodeScene - 软件质量可视化工具

CodeScene - 软件质量可视化工具 CodeScene https://codescene.com/ https://codescene.io/ The powerful visualization tool using Predictive Analytics to find hidden risks and social patterns in your code. 使用 Predictive Analytics 的功能强大的可视化工具&#x…

使用excel、python、tableau对招聘数据进行数据处理及可视化分析

招聘数据数据分析及可视化 数据来源前言一、观察数据删除重复值数据加工 二、利用python进行数据分析和可视化1.引入库2.读入数据观察描述统计,了解数据大概信息 3.数据预处理3.1数据清洗3.1.1 删除重复值3.1.2缺失值处理 3.2数据加工 4.数据可视化4.1城市岗位数量4…

可视化工具软件排行榜

市面上的数据可视化工具软件如此之多,有哪些可视化软件工具居于排行榜单的前列呢?你用的软件上榜了吗? 1、FineBI 来自帆软公司,虽作一个BI工具,但是可视化效果不错,可制作Dashboard。优势在于一旦准备好…

2020年六十款数据分析的可视化工具推荐

今天小编将为大家盘点六十款数据分析的可视化工具,让你妥妥的成为会议室乃至全公司最亮的崽~ 1、ChartBlocks ChartBlocks是一款网页版的可视化图表生成工具,在线使用。通过导入电子表格或者数据库来构建可视化图表。整个过程可以在图表的向导指示下完成。它的图表在HTML…

值得推荐的13款可视化软件,快收藏!

数据可视化力求用图表结合的方式把所有的数据整合在某一图像上,这样呈现在观众眼前的画面不仅仅是美观,且比以往长篇大论或是密密麻麻的数据表格更直观易懂,更便于观察分析。到今年上半年为止,国内外已经有了很多发展的较好的数据…

深入分析ArrayMap

前面我们分析了Android为了节省内存提供的一个HahMap<Integer, ?>的替代品SparseArray。SparseArray只能替代key的类型为int的Map。Android也提供了一个key不用局限于int的Map的实现&#xff0c;ArrayMap。老规矩我们通过调试来深入的分析一下ArrayMap&#xff08;看本文…

ArrayMAP介绍

它不是一个适应大数据的数据结构&#xff0c;相比传统的HashMap速度要慢&#xff0c;因为查找方法是二分法&#xff0c;并且当你删除或者添加数据时&#xff0c;会对空间重新调整&#xff0c;在使用大量数据时&#xff0c;效率并不明显&#xff0c;低于50%。 ArrayMap is a ge…

Android特别的数据结构(二)ArrayMap源码解析

1. 数据结构 public final class ArrayMap<K,V> implements Map<K,V> 由两个数组组成&#xff0c;一个int[] mHashes用来存放Key的hash值&#xff0c;一个Object[] mArrays用来连续存放成对的Key和ValuemHashes数组按非严格升序排列初始默认容量为0减容&#xff…

ArrayMap 源码的详细解析

最近在写framework层的系统服务&#xff0c;发现Android 12中用来去重注册监听的map都是用的ArrayMap&#xff0c;因此仔细研究了ArrayMap的原理。 目录 一. ArrayMap概述 二. ArrayMap源码解析 1.主要包含的成员变量 2.构造函数 3. public boolean containsKey(Object ke…

SparseArray和ArrayMap

首先我们来介绍一下HashMap&#xff0c;了解它的优缺点&#xff0c;然后再对比一下其他的数据结构以及为什么要替代它。 HashMap HashMap是由数组单向链表的方式组成的&#xff0c;初始大小是16&#xff08;2的4次方&#xff09;&#xff0c;首次put的时候&#xff0c;才会真…

SparseArray与ArrayMap

SparseArray SparseArray核心代码 两个构造函数默认数组容量10 public SparseArray() {this(10); } public SparseArray(int initialCapacity) {if (initialCapacity 0) {mKeys EmptyArray.INT;mValues EmptyArray.OBJECT;} else {mValues ArrayUtils.newUnpaddedObjectA…

arraymap android,深入剖析 Android中的 ArrayMap

数据集合在任何一门编程语言中都是很重要的一部分&#xff0c;在 Android 开发中&#xff0c;我们会实用到ArrayList, LinkedList, HashMap等。其中HashMap是用来处理键值对需求的常用集合。 而Android中引入了一个新的集合&#xff0c;叫做ArrayMap&#xff0c;为键值对存储需…

ArrayMap 笔记整理

源码基于 API 25 主要参考文章&#xff1a;面试必备&#xff1a;ArrayMap源码解析 1、概述 截图自&#xff1a;面试必备&#xff1a;ArrayMap源码解析 在开始讲解源码之前&#xff0c;需要说明 ArrayMap 的底层实现结构&#xff0c;即两个数组&#xff1a; int[] mHashes; /…

ArrayMap 原理

一 概述 在移动设备端&#xff0c;内存资源很珍贵&#xff0c;HashMap 为实现快速查询带来了很大内存的浪费。为此&#xff0c;2013年5月20日 Google 工程师 Dianne Hackborn 在 Android 系统源码中新增 ArrayMap 类&#xff0c;从 Android 源码中发现有不少提交&#xff0c;专…

不再害怕面试问ArrayMap一文完全看懂Android ArrayMap源码解析

作者&#xff1a;VIjolie 前言 ArrayMap是谷歌推出的在安卓等设备上用于替代HashMap的数据结构&#xff0c;和HashMap相比&#xff0c;具有更高的内存使用率&#xff0c;因此适合在Android等内存较为紧张的移动设备&#xff0c;下面结合源码分析ArrayMap实现原理&#xff0c;主…

ArrayMap原理解析

1.ArrayMap是什么 一个通用的key-value映射数据结构 相比HashMap会占用更少的内存空间 android.util和android.support.v4.util都包含对应的ArrayMap类 2.为什么要使用ArrayMap ArrayMap是一个普通的键值映射的数据结构&#xff0c;这种数据结构比传统的HashMap有着更好的内…

ArrayMap源码解析

一、数据结构 ArrayMap是一个key-value的数据结构&#xff0c;它比HashMap有更高的内存效率 它映射到两个数组结构&#xff1a;一个整数数组mHashes&#xff0c;用来保存key的hashcode&#xff1b;一个对象数组mArray&#xff0c;保存key-value 它不适用于大量数据的存储&…