做软件架构设计,这个好用的画图工具推荐给你_ea画软件架构图-程序员宅基地

技术标签: 软件架构设计  经验分享  软件架构师  程序设计  设计模式  软件开发  

前面写了两篇软件架构设计的文章,今天Relax想跟大家聊一聊如何通过具体的工具去画出软件架构设计中的那些图,那么今天主要给大家分享的是一个好用的架构设计画图工具——Enterprise Architect(后面都简称EA)。

前面说了Relax平时主要用到了类图、构件图、部署图、用例图和序列图五种图,所以这篇文章主要是想比较详细的说明如何通过EA画出这些图。

安装好EA后,打开EA新建一个工程,选择对应的视图,具体步骤见下图红色方框标注:
在这里插入图片描述
点击确认后,在EA的右侧就可以看到对应的视图:
在这里插入图片描述
可以看到,用例图、类图、组件图和部署图都已经有了,序列图还没有,我们待会儿手动添加一下就行了。这样,我们就可以开始通过EA画我们想要的这些图了,为了大家好理解,Relax会举一个简单的网站系统架构设计的例子,当然不一定恰当,大家能理解其中的意思就行了。

选中上图中的User Case View,然后选择Toolbox(EA中画图都是选中视图,然后去对应的Toolbox选相应的控件),如下图所示:
在这里插入图片描述

用例试图概括的是角色和系统之间的关系,描述了系统的功能需求,角色和系统的交互以及系统的反应。任何一个网站最少有两种角色,用户和管理员,拖动ToolBox中的Actor到页面上,按提示输入用户,表示新建用户角色,那么用户这个角色最少包含注册、登录和发表评论功能,拖动ToolBox中的Use Case到页面上,按提示属于注册、登录和发表评论,如下所示(管理员的用例图操作也是一样):
在这里插入图片描述
这样基本的用例图就画好了,上面说过创建工程时没有序列图,现在我们就可以接着画序列图了,这里我们以用户注册为例,选中注册,然后右键选中Add,选中Interaction,选中with Sequence Diagram,见下图:
在这里插入图片描述

右键选择Interaction,选择属性,修改序列表的名称为注册:
在这里插入图片描述

到此,序列图就建好了,序列图描述的对于一个功能,系统内部各个相关模块之间的流程关系,下面画一下用户注册这个过程中,网站相关模块的流程:
在这里插入图片描述

好了,到此,用户注册的序列图就画完了。

下面再看看构件图(组件图),构件图描述的是系统的逻辑层次结构和划分的模块,选中Component View,然后选择Toolbox:
在这里插入图片描述

下面再看看部署图,部署图描述的是系统硬件部署时上下游设备的一个位置连接关系,对于小型个人站点来说,大家可能觉得我直接租一台云主机一配置就完事儿了,根本就不需要关心这些,但是对于大型网站来说,网站服务器部署时的DNS配置、负载均衡、防火墙、CDN,数据存储等等,都是不得不考虑的,所以部署图也是架构设计中需要重点考虑的,通过看系统的部署图,我们可以知道系统在整个环境中的位置,在EA中,选中Deployment就可以画部署图:
在这里插入图片描述

最后讲一下类图,类图就涉及到具体的编码了,在架构设计前期可能还用不到,到概要设计阶段就要考虑了。

类图其实就相当于写代码之前把模块的文件划分、函数API以及参数,变量定义和外部接口都提前想好了,在具体编码中就只用关心实现了,这样做的好处就是,在编码之前就可以定义出外部接口,方便多模块多人的协同开发,同时编码之前大家就可以对类图进行评审,避免等完成代码开发之后由于考虑不周导致的返工。

这里还要说一下,其实EA中还可以将画好的类图直接生成代码,这样在画图的过程中,其实就把部分代码都写好了,简直就是程序员的福音啊。在EA中,选中Logical View,从Toolbox选中控件就可以开始画类图了:

添加函数和结构体都是右键选中Attributes添加变量,选择Operations添加函数方法:
在这里插入图片描述

下面是登录模块画的一个类图:
在这里插入图片描述
要想自动生成代码,选择类图右键选择Generate Code就行了。

好了,Relax要讲的五种图就讲完了,大家有想了解更多详细内容的,可以评论给我留言。

想要Relax写出更精彩的文章?那么希望老铁别吝啬你的三连击哦
1、点赞,可以让更多的人看到这篇文章
2、关注我的原创微信公众号『Relax聊技术』,第一时间阅读我的文章。
3、也欢迎关注我的博客哦。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/RelaxTech/article/details/103584456

智能推荐

SpringBoot项目实践过程中遇到过哪些问题?_springboot实际工作中遇到的问题-程序员宅基地

SpringBoot 常见问题分析HikariCP 常见问题分析MyBatis常见问题分析Spring 常见问题分析thymeleaf 常见问题分析Ajax 常见问题分析_springboot实际工作中遇到的问题

封神总结!蚂蚁金服+滴滴+美团+拼多多+腾讯15万字Java面试题_拼多多 elasticsearch 面试题_普通网友的博客-程序员宅基地

