在做很多项目的时候,都需要分析应用系统之间或者服务器之间的访问、关联关系,但关系的展示和分析,一直是个比较麻烦的事情。收集回来的数据,一般都是表格形式的,不太方便展示和分析。
然而根据表格,手工画图的话,一方面是比较繁琐,也很难画的美观,更重要的是,对于关联关系复杂的环境,画出来的图根本没法看,也没法分析和使用,往往就成了个装饰,除了表现出关系错综复杂,就没有别的用处了。
可能经常最后得出的是一幅类似上面这样的图。
在网上找到一款软件,yEd 可以比较方便的完成这个工作,不但可以根据表格的数据自动化的绘图,也能进行一定的分析。
这个软件有多种版本,包括开发用的 SDK,离线编辑版和在线版本等。 具体可以看 yWorks – Downloads
我们主要用到的是其中的 yEd Graph Editor ,Windows、MACOS、Linux 都支持,可以导入 Excel 文件生成图形并分析。
1. 数据导入
安装后可以选择打开 Excel 文件,导入数据分为两种类型,一种是邻接矩阵(Adjacency Matrix),一种是连接列表( Edge List)。实际上这是两种不同的方式描述连接关系。
我们假设有这样一个银行环境,有如下这些系统:
系统名称 | 分类 |
---|---|
核心银行 | 行内系统 |
网银 | 行内系统 |
手机银行 | 行内系统 |
门户网站 | 行内系统 |
银联 | 行外系统 |
柜面系统 | 行内系统 |
ATMP | 行内系统 |
OA 系统 | 行内系统 |
邮箱系统 | 行内系统 |
系统间的连接关系,如下表(纯举例,无实际意义):
源节点 | 目标节点 | 连接类型 |
---|---|---|
核心银行 | ATMP | 双向连接 |
核心银行 | 柜面系统 | 双向连接 |
门户网站 | 核心银行 | 单向连接 |
核心银行 | 手机银行 | 双向连接 |
核心银行 | 网银 | 双向连接 |
网银 | 银联 | 双向连接 |
OA 系统 | 邮箱系统 | 双向连接 |
1.1 邻接矩阵(Adjacency Matrix)
如果是邻接矩阵表示上面的关系,可以是如下的表格:
核心银行 | 网银 | 手机银行 | 门户网站 | 银联 | 柜面系统 | ATMP | OA 系统 | 邮箱系统 | |
---|---|---|---|---|---|---|---|---|---|
核心银行 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
网银 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
手机银行 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
门户网站 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
银联 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
柜面系统 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ATMP | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
OA 系统 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
邮箱系统 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 表示无关系,1 表示有关系。
然后在 yEd 中,打开这个 Excel 表格文件,在“Data”页选择对应的内容
然后在“Presentation”页的“Label Text”选择 “Node Label”,并勾选“Fit Size to Label”,用于生成的图上标记节点名称。
其他的可以先不用设置,确定后就可以得到一幅关联关系图了。
1.2 连接列表(Edge List)
如果同样的关系,还可以用连接列表的方式表示,可以直接使用下面的表格,一行是一条连接关系。
源节点 | 目标节点 | 连接类型 |
---|---|---|
核心银行 | ATMP | 双向连接 |
核心银行 | 柜面系统 | 双向连接 |
门户网站 | 核心银行 | 单向连接 |
核心银行 | 手机银行 | 双向连接 |
核心银行 | 网银 | 双向连接 |
网银 | 银联 | 双向连接 |
OA 系统 | 邮箱系统 | 双向连接 |
然后打开该 Excel 表格,选择相应的数据区域。
即可生成关系图。
生成后你会发现,默认的箭头是单向的,体现不出双向连接的关系。当然,你可以把表格补充完整,增加比如源为“ATMP”,目标为 ” 核心银行 ” 的行,但其实可以不用这么麻烦,我们可以直接编辑属性的映射。
选择菜单 Edit 下的 Properties Mapper…,新增一个 Edge Configuration。增加一个 Data Source,内容为“连接类型”(即上面表格 C 列的表头),映射选”Source Arrow”,然后在下方,增加 Mapping,内容为 ” 双向连接 “,然后选一个箭头类型。
意思是,凡是该行“连接类型”一列内容为 ” 双向连接 ” 的。则它的源也有一个箭头。
应用以后,就有了双向箭头的图了。可以看到,门户网站到核心银行因为是单向连接,所以是单向箭头,其他的都已变为双向箭头了。
利用这个功能,还可以有很多别的效果,比如再加一列,区分行内和行外系统,让导入的时候,行内系统的节点一种颜色,行外系统的节点用另一种颜色,甚至换用不同的形状图标等等都可以,大家有兴趣可以自己去试试。
2. 分析数据
2.1 图形样式
可以通过菜单上的“Layout”一键更换各种样式,软件内置了非常多的图形样式,可以自定义自己想生成的关系图样式。
当然你也可以直接编辑某个节点或者关系线的样式,也可以随意拖拽节点或者关系线。
2.2 节点关系
点击某个节点,左侧的“Neighborhood”可以直接显示出该节点的关系,有助于分析。比如点击 ” 核心银行 “,则显示:
在“Tools”菜单中,还有不少分析工具,比如 “Centrality Measures” 可以识别重要节点,比如根据节点连接关系的多少,显示不同的颜色或大小。颜色越深、形状越大的节点表示连接关系越多。
可以结合“Tools”中的”Auto Alignment”对图形做一些自动化的规整,大家自己试一下就知道了。
2.3 节点分组
另一个很有用的功能是分组,在菜单“Group”,中选择 “Auto Grouping”,就可以根据连接关系一键对节点进行分组。也就是我们可以比较容易的进行应用系统的分类。在划分系统群和设计比如系统迁移批次时很有用。比如上面的图,使用自动分组功能,效果如下(根据连接关系自动分为了两组,一组 7 个应用系统,一组 2 个应用系统):
2.4 内容分享
最后完成的图,如果需要分享,可以通过 yEd 的在线版进行分享(需要 github 账户) yEd Live
3. 其他样例
前面分享的是应用系统关系图,实际上比如网络访问关系图也可以用类似的方式自动生成。
源节点 | 源端口 | 目标节点 | 目标端口 |
---|---|---|---|
192.168.1.1 | 1234 | 192.168.1.2 | 5678 |
192.168.1.2 | 8000 | 192.168.1.1 | 8080 |
192.168.1.3 | 8000 | 192.168.1.1 | 8080 |
可以生成类似下图的效果:
当然,具体样式都可以自己去编辑。
其他更多使用说明,可以参考 yEd的说明文档
© 2024, QP. 版权所有.