为什么需要架构图,怎么画?

Technorati 标签: 架构图,架构,交流,布局

不知不觉中做架构师也已经4年了,最初的感觉只是一个名号,不再把代码作为强制的任务,后来开始慢慢的转变工作内容。画图,成为了我的主要工作。我可能不是每天都在写代码,但却是每天都在画图,而且我越来越觉得画图让我更容易说清楚。

画架构图有几个好处:看清楚系统包含哪几个部分,各个部分实现什么职责,相互之间的关系是什么。当和别人讨论的时候,通过架构图可以很容易的把讨论的问题框定在一个确定的范围里,可以很容易的察觉出彼此之间存在误解的一些区域,比如对一个底层的组件。这样就能避免两个人讨论了半天,结果发现你说的是A模块,我说的是B模块。

当我需要向别人说明某个问题时,通过画图,可以高效的说明问题的背景,哪些是相关的,哪些是无关。听我说话的人就能很快进入我设定的角色,问出有针对性的问题,理解我的要求。

那么怎样才能画出高质量的架构图呢?

首先需要明白你画图的目的,是说明业务还是技术;是整体还是局部;是已完成的还是待完成的。

确定了目的以后,就需要确定实现该目的的关键因素有哪些,比如为了说明业务,我需要说明用户是谁,做这个业务的目的是什么,做业务时系统需要完成什么任务,做完之后,其它系统会受什么影响;

确定关键因素之后,需要选择表达关键因素的方法,独立的方块,方块内包含的方块,流程,网状;

最后是开始画图,一定要先划出高层次的模块,确定好各个模块的位置,确定好各个模块的核心内容,再分模块填充里面的内容。不要一开始就话小模块,过早陷入细节。

转载于:https://www.cnblogs.com/alphablox/p/5361719.html

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

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

相关文章

Jenkins构建时间Poll Scm的设置(常用设置)

每15分钟构建一次:H/15 * * * * 或*/5 * * * * 每天8点构建一次:0 8 * * * 每天8点~17点,两小时构建一次:0 8-17/2 * * * 周一到周五,8点~17点,两小时构建一次:0 8-17/2 * * 1-5 每月1号、15号…

图像格式基础

所谓位映像,即是指一个二维的像素矩阵,而位图就是采用位映像方法显示和存储图像。一幅图像的显示就是将图像的像素映射到屏幕的像素上并显示一定的颜色。当一幅图形的像素由彩色表示时就是我们通常所说的彩色图像了。 由于数字图像可以表示为矩阵…

aop理解

1.切面(Aspects)常常通过通知(advice)、切点(pointcuts)和织入点(join points)来描述 2.通知(advice)有5种 Before——前置通知,在调用目标方法之…

Php 与 Json

PHP与JSON 在PHP中存在两个与JSON相关的函数: json_encode($array或$object)函数:把一个数组或对象转化为JSON格式的字符串 json_decode($json,$flag)函数:把一个JSON格式的字符串转化为数组或对象 $flag :true,代表转…

docker supervisor + compose

一: Supervisor Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面…

AngularJS(1)——入门学习

AngularJs相关概念 在w3schools中针对AngularJs的介绍为: AngularJS extends HTML with new attributes. AngularJS is perfect for Single Page Applications (SPAs). ProAuditObject ProAuditObj1 new ProAuditObject(); ProAuditObj1.setLproid(proId); Pr…

C# 字符,字符串和文本处理。

1. 字符: 在.net中 字符是表示成16为Unicode代码值。每个字符都是System.Char结构(一个值类型)的实例。 public class StringTempte{public static void GetChar(){double d;d char.GetNumericValue(\u0033);Console.WriteLine(d.ToString()…

opencv2.2.0源代码(include文件)分析

由于openCV2.2.0源文件很庞大,这里我只分析openCV2.2.0文件组织结构的各个模块的include文件(重点分析各个模块下引用的算法和实现的功能),而不是src文件。这里分析各个模块有助于更好的从整体把握和理解openCV2.2.0。这里只是自己…

【pyqt5学习】——tableWidget学习

设置单元格列宽 self.tableWidget.setColumnWidth(0,200) 设置第一行和表头之间的表格线 self.tableWidget.horizontalHeader().setStyleSheet("QHeaderView::section{background:skyblue;color: black;}")

SUSE团队已将重心偏向GCC 7

2019独角兽企业重金招聘Python工程师标准>>> SUSE的Andreas Jaeger在博客中发表了一篇关于SUSE Linux Enterprise Server 12操作系统更新工具链以及它所带来的新开发工具的博文。文章指出,随着GNU Compiler Collection 7的发布,GCC团队为开发…

eclipse-连接TFS错误 the server to respond with a valid http response解决方法

解决办法 如果普通凭证有多个,则将普通凭证给删除。 转载于:https://www.cnblogs.com/nidongde/p/6277243.html

Mysql源码安装

首先去http://dev.mysql.com/downloads/mysql/5.6.html 下载mysql的源代码,记住是source code,别下别的版本 1.安装依赖的包 yum -y install cmake gcc-c bison ncurses ncurses-devel 2.创建mysql的安装目录及数据库存放目录 mkdir -p /usr/local/mysql…

PDB文件:每个开发人员都必须知道的

一 什么是PDB文件 大部分的开发人员应该都知道PDB文件是用来帮助软件的调试的。但是他究竟是如何工作的呢,我们可能并不熟悉。本文描述了PDB文件的存储和内容。同时还描 述了debugger如何找到binay相应的PDB文件,以及debugger如何找到与binay对应的源代码…

【pyqt5学习】——graphicView显示opencv图像

imgpath "result.jpg"img cv2.imread(imgpath) # 读取图像img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换图像通道x img.shape[1] # 获取图像大小y img.shape[0]self.zoomscale 1 # 图片放缩尺度frame QImage(img, x, y, x * 3, QImage.Format_RGB888)…

项目总结——机房收费系统合作版

机房合作就结束了,这次合作开发是第一次与别人一块儿开发一个系统,收获还是蛮大的。以下我总结几点算是经验吧,供以后參考: 管理上1.计划在准备合作开发之前我们三个去找米老师,老师给我们规定了时间。半个月。尽管计划…

CenterOs 防火墙设置

为什么80%的码农都做不了架构师?>>> 1. 重启后生效的 开启: chkconfig iptables on 关闭: chkconfig iptables off 2. 及时生效 开启: service iptables start 关闭: service iptables stop 查看防火墙规则…

设计模式六大原则(3)——依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下…

【机器学习——决策树】——两种方法实现,含模型的保存和调用

目录 1、ID3算法 2、使用sklearn API——模型保存和调用成功 1、ID3算法 以下实现了决策树的创建、可视化绘制、决策树的保存和调用 但是在利用决策树进行预测的时候出现错误 分类代码 #实用决策树进行分类 def classify(inputTree, featLabels, testVec): firstStr = in…

重温 const 指针

在进行声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。 下面都是合法的声明,但是含义大不同: const int * pOne; //指向整形常量 的指针,它指向的值不能修改 int * const pTwo; //指向整…

提交MTBF eservice以及log注意事项

[DESCRIPTION]提交MTBFeservice需要注意的描述,log事项[SOLUTION]提交MTBF eservice时,请注意1.描述清楚问题现象2. 描述清楚问题发生的时间点3.描述清楚问题发生时在run的case提交log时请注意1.MTBF的log通常会很大,若log太大,只…