赞
踩
目录
不知道作为研发的小伙伴们,在平时的工作中是否也会遇到这样的需求。由于一些客观因素的原因,我们的项目已经到了开发尾期,需要进行项目验收,但是项目最开始的一些设计工作还没有进行开展,比如再详细设计阶段需要的时序图、类图、数据库模型对应的ER图等等。此时,我们当然可以选择从头开始,毕竟只是UML图,对吧。只需要加上一些工作量而已,只要给时间,一定可以实现的,于是研发的同学就开始了一些巴拉巴拉的工作,没什么技术含量,但占据了不少时间。还有一种就是基于已有的成果,比如代码,有没有一些工具或者方法可以根据代码反向生成时序图、类图等UML图呢?
本文就带你解决这个痛点,推荐一款在平时工作中可以用到的UML快捷生成软件。助力您文档快速生成,博客将以Java语言为例,重点讲解如何基于Visual_paradigm进行反想时序图、类图以及基于SQL脚本进行ER模型快速构建的介绍。不仅为项目后期提供初期项目设计文档提供一种解决思路,也可以帮助初级程序员从UML的角度深度了解代码的执行逻辑,调用顺序,不失为阅读和理解源码的优良方式。如果对您有帮助,欢迎在评论区留言交流,行文仓促,同时受本人的经验所限,部分观点有不当之处,恳请批评指正。
Visual_Paradigm(简称VP)是一款包含系统建模、图表绘制、团队协作,等等诸多功能的企业级设计工具。基于Java
开发,开源,跨平台,提供了有Windows
、Linux
、Mac
等平台客户端。VP
底蕴很深,第一个发布版本在2002年,属于老牌建模牌子,前期仅仅只有UML
建模功能,但是近几年一直在不停的升级更新,定位已经不仅仅是这么局限了。而且还大力发展在线绘图,Online
绘图目前需要翻墙才能访问。
这款软件是一款商业软件,个人使用可以直接试用,基本的功能都是有的,只是高级功能有一定影响,这里采用Visual_Paradigm_CE_17_0_20230201_Win64.exe版本。
如果在程序启动的过程中发现,您的软件已经过期,不要紧的,点击下图中红框中的按钮继续使用,口有余量的小伙伴也可以进行付费申请。
这里其实不准备对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这里不再详细叙述,开源网站上有更详细的介绍。
为了集中管理生成的图件信息,我们在VP软件中新建一个项目。在VP的主界面中,点击项目tab页,点击新增按钮,出现新增页面,填写相关信息后,完成项目的新建。
信息输入完毕后,点击建立空白项目,完成。在左边的目录树中可以看到这个vp工程目录。
使用工具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不仅可以实现序列图的生成,也支持类图的生成。同样是以Ruoyi的代码为例。
在VP工程的左侧菜单中,选择需要生成的目录。这里已Menu包为例生成。
鼠标右键点击反向工程“menu”to 新增类图,进入生成界面。
在程序设计过程中,关系型数据库的ER模型也是非常重要的模型,也需要进行ER模型建模表达。如何基于已有的SQL语句进行模型生成呢?VP同样是提供了这样的快速生成的能力。
这里的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 = '用户信息表';
在Tab页中,选择DB,DDL反向工程下拉菜单。
选择好需要生成的sql后,需要注意的是要设置好数据库版本和编码信息,尤其是编码信息,编码设置不对可能导致模型无法生成或者有乱码的情况出现。
点击确定按钮后,就会在主页面中生成整个数据库的ER模型,是不是非常方便。
以上就是本文的主要内容,本文主要详细讲解一款UML快捷生成软件工具,助力文档快速生成,以Java语言为例,重点讲解如何基于Visual_paradigm进行反想时序图、类图以及基于SQL脚本进行ER模型快速构建的介绍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。