目录
前言
一、Visual_Paradigm介绍
1、主界面介绍
2、功能简介
二、基于代码的序列图生成
1、新建VP项目工程
2、序列图反向生成
三、VP类图生成
1、生成主入口
四、数据ER模型生成
1、SQL脚本
2、ER反向生成
总结
前言
不知道作为研发的小伙伴们,在平时的工作中是否也会遇到这样的需求。由于一些客观因素的原因,我们的项目已经到了开发尾期,需要进行项目验收,但是项目最开始的一些设计工作还没有进行开展,比如再详细设计阶段需要的时序图、类图、数据库模型对应的ER图等等。此时,我们当然可以选择从头开始,毕竟只是UML图,对吧。只需要加上一些工作量而已,只要给时间,一定可以实现的,于是研发的同学就开始了一些巴拉巴拉的工作,没什么技术含量,但占据了不少时间。还有一种就是基于已有的成果,比如代码,有没有一些工具或者方法可以根据代码反向生成时序图、类图等UML图呢?
本文就带你解决这个痛点,推荐一款在平时工作中可以用到的UML快捷生成软件。助力您文档快速生成,博客将以Java语言为例,重点讲解如何基于Visual_paradigm进行反想时序图、类图以及基于SQL脚本进行ER模型快速构建的介绍。不仅为项目后期提供初期项目设计文档提供一种解决思路,也可以帮助初级程序员从UML的角度深度了解代码的执行逻辑,调用顺序,不失为阅读和理解源码的优良方式。如果对您有帮助,欢迎在评论区留言交流,行文仓促,同时受本人的经验所限,部分观点有不当之处,恳请批评指正。
一、Visual_Paradigm介绍
Visual_Paradigm(简称VP)是一款包含系统建模、图表绘制、团队协作,等等诸多功能的企业级设计工具。基于Java
开发,开源,跨平台,提供了有Windows
、Linux
、Mac
等平台客户端。VP
底蕴很深,第一个发布版本在2002年,属于老牌建模牌子,前期仅仅只有UML
建模功能,但是近几年一直在不停的升级更新,定位已经不仅仅是这么局限了。而且还大力发展在线绘图,Online
绘图目前需要翻墙才能访问。
这款软件是一款商业软件,个人使用可以直接试用,基本的功能都是有的,只是高级功能有一定影响,这里采用Visual_Paradigm_CE_17_0_20230201_Win64.exe版本。
1、主界面介绍
如果在程序启动的过程中发现,您的软件已经过期,不要紧的,点击下图中红框中的按钮继续使用,口有余量的小伙伴也可以进行付费申请。
2、功能简介
这里其实不准备对VP的功能进行完整的介绍,大家安装好软件后可以通过试用的方式进行熟悉和了解。这里仅简单的进行介绍,好让读者有一个简单的了解。
UX:主要用于用户使用设计,比如移动端或者PC的页面设计,帮助用户更好的说明系统如何使用,可以对标Axure。(关于UX和CX的区别欢迎各位去查询相关知识)
CX:客户体验或CX覆盖了更广阔的网络,涵盖了客户与企业各个方面的所有互动-包括品牌中的特定产品或他们带来的特定服务。根据这种方式,CX可以信封用户体验。多家企业聘请CX设计师来分析和评估客户对品牌整体的感觉,并改善客户与他们的互动方式。CX考虑了客户对组织的广告策略,品牌信誉,客户服务,价格,交付方式,产品可用性和一般销售过程的看法。您可以在此客户体验入门指南(CX)中找到更多信息。
System Design:主要覆盖了UML的全方面的知识,所有图形。比如用例图、类图、时序图、状态图、活动图、组件图等等,基本常用的UML设计图都在这里完成。
Business Design:主要提供主要业务流程图的设计和实现。
Data Visualization:数据可视化,这里同样提供多种类型的图表实现对数据的可视化分析。可以对标Echarts,DataV的数据可视化产品。
二、基于代码的序列图生成
这里采用的示例代码以Ruoyi为例,开发语言以JAVA为主,其它的编程语言暂未涉及,但应该是支持的。关于Ruoyi这里不再详细叙述,开源网站上有更详细的介绍。
1、新建VP项目工程
为了集中管理生成的图件信息,我们在VP软件中新建一个项目。在VP的主界面中,点击项目tab页,点击新增按钮,出现新增页面,填写相关信息后,完成项目的新建。
信息输入完毕后,点击建立空白项目,完成。在左边的目录树中可以看到这个vp工程目录。
2、序列图反向生成
使用工具Tab页中的程序代码功能,选择最后一个下拉菜单,Instant Reverse Java to Sequence Diagram。
在以下的界面中,选择需要生成序列图的代码目录,以Ruoyi为例,这里选用到src.java目录
确定后,点击下一步,进入方法选择的界面,选中需要生成的方法后,点击完成。
点击完成后即可看到如下的时序图,是不是很方便。
下面是edit的源代码,方便大家对比,Controller的代码还是简单了,下面可以看看Servcie的业务逻辑代码。
/**
* 修改菜单
*/
@RequiresPermissions("system:menu:edit")
@GetMapping("/edit/{menuId}")
public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap)
{mmap.put("menu", menuService.selectMenuById(menuId));return prefix + "/edit";
}
/**
* 修改保存菜单信息
*
* @param menu 菜单信息
* @return 结果
*/
@Override
public int updateMenu(Menu menu)
{menu.setUpdateBy(ShiroUtils.getLoginName());return menuMapper.updateMenu(menu);
}
三、VP类图生成
其实VP不仅可以实现序列图的生成,也支持类图的生成。同样是以Ruoyi的代码为例。
1、生成主入口
在VP工程的左侧菜单中,选择需要生成的目录。这里已Menu包为例生成。
鼠标右键点击反向工程“menu”to 新增类图,进入生成界面。
四、数据ER模型生成
在程序设计过程中,关系型数据库的ER模型也是非常重要的模型,也需要进行ER模型建模表达。如何基于已有的SQL语句进行模型生成呢?VP同样是提供了这样的快速生成的能力。
1、SQL脚本
这里的SQL脚本采用Ruoyi自带的演示SQL。主要脚本(部分)如下所示:
- ----------------------------
-- 1、部门表
-- ----------------------------
drop table if exists sys_dept;
create table sys_dept (dept_id bigint(20) not null auto_increment comment '部门id',parent_id bigint(20) default 0 comment '父部门id',ancestors varchar(50) default '' comment '祖级列表',dept_name varchar(30) default '' comment '部门名称',order_num int(4) default 0 comment '显示顺序',leader varchar(20) default null comment '负责人',phone varchar(11) default null comment '联系电话',email varchar(50) default null comment '邮箱',status char(1) default '0' comment '部门状态(0正常 1停用)',del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',create_by varchar(64) default '' comment '创建者',create_time datetime comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新时间',primary key (dept_id)
) engine=innodb auto_increment=200 comment = '部门表';-- ----------------------------
-- 初始化-部门表数据
-- ----------------------------
insert into sys_dept values(100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);-- ----------------------------
-- 2、用户信息表
-- ----------------------------
drop table if exists sys_user;
create table sys_user (user_id bigint(20) not null auto_increment comment '用户ID',dept_id bigint(20) default null comment '部门ID',login_name varchar(30) not null comment '登录账号',user_name varchar(30) default '' comment '用户昵称',user_type varchar(2) default '00' comment '用户类型(00系统用户 01注册用户)',email varchar(50) default '' comment '用户邮箱',phonenumber varchar(11) default '' comment '手机号码',sex char(1) default '0' comment '用户性别(0男 1女 2未知)',avatar varchar(100) default '' comment '头像路径',password varchar(50) default '' comment '密码',salt varchar(20) default '' comment '盐加密',status char(1) default '0' comment '帐号状态(0正常 1停用)',del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',login_ip varchar(128) default '' comment '最后登录IP',login_date datetime comment '最后登录时间',pwd_update_date datetime comment '密码最后更新时间',create_by varchar(64) default '' comment '创建者',create_time datetime comment '创建时间',update_by varchar(64) default '' comment '更新者',update_time datetime comment '更新时间',remark varchar(500) default null comment '备注',primary key (user_id)
) engine=innodb auto_increment=100 comment = '用户信息表';
2、ER反向生成
在Tab页中,选择DB,DDL反向工程下拉菜单。
选择好需要生成的sql后,需要注意的是要设置好数据库版本和编码信息,尤其是编码信息,编码设置不对可能导致模型无法生成或者有乱码的情况出现。
点击确定按钮后,就会在主页面中生成整个数据库的ER模型,是不是非常方便。
总结
以上就是本文的主要内容,本文主要详细讲解一款UML快捷生成软件工具,助力文档快速生成,以Java语言为例,重点讲解如何基于Visual_paradigm进行反想时序图、类图以及基于SQL脚本进行ER模型快速构建的介绍。