实践篇(三):如何有效评审软件架构图?

实践,如何,有效,评审,软件,架构图 · 浏览次数 : 184

小编点评

**软件架构图评审关注点从图形化的角度** **2.1 通用检查项** * **标题:**架构图是否具有标题? * **类型:**架构图的类型是什么? * **范围:**架构图的范围是什么? * **图例:**是否存在图例? **2.2 元素架构图** * **名称:**每个元素是否有名字? * **类型:**每个元素的类型是什么? * **描述:**每个元素是做什么的? * **技术选型:**每个元素是适合标明技术选型的吗? * **缩写:**每个元素的缩写/简称 pymysql的含义? * **颜色:**每个元素的颜色含义? * **形状:**每个元素的形状含义? * **图标:**每个元素的图标含义? * **边框:**每个元素的边框样式含义? **2.3 关联关系架构图** * **线描述关系含义:**每条线是否有描述关系含义的信息? * **技术选型:**每条线的技术选型是什么? * **简化:**每条线的简化表示什么呢? **3. 结语** * **重要性:**软件架构图评审关注点对软件架构图的理解至关重要。 * **快速了解意图:**建议将简单排版的内容用于快速了解架构设计信息。

正文

作者:京东科技 倪新明

设计意图的传达是架构可视化关注的重要维度,在技术方案评审过程中不可避免的会出现各种各样的架构图或设计图,这些图形化表述在设计意图传达效果层面表现不一,本文从图形化的视角为软件架构图的评审关注点提供了参考。

注:关于架构及架构可视化参考文章 《 探寻软件架构的本质,到底什么是架构? 》 《 软件架构可视化及C4模型:架构设计不仅仅是UML


 

1 原则

明确的主题:架构图要表达的意图明确,比如是容器图、组件图还是部署图
一致的抽象层级:保持一致的抽象层级,不应超过2个以上的层次变化
粒度合适的范围:不应试图在一张图表达“所有的东西”,每张架构图聚焦于自身职责边界的范围
清晰的图例说明:对架构图颜色、形状等有明确的图例,以方便阅读导航
图形颜色不宜太多:过多颜色增加认知成本,建议不超过 4 种
图形元素不宜太多:过多图形元素增加认知成本
明确的连线关系描述

2 评审检查单

如同上线检查单和开发检查单,针对于软件架构图的评审制定一套检查单同样具有价值。不论架构设计者,还是参与设计评审的开发人员,对于形式各异的 “架构图” 是提供通用的参考关注点,以便干系人更多、更深入、更高效、更有针对性的获取架构图的更多信息。

2.1 通用检查项

架构图是否具有标题?
是否能够理解架构图的类型是什么?
是否能够理解架构图的范围是什么?
架构图是否有图例

2.2 元素

架构图中每一个元素是否有名字
是否能够理解架构图中每个元素的类型? (比如,抽象级别,软件系统?容器?组件?等等)
是否能够理解架构图中的每个元素是做什么的?简要描述信息?
是否能够理解与该元素相关的技术选型(适合标明技术选型的元素)
是否能够理解架构图中使用的所有缩写/简称的含义?
是否能够理解架构图中元素使用的所有颜色的含义
是否能够理解架构图中元素使用的所有形状的含义
是否能够理解架构图中元素使用的所有图标的含义?
是否能够理解架构图中元素使用的所有边框样式的含义? (比如,实线 vs 虚线)
是否能够理解架构图中使用的所有元素大小的含义? (比如, 小框 vs 大框 )

2.3 关联关系

架构图中的每条线是否有描述关系含义的信息?
是否能够理解架构图中的每个关联关系适合标明技术选型的场景技术选型是什么? (比如,进程间的交互的协议)
是否能够理解架构图中的关联关系的简称或缩写
是否能够理解架构图中的连线颜色的含义?
是否能够理解架构图中的连线箭头的含义?
是否能够理解架构图中的连线样式的含义? (比如,实线 vs 虚线)

3 结语

