从零开始学会画系统架构图

这节课开始教大家画系统架构图,这是每个程序员都应该会的技能,不光是因为它能让你装B吹水还因为它的存在是合理的,在项目实施前除了了解功能性的需求,高级别的工程师还应该学会关注系统的安全性、易用性、性能要求以及IT资源上的需求,因为这些东西都是成本,不列出来怎么给客户报价或者是找领导申请预算。

所以系统架构图的首要目标是描述这些非功能性但又占用成本的需求,此外它还能帮助其他人了解项目在宏观上的结构对项目有一个更全面的认识。

今天我教大家一个画系统架构图的通用公式,用它可以拆解任何系统,帮你画出整洁专业的系统架构图,这个方法不需要大家有任何绘画基础、也不需要有多高的审美,只需要掌握其中的拆解系统的方法论和几个图形的组合和拖拽,就能把系统架构图画的既整洁又专业。

课程中会用下面两个系统为例给大家演示怎么画出它们的系统架构图。

本节我们先学会这个架构图公式的方法论和两个必要的语法点--UML的部署图和构件图,下节课会带大家一起从头开始,拿到一个系统的建设需求和目标后,用公式拆解系统画出系统的架构图。

这几节课干货满满,学会后对你的职业广度有极大帮助,抓紧订阅起来吧,早订阅早享受,苹果用户在微信直接订阅价格会高于安卓用户,所以专栏在小报童同步更新,可以通过扫描二维码在小报童订阅阅读,规避额外开销。

为什么要使用架构图

调研需求的时候需求方会跟我们说系统要具备什么样的功能,能完成什么样事情,解决他们的什么问题,这些都是功能性的需求。其实非功能性需求也是项目中的一部分重要工作,比如系统安全性、易用性、性能方面的需求以及系统在已有IT资源利用性和已有系统兼容对接上的需求都算是非功能性需求。

如果这部分非功能性需求被忽略,往往会在项目执行的中后期造成巨大的问题。此外项目除了人力成本外 IT 资源也是一个大成本,无论是给甲方客户报价还是自己的项目向公司申请预算都需要涵盖这部分成本,不然不就亏了嘛。

所以调研记录和表达出非功能性需求也是项目在准备期的一项重要工作,而UML工具包里的部署图和构建图是获取和描述非功能性需求的重要工具。

部署图和构建图在UML中是用来描述软件系统架构的,很多软件系统在需求阶段就已经有一些软件架构和软件技术框架上的要求,如果忽视了这些要求会给软件后期的工作带来灾难性的后果。

大部分项目在建设初期就会对软件架构和技术框架有一些限制,主要有这方面:

  1. 新项目需要在已有系统的基础上进行开发,原系统的已有架构和技术框架会影响新项目的技术方案。

  2. 新系统需要与已存的系统进行对接。

  3. 新系统需要充分利用现有IT资源,合理控制成本。

  4. 新系统需要导入哪些数据,需要同步数据到哪些系统。

  5. 原有IT平台需要改造,才能保证新系统和已有系统都能正常运行。

为了更好的分析和描述这些软件架构和技术方案选择上的需求,我们可以使用部署图和构件图对这些需求进行逐一描述:

  • 使用部署图和构件图描述当前的IT系统架构

  • 列出客户对IT资源类和技术框架类的要求

  • 根据列出的要求,用部署图和构件图画出新系统的软件架构和技术框架

  • 和客户沟通确认这些内容,同时确定客户的IT架构环境怎么改造,新系统如何部署在IT环境中。

一个系统架构分析案例

某公司现有OA系统只支持员工考勤使用,现公司希望将员工报销进行流程线上化提高内部效率,公司当前的OA系统和IT架构信息如下:

  1. 当前OA系统只能由员工在内部局域网通过工作电脑访问。

  2. 公司有大概200名员工,根据工种不同配备的办公电脑系统为Windows 10 或者 MacOS

  3. OA系统应用部署在两台Web服务器上,服务器系统未Linux Dabian v7

  4. IT资源有两台数据库实例,一主一从,数据库类型为MySQL5.8,OA的考勤系统使用的数据库部署在上面。

整理好这些信息后,我们可以使用部署图和构件图描述出系统的当前现状,该OA系统的软件架构和IT资源现状可以用UML部署图和构件图协作表示如下:

该公司提出希望在OA系统中建设费控系统的需求的同时,要求新集成进来的系统要符合以下IT架构方面的要求:

  1. 系统需要共用部分考勤系统的数据,根据员工考勤数据自动核验员工的出差、加班报销申请。
相关推荐
七灵微1 天前
进程与线程以及如何查看
linux·系统架构
oioihoii1 天前
桌面图形界面生成原理:从流水灯到电脑屏幕
系统架构
颯沓如流星2 天前
软件架构设计方法之The Clean Architecture 整洁架构
架构·系统架构
柔弱女子爱java2 天前
spring专题笔记(五):依赖注入--p命名空间注入、c命名空间注入、util命名空间
java·笔记·后端·spring·架构·系统架构
云空2 天前
《 QT 5.14.1 类库模块列表详述》
开发语言·qt·系统架构
星原飞火3 天前
2-2-18-16 QNX系统架构之自适应分区
车载系统·系统架构·qnx·blackberry
重生之我是数学王子4 天前
ARM原理
arm开发·系统架构
silver6874 天前
中间件介绍
系统架构
亭墨5 天前
linux0.11源码分析第二弹——setup.s内容
linux·驱动开发·学习·系统架构
田超凡6 天前
M4Pro内核MacOS brew安装docker爬坑
微服务·云原生·java-ee·系统架构