【企业架构工具】Excel、Python和Graphviz的企业架构

视频号

微信公众号

知识星球

Chinese, Simplified

企业体系结构是信息技术中的一个重要主题,因为它提供了当前企业体系结构的愿景,并简化了对满足企业战略所需的技术变化的分析。

Excel、Python和Graphviz提供了一个全面的架构愿景,帮助企业架构师进行企业开发的设计和规划。维基百科提供了企业架构的定

义,强调了企业架构在架构变更管理中的重要性,以确保战略的执行:

企业体系结构(EA)“一种定义明确的实践,用于进行企业分析、设计、规划和实施,始终使用全面的方法,以成功地制定和执行战略。企业体系结构应用体系结构原则和实践,指导组织完成执行战略所需的业务、信息、流程和技术变革特吉。这些实践利用企业的各个方面来识别、激励和实现这些变化。”

TOGAF®是IT服务管理中的一个标准,专注于企业体系结构。TOGAF®允许设计一个结构良好的体系结构,以保证企业的高效和有效运营。

TOGAF®定义了四个用于表示和管理企业体系结构的域:

The Domains of Enterprise Architecture
  • 业务体系结构:它描述了业务流程及其交互,以便使业务流程与业务目标保持一致
  • 数据体系结构:它定义了应用程序体系结构域中包含的应用程序之间的数据清单和数据流。它允许验证应用程序是否具有以正确方式执行业务流程所需的数据信息
  • 应用程序体系结构:它包含与企业相关的应用程序库,并显示应用程序和由这些应用程序执行的流程之间的链接
  • 技术体系结构:它包含企业体系结构中可用的技术服务和组件及其与应用程序的关联。它有助于为企业定义技术路线图和战略选择

企业体系结构实践包括三项主要活动,在前面提到的四个领域中执行:体系结构资产的维护(体系结构资产管理)、新体系结构变更的设计(体系结构开发)以及战略和企业路线图的定义(体系结构战略)。

在体系结构开发活动中,新体系结构的设计需要对业务需求有全面的理解,通常从定义业务和应用程序领域的体系结构更改开始。识别哪些流程和应用程序受到体系结构更改的影响是上述领域中体系结构开发活动的输出,也是数据和技术领域开发的输入。

在此阶段,建议企业架构师最好地了解参考数据体系结构(也称为基线数据体系结构)以及业务和应用程序体系结构中的体系结构更改,以便定义连贯的数据体系结构更改。有可能绘制数据体系结构和数据流可以提高对参考体系结构的理解,并简化数据体系结构中进化的设计。因此,在技术会议期间,绘制运行时数据体系结构的一部分是非常有用的:它允许分析体系结构数据方面,为思考提供额外的食物。

市场为企业架构师提供了很多工具,比如Gartner建议的(企业架构(EA)软件评论),但正如首席数据官告诉我的那样,一个结构良好的Excel可能会满足我们的需求。

Excel与Python和Graphviz的结合可以满足我们绘制数据体系结构和数据流的需求,从而提高对数据体系结构的理解。

Excel

为了方便起见,我们创建了一个Excel,它只包含以下列的表:

  • ID数据流:数据流的唯一标识符
  • 数据实体:源和目标应用程序之间交换的实体的名称
  • Source:发送信息的源应用程序
  • 目的地:接收信息的目的地应用程序
  • 集成样式:数据流中使用的集成样式。可用的样式有消息、远程过程调用、文件传输和共享数据库。有关集成样式的更多详细信息,您可以在此处找到信息。

文件名为Enterprise_Architecture.xlsx,图纸名为Data Architecture。

在这里,您可以找到本文中使用的示例文件。

Example of Enterprise Architecture Excel file

Graphviz

Graphviz是一款开源的图形可视化软件。图形可视化是将结构信息表示为抽象图形和网络的图形的一种方式。

Graphviz是一款开源的图形可视化软件。它有几个主要的图形布局程序。它还具有web和交互式图形界面,以及辅助工具、库和语言绑定。

Graphviz布局程序以简单的文本语言对图形进行描述,并以有用的格式制作图形,如网页的图像和SVG;用于包含在其他文档中的PDF或Postscript;或者在交互式图形浏览器中显示。Graphviz为具体的图表提供了许多有用的功能,例如颜色、字体、表格节点布局、线条样式、超链接和自定义形状的选项。

我们将在Windows上安装2.38版本,从这里下载软件包。对于安装步骤,您将执行安装包。

我们将使用点语言来创建有向图的“层次”或分层图形。如果边具有方向性,则这是要使用的默认工具。

Python

我们将在Windows环境中使用Python v2.7和各种库。您在这里找到了我们需要的清单:

  • xrld:读取和写入Excel文件
  • numpy:使用数组简化数据操作
  • pandas:利用xrld库,允许在数据帧中导入xlsx,并简化数据帧的数据操作
  • graphviz:为graphviz绘图软件提供一个简单的纯Python接口

您可以使用Anaconda安装所有东西,Anaconda是一种针对开源和私人项目的强大协作和包管理功能,您还可以使用Jupyter Notebooks运行Python代码,Jupyter记事本是一种开源网络应用程序,允许您创建和共享包含实时代码、公式、可视化和叙述文本的文档。