本文描述了软件架构图的一些评审关注点,其实不只是评审的视角,对于任何一个图形化的软件系统架构或设计表诉,如何能够快速的了解其要表达的意图至关重要,对于设计者而言如何快速传递架构设计信息并于干系人达成一致也至关重要。

与实践篇(三):如何有效评审软件架构图?相似的内容:

实践篇(三):如何有效评审软件架构图?

设计意图的传达是架构可视化关注的重要维度,在技术方案评审过程中不可避免的会出现各种各样的架构图或设计图,这些图形化表述在设计意图传达效果层面表现不一,本文从图形化的视角为软件架构图的评审关注点提供了参考。

[转帖]Web技术(七):如何使用并实现MQTT 消息订阅-发布模型?

文章目录 一、什么是发布-订阅消息模型?二、订阅-发布消息模型有哪些应用?2.1 应用于IP 物联网络中的消息传递2.2 应用于操作系统进程间的消息传递2.3 应用于MESH 自组网中的消息传递 三、MQTT 如何实现订阅-发布消息模型?3.1 如何在本机实践MQTT 通信并抓包分析?3.2 MQT

[转帖]《Linux性能优化实战》笔记(三)—— CPU 上下文切换(下)

上篇介绍了三种CPU 上下文切换以及它们可能造成的问题和原因,这一篇来看看在系统中如何发现CPU 上下文切换问题。 一、 查看上下文切换情况 主要使用两个命令:vmstat以及之前用过的pidstat。 1. vmstat # 每隔5秒输出1组数据vmstat 5 procs memory swap

弹性数据库连接池探活策略调研(三)——DBCP

在之前的文章中,我们介绍了弹性数据库连接失效的背景,并探讨了HikariCP、Druid连接池探活策略的相关内容。在本文中,我们将会继续探讨另一个线上常用的连接池——DBCP,并为您介绍如何在使用DBCP时实现最佳实践的弹性数据库连接池探活策略。

MQ消息队列篇:三大MQ产品的必备面试种子题

MQ(Message Queue)作为一种用于实现异步通信的技术,具有重要的作用和应用场景。在面试过程中,MQ相关的问题经常被问到,因此了解MQ的用途和设计原则是必不可少的。本文总结了MQ的常见面试题,包括MQ的作用、产品选型、消息不丢失的保证、消息消费的幂等性、消息顺序的保证、消息的高效读写、分布式事务的最终一致性等方面。通过深入理解这些问题,可以更好地理解MQ的应用和设计,为面试和实际应用提供参考。

高性能MySQL实战(三):性能优化 | 京东物流技术团队

这篇主要介绍对慢 SQL 优化的一些手段,而在讲解具体的优化措施之前,我想先对 EXPLAIN 进行介绍,它是我们在分析查询时必要的操作,理解了它输出结果的内容更有利于我们优化 SQL。为了方便大家的阅读,在下文中规定类似 key1 的表示二级索引,key_part1 表示联合索引的第一部分,uni

逆向WeChat(三)

本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18198572 上篇回顾,对象是WEUIEngine。WeUIEngine使用了chrome::base框架,但只用来实现了单一的功能,只为了DUI的动画计时器。 chrome::base框架没有用作主线程的disp

QGIS开发笔记(三):Windows安装版二次开发环境搭建(下):将QGis融入QtDemo,添加QGis并加载tif遥感图的Demo

前言 使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车、无人船、无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇: 上半部分:主要是安装好后,使用QtCreator可以使用QGIs的apps下的Qt使用对应的编译器编译不带qgis的空工程。 下半部分:在上

用户行为分析模型实践(三)——H5通用分析模型

本文从提升用户行为分析效率角度出发,详细介绍了H5埋点方案规划,埋点数据采集流程,提供可借鉴的用户行为数据采集方案;且完整呈现了针对页面分析,留存分析的数仓模型规划方案。

https 原理与实践

https 原理与实践 经典三问,是什么,为什么,怎么做? 是什么 是一种http的安全协议,在tc