20

我的一个客户正在尝试为他们公司中使用的各种应用程序创建一个相互依赖的交互式“矩阵”(这是一家拥有大约 2500 名员工的旅游和休闲公司)。

这个想法(仍处于原型阶段)是创建一种基于 Visio 或类似工具的 Map,它跟踪公司中所有 IT 资产之间的通信和相互依赖关系,以便当有人要求更改时,他们可以得到影响的概述。

这是在一个随意的环境中提到的,我不负责直接处理这个问题,但我确实贡献了我已经知道的一些模糊相关的方法(Zachman 框架)。

我想听听这里的人是否知道可能有助于这种努力的方法或工具,以及他们是否有任何具体的经验可以贡献。我会消化答案并将结果发回给我的客户,希望这可能对他们的任务有所帮助(我认为这有点远见并且容易出现任何文档项目的所有陷阱,但仍然值得追求)。

注意:问题不是“我收集了关于 IT 资产的所有这些数据,我无法为 Graphviz 购买 Visio 或 Google,或将其转换为 MindMapping 工具或使用 Jgraph 等创建自定义导航器”。问题是“我如何收集相关/有用的信息,以及我应该如何组织这些信息,考虑到由于接口、版本和包的变化,我可能必须定期更新数据?”

这不是一个可视化问题,或者还不是。我们必须首先从数据收集和组织开始。如果要推荐一个工具,它还必须包括数据收集和管理部分(例如:Rational System Architect)。但在这种情况下,如果您有一些实际经验,或者如果您非常确定它非常小众并且不太了解,请提出建议(我可以谷歌,谢谢)。如果您想推荐一些书籍/方法,这也很有帮助(我只知道 Zachman 框架,不确定它是否真的很合适)。

“只需创建一个 Excel 文件”或“您可以使用 SmartDraw,伙计!!!” 恐怕帮不上什么忙。


发现Iteraplan看起来非常合身!

4

13 回答 13

7

如果我错了,请纠正我...您正在寻找使用图表作为工具来跟踪系统的依赖关系。

如果是这种情况,您用来以图形方式映射布局的可能是 UML 中的部署图

您将系统/服务器/物理资产映射为盒子对象,然后在这些对象内部映射出各种应用程序、数据库、组件以及它们之间的相互关系。

使用 UML 的问题在于,程序员主要关注类图(因为它们与软件中的数据建模有直接关系),因此很难在非类 UML 图上找到“好的”资源和示例。

过去我曾经使用它来映射一个相对复杂的跨系统跨应用程序实现,并以一种可以在设计系统时与其他开发人员共享的方式来表达我的想法。简而言之,它很简单,而且做得很好。

为了创建图表,我使用了dia。如果我必须重新做一遍,我肯定会使用 Visio,因为它更容易找到预制的模板/模板包以在线绘制图表,如果那些没有你需要的东西,很容易推出你自己的Visio 中的模具。

注意:我在 Visio 进行电气设计方面有很多(数百小时)经验,因此我认为自己对这些工具足够熟悉,可以进行客观比较。

采用明确指定的格式的缺点是:

  • 它们通常过于复杂
  • 他们通常有严格的格式或规则集
  • 很容易发现自己试图将系统塑造成图表,它应该是相反的
  • 图表很容易变得过于复杂而无法被创建者以外的任何人理解/理解

我的建议是:

  • 使图表尽可能简单
  • 不要害怕打破规则
  • 使图表尽可能简单
  • 尽你所能保持图表尽可能简单明了
  • ......你明白了。

如果一个从未看过图表的开发人员无法在看到图表的最初几分钟内开始解读布局和含义,那可能弊大于利。

我认为Zachman 框架是一个糟糕的选择,因为:

  • 很难理解图表试图传达的“点”
  • 图表格式太复杂
  • 规则采用不灵活的格式,限制而不是补充系统的设计

当你在研究选项时,问问自己这个。你明白图的重点了吗?

绘制设计图表的问题是,如果做错了,它造成比它的价值更多的麻烦,而且没有人会使用它。没有设计文档通常比糟糕的设计文档更好。

我希望这会有所帮助。

于 2010-06-15T02:03:04.903 回答
3

如果您的客户想要了解影响,您需要对工件是什么、它们之间的信息流以及公司各部分如何与工件交互进行建模。

您可能会考虑构建一个SADT模型。SADT 模型中的方框代表流程。带标签的数据输入弧显示了哪些[可能是复合的]信息/资源被输入到流程中;带标签的输出弧显示由它产生的数据/资源。控制弧表示控制处理的“大”信号。资源/机制弧显示了执行该过程所需的资源(例如,硬件系统、网络……)。