对于安装步骤,您可以使用该段落中提供的链接。

Put It All Together

Python脚本在Colab Notebook Code中提供。Python脚本包括三个特定步骤,不包括工具和库安装:

  • 借助xlrd库导入数据架构Excel
  • 使用panda和numpy为Graphviz解释器操作和准备数据
  • 使用graphviz库绘制带有图例的数据架构图

在下面的代码中,数据架构Excel是由pandas库导入的。指定Excel文件的文件系统路径、工作表名称(sheet_name)以及数据帧标题(header)(如果需要)(选择所需的行号)和数据帧索引(index_col)(选择行列)是至关重要的。

import pandas
dfin = pd.read_excel('Enterprise_Architecture.xlsx',sheet_name='Data Architecture', header=0,index_col=0)

在Colab笔记本代码中,该文件先前已上载。

在数据操作阶段,首先使用以下颜色表的数据映射来处理数据帧dfin

Dataframe colormap

此操作的结果是一个新的numpy数组np_tmp,如下图所示(出于可视化需要,np_tmparray在数据帧中转换)

Dataframe generated from np_tmp array

The color mapping is performed by the following statement:

colormap_i = colormap.loc[colormap['Integration Style'] == dfin.iloc[i]['Integration Style']].values[0][1]

Thecolormap_iis obtained with following logical steps: for each row in the dfin dataframe, the Integration Style is mapped and replaced with Integration Style Color in thecolormap dataframe, using Integration Style as key.

Then, the np_tmparray is processed in order to merge all rows that have the same source and destination. The result is a new numpy array np_pro , which is converted in thedf_graph dataframe in order to simplify the graph plotting.

Dataframe generated from np_pro array

在行合并期间,集成样式颜色与:连接,而数据实体与连接。Graphviz语法需要这两个字符:在Integration Style Color中,:character允许用两种或多种颜色为链接着色;\n允许创建一个实体列表,其中每个项目都包装在下一行,并且可以正确地绘制在应用程序链接的顶部。

现在,为了方便起见,定义了一个名为dmakegraph的函数,用于从以前的数据帧(df_graph,df_grap)开始绘制图形。该函数的输出是一个图形的绘图,其中对于每个耦合源目的地,它绘制了一个唯一的链接(Graphviz语言中的边),该链接由集成样式颜色着色,并伴有数据实体。因此,包含Integration Style颜色的子图被插入到图中。

在该函数中,相关语句如下。有关graphviz-python库和语句的更多详细信息,您可以在这里看到;相反,graphviz节点、图和边属性的sintax在这里可用。

名为“企业体系结构”的图由图属性定义,如标题“企业体系架构”('label':'Enterprise Architecture')、标题在顶部的位置('labelloc':'t' , top)、默认字体大小('fontsize':'24.0')和图布局的方向('rankdir':'TB' , Top Bottom)),以及节点属性,如节点形状('shape':'box')。

graph = graphviz.Digraph(name='Enterprise Architecture',graph_attr={'labelloc':'t','label':'Enterprise Architecture','fontsize':'24.0','rankdir':'TB'},node_attr={'shape': 'box'})

对于f_graph数据帧中的每一行,都会创建两个具有固定大小(fixedsize='true')和特定宽度(width='2.5')的节点。如果刚刚创建了一个节点,Graphviz解释器不会在图中添加新节点。然后,两个节点之间的链接使用特定颜色(颜色=颜色样式,潜在颜色样式值可以是蓝色:红色)和从df_graph数据帧中收集的标签(标签=实体,潜在实体值可以是实体1\n实体2)绘制。

graph.node(appsource,fixedsize='true',width='2.5')
graph.node(appdest,fixedsize='true',width='2.5')
graph.edge(appsource,appdest,color=colorstyle,label=entities)

图例定义为子图。在这种情况下,将名称定义为cluster_0(具有前缀:cluster的特定值)以将子图放在图中的框中是至关重要的。因此,我们必须用语句图来解释子图的定义。子图(图例)。

legend = graphviz.Digraph(name='cluster_0',node_attr={'shape': 'box'},graph_attr={'label':'Legend','fontsize':'12.0'})
graph.subgraph(legend)

使用df_graph和colormap数据帧启动函数makegraph,输出图与此类似。

The graph generated starting from Enterprise_Architecture.xlsx

结论

Excel、Graphviz和Python(与Jupyter)的结合有助于Enterprise Architect的工作获得良好的体系结构和运行时图形,并简化EA分析以定义新的更改。

特别是,Python Numpy和Pandas库的潜力允许操作和过滤数据,以便根据EA需求生成图:数据架构中特定实体的路径(数据流)知识,或应用程序输入或输出中所有连接的可视化,等等。

Graphviz语法允许定义图形的不同版本,以丰富图形(例如使用图例或不同风格的边)或优化图形,从而提供最佳可视化效果。

如果您需要快速设置和管理企业体系结构工作,Excel、Graphviz和Python的组合可能适合您。

本文地址
https://architect.pub/enterprise-architecture-excel-python-and-graphviz
SEO Title
Enterprise Architecture with Excel, Python and Graphviz