项目经历怎么写的?简历上有一两个项目经历很正常,但是真正能把项目经历很好地展示给面试官的非常少。对于项目经历大家可以考虑从如下几点来写:1. 对项目整体设计的一个感受2. 在这个项目中你负责了什么、做了什么,担任了什么角色?3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用4. 另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能,比如:用redi_拼多多 elasticsearch 面试题

mysql 系统表空间损坏_解决MySQL数据库意外崩溃导致表数据文件损坏无法启动的问题...-程序员宅基地

问题故障:MySQL数据库意外崩溃,一直无法启动数据库。报错日志:启动报错:service mysqld restartERROR! MySQL server PID file could not be found!Starting MySQL. ERROR! The server quit without updating PID file (/www/wdlinux/mysql/var/iZ2..._mysql表空间损坏

Linux系统的头文件和库文件搜索路径-程序员宅基地

转载自:http://my.oschina.net/alphajay/blog/4953?from=rssInclude的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()写在specs内的后来用-D -I -L指定的gcc环境变量设定(编译的时候)ld.so的环...

【Steam VR 2.0】4.UIElement+Collider碰触交互UGUI Button_steam vr button事件能用onpoint-程序员宅基地

目前没有一个比简洁的,可以和UGUI交互的方式因此,先写一个应急用的,可以使用手柄点击到UGUI按钮的功能之后再继续完善(或者等VRTK更新4.0)本篇的功能是,在按钮上放collider并且,手柄碰触到按钮,可以触发按钮事件(仅应急用,为后续更新射线版做准备)操作按钮首先搭建场景创建一个可传送的场景,然后创建一个UGUI的Button,Canvas设置成word,reset一下,然后宽高设置为1按钮的Recttransform,拉小,这里尽量不要缩..._steam vr button事件能用onpoint

php如何加载ffmpeg库,安装php扩展 ffmpeg-php_Jiangzhoujiao的博客-程序员宅基地

1、添加仓库 导入秘钥 环境:centos6.5 php5.4.29vi /etc/yum.repos.d/dag.repo[dag]name=Dag RPM Repository for Red Hat Enterprise Linuxbaseurl=http://www.mirrorservice.org/sites/apt.sw.be/redhat/el$releasever/en/$bas..._php73安装ffmpeg-php

随便推点

git修改远程源_Git如何修改远程仓库地址-程序员宅基地

公司搬移, 作为git仓库的服务器IP地址变了。 本地代码挺多,重新检出太占时间,可以修改一个什么配置让我本地仓库和新的远程仓库建立关联吗, 答案是肯定的!方法有很多,这里简单介绍几种:以下均以项目git_test为例:老地址:http://192.168.1.12:9797/john/git_test.git新地址:http://192.168.100.235:9797/john/git_tes..._git怎么修改仓库源地址

宝塔apache配置阿里云SSL免费证书流程_阿里云安装apache证书_孙行者来也的博客-程序员宅基地

用文本打开_public.crt文件 复制里面的内容到右侧 证书(pem)格式【放右边证书pem格式上方】用文本打开_chain.crt文件 复制里面的内容到右侧 证书(pem)格式【放右边证书pem格式下方】用文本打开.key文件 复制里面的内容到左侧 秘钥(key)【放左边秘钥key】_阿里云安装apache证书

创建网络ACL_创建基本acl-程序员宅基地

操作场景您可以创建自定义网络ACL。默认情况下,创建的网络ACL没有关联子网和出入规则且处于停用状态。每个用户默认可以创建200个网络ACL。操作步骤登录管理控制台。 在管理控制台左上角单击,选择区域和项目。 在系统首页,选择“网络 > 虚拟私有云”。 在左侧导航栏选择“访问控制 > 网络ACL”。 在页面右侧区域,单击“创建网络ACL”。 在“创建网络ACL”对..._创建基本acl

IO流-程序员宅基地

IO流IO流概述IO(Input/Output)流,即输入输出流1.字节流和字符流根据流的传输数据单位的不同,可以分为字节流和字符流2.输入流和输出流输入流只能从流中读取数据,输出流只能向流中输出数据3.节点流和处理流节点流被称为低级流,是指可以从一个特定的IO设备(如磁盘)读写数据的流,它只能直接连接数据源,进行数据的读写操作;处理流也被称为高级流,它是对一个已存在的节点流进行连接和封装,通过封装后的流实现流的读写能力。...

element-ui更改图标icon大小_element icon大小_Frilled Lizard的博客-程序员宅基地

element-ui更改图标icon大小<div class="size-icon"> <i class="el-icon-dish" ></i></div>.size-icon{ font-size: 25px;}_element icon大小

java反射机制示例(短信接收转发实现)_java 将手机收到的短信转发-程序员宅基地

一.数据库设计设计统一的短信接收,发送的数据存储表:短信接收表T_Sms_Incept,短信发送表T_Sms_Send /*==============================================================*//* Table: t_sms_incept *//*_java 将手机收到的短信转发