对于您的任务,您会将应用程序和公司活动视为 SADT 流程(方框)。数据输入/输出和控制弧将应用程序(SADT 盒)连接到其他 SADT 盒,或连接到外部数据源和接收器(内部部门、员工、销售、运输,例如公司利益相关者)。因此,您可以通过各种应用程序对通过公司的信息流进行建模,以及它们使用/处理/生产/使用哪些信息,以及哪些代理生产/使用数据。(做这一切被称为“结构化分析”)。

[对于复杂的 SADT 模型,每个过程框都可以有效地递归地分解为子 SADT 图。我认为您不需要它来仅对应用程序依赖项进行建模;你不需要知道应用程序在内部是如何工作的,除非它们真的很复杂并且分离数据流很重要。]

对信息输入/输出的任何更改、应用程序的删除都将在 SADT 图中具有明显的对应关系,从而可以更好地理解后果是什么。

这是一项艰巨的任务,您必须努力使其保持最新状态,除非每个人都长期签约,否则它很可能会失败。

对于那些没有尝试过使用 SADT 的人来说,它是一个非常容易掌握的系统(这与其他答案的格言保持简单),并且在将复杂的处理任务分解成你可以看到(并实际交流)的块方面非常有效基本上一切,甚至对经理!使 SADT 发挥作用的一个关键是避免马虎。仔细定义弧和节点,不要跳过信息源或汇。如果你这样做,SADT 将获得丰厚的回报。[大多数白板框和箭头图都很糟糕:您无法分辨什么是真正的动作,什么是真正的数据,或者是否所有信息都已实际显示以及谁在使用它]。

恕我直言,有趣的是,SADT 模型捕捉了彩色 Petri 网背后的直觉,它模拟了任意复杂的异步计算,Petri 网的泛化,是有限状态自动机的泛化。

于 2010-06-18T04:33:01.917 回答
2

你的第一个问题是如何建立一个概念框架来保存所有这些信息(注意:我不是在谈论数据的格式,而是你如何赋予它意义)。这比看起来要难,但幸运的是,已经在这方面做了很多工作(参见图 1),因此您无需从一张白纸开始。

然后你需要收集信息。值得庆幸的是,客户并不太大,因此您可能会在这方面取得成功,但对于大型组织而言,通常情况下他们不知道其 IT 基础架构的不同部分之间的真正依赖关系究竟是什么。(他们很可能认为他们知道,并且会坚持这种幻想,直到他们改变某些东西并且意外后果的法则咬人。)我希望我能够推荐一些可以帮助解决这个问题的产品(免费或商业),但是我真正得到的只是战争故事和缺乏满足感的混合。特别是,许多用于此类事情的更传统的工具似乎无法很好地处理虚拟化服务器。如果这类事情有开源的东西,我很想听听!

最后,您需要提供信息。这是此处大多数其他答案所解决的最简单的问题。我在这里唯一的评论是,信息的整体(概念)图可能太复杂而无法完整显示并保持可理解,所以无论你做什么,你都必须考虑如何隐藏信息,以便只提出部分观点。

于 2010-06-21T08:40:00.463 回答
2

我知道至少有两个客户,两个大型金融机构,他们实现了一个自定义 web 应用程序,允许实现相同的目标(找到依赖项来进行影响分析),我谦虚地认为你不需要地图来“可视化”事物。

基本上,存储机器、服务(应用服务器、数据库等)、应用程序(语言、功能域等)以及应用程序之间的依赖关系,并实现一个查询模块,允许查找给定应用程序的(可选传递)依赖关系(取决于/取决于)并打印报告。

我将使用快速 CRUD 应用程序开发框架(如 RoR、Grails 等)来实现这一点,这就是他们(上述金融机构)所做的。

于 2010-06-20T23:01:47.443 回答
1

您是否尝试过使用Graphviz

它可以根据文本文件中的依赖关系绘制图形。简单的!

您可能希望从Graphviz Gallery开始获取基本示例和结果图。

于 2010-06-10T13:38:32.970 回答
1

@p.marino 对于任何中等复杂的系统,EAI/ESB 产品的图表部分通常不值得。最大的问题是,我还没有看到一个无需过多手动调整就可以显示系统的大图和有意义的部分。

您可能需要检查操作系统注册表/存储库,例如 Mule Galaxy、WSO2 Registyry 或 JBoss 的类似产品。

我有使用 Mule Galaxy 做这些事情的经验。您可以定义具有不同类型的属性和依赖关系的实体。每个更改都经过审计跟踪,并且可以根据生命周期进行升级。实体可以是抽象的或文件(例如应用程序的主配置文件)。此外,每个实体或域都可以具有访问权限。

这允许您以可维护的方式描述系统的逻辑结构。对于可视化,您需要自己滚动它。您可以通过简单的 REST 风格的 API 获取数据。

于 2010-06-21T03:08:12.350 回答
0

为了收集和管理数据,我也使用 Iteraplan。它非常适合企业架构数据收集和生成某些类型的可视化。

对于 UML 图表,我们使用 Sparx,这很棒。我们正在开发一种工具来整合两者。我们让它使用来自 Iteraplan 的数据填充 Sparx 存储库,这使得绘制图表变得非常容易。

于 2014-11-26T19:21:33.287 回答
0

Visual Studio 2010 有一个名为“Architect Explorer”的漂亮新功能,它允许您生成显示不同 .net 类的依赖关系的图表。

如果您说出您使用的技术可能会有所帮助。

于 2010-06-14T23:26:28.400 回答
0

对于组织和报告有关应用程序、技术、资产等的信息,我非常喜欢 Iteraplan。它是一个专注于“IT 美化”的开源企业架构建模工具,它几乎可以归结为捕获有关您的技术资产的数据(列表和链接)并生成报告。因此,它擅长回答诸如“哪些应用程序用于在我们所有的业务线中执行 X”或“我们有哪些系统正在运行已报废的技术”或“哪些应用程序正在运行在此之上”之类的问题服务器”或“哪些系统未能通过安全审核”。更多信息请访问http://www.iteratec.de

对于 UML 图表,Sparx Enterprise Architect 很棒而且相当便宜。http://www.sparxsystems.com。把它想象成 Visio,它知道它在绘制什么图表,因此您实际上是在数据库中构建您的企业/应用程序的模型,并且图表与之相关联。很强大。比 Rational 更友好且便宜得多。

于 2012-03-03T15:43:47.737 回答
0

我不确定您是否需要仅捕获关系或角色(取决于与具有依赖关系,如在父子关系中)。以下似乎可以满足您的所有需求:

替代文字
(来源:heeroz.com

于 2010-06-15T00:06:11.350 回答
0

也许存储数据的好解决方案是编写简单的自定义 Web 应用程序。如果您有明确的要求,那应该是小菜一碟。它应该比购买一些可定制的大型工具便宜,但可能需要一些时间来开发。根据我的经验,有时按照自己的意愿做一些完全适合您需求的事情,而不是学习一些新的、通用的工具,这些工具旨在做任何事情而什么都不做。

关于可视化:我检查了各种用于 UML 和相关图表的工具,我发现有 2 个工具非常适合大多数任务(非常直观、易于使用且节省时间)。

  1. VisualParadigm - 公司的东西,很多图表,功能强大,界面非常简单,我认为推荐用于您的案例。可能还支持维护您处理的数据。
  2. UMLet - 我最喜欢的一个:) 非常简单,可以做大部分大玩家可以做的事情。

对于这种情况,我不建议 Visio,我发现它对小图表很有用,但您的情况听起来不像是小图表。

于 2010-06-17T20:52:17.097 回答
0

我不确切地知道这个问题的范围,或者它值得投入多少努力,但在我看来,记录人员和系统如何交互的最明显的方法之一是从一个工作流程。那里有大量的工作流程序,从真正的功能到更多的基于文档的。关键是要弄清楚工作流程中的所有参与者。有些是人/职称,而另一些则是系统。

通过一个工作流程,即使是一个粗略的工作流程,分析人们通过什么动作与什么系统交互应该是相当简单的。当然,这并不是一个简单的任务。描述每项工作的任务绝对是一项事业。然而,做一个工作流的好处是它很容易理解。它可以分布在整个公司,并且更容易保持最新状态,因为任何经理都应该能够为自己和他们的团队维护它。

在考虑工作流软件时,只需确保它能够以足够的细节描述工作流,并且通过您可以编写并转换为依赖图的程序轻松分析结果数据。

它本身也可以作为出色的文档。

于 2010-06-18T05:06:00.703 回答
0

即使问题已“关闭”并且已支付赏金,但将处理实际问题的人已经找到了一个看起来非常合适的工具,所以我将这个工具包括给所有感兴趣的人(或可能寻找的人)未来的问题):

https://www.iteraplan.de/en

于 2010-06-21T08:18:47.923 回答