如何为IT资产创建“依赖关系图”

时间:2010-06-10 13:35:16

标签: documentation resources mapping enterprise assets

我的一位客户正试图为他们公司使用的各种应用程序创建一个互动的“矩阵”(这是一家拥有约2500名员工的旅游和休闲公司)。

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

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

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

NB:问题不是“我收集了有关IT资产的所有数据,而且我无法为Graphviz提供Visio或Google或将其转换为MindMapping工具或创建自定义导航器使用Jgraph等。“ 问题是“我如何收集相关/有用的信息,以及我应该如何组织这些信息,因为我可能需要定期更新数据,因为接口,版本和软件包更改?”

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

“只需​​创建一个Excel文件”或“你可以使用SmartDraw,男人!!!”恐怕不要太多帮助。

<小时/> 找到Iteraplan看起来非常合适!

13 个答案:

答案 0 :(得分:7)

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

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

将系统/服务器/物理资产映射为框对象,然后在其中列出各种应用程序,数据库,组件以及它们之间的相互关系。

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

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

要创建我使用dia的图表。如果我不得不重新做一遍,我肯定会使用Visio,因为找到预先制作的stencil/template packages to diagram with online会更容易,如果那些没有你需要的东西,那么在Visio中滚动自己的模板非常容易。

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

适应明确指定格式的缺点是:

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

我的建议是:

  • 使图表尽可能简单
  • 不要害怕违反规则
  • 使图表尽可能简单
  • 尽一切努力使图表尽可能简单直接
  • ......你明白了。

如果从未见过图表的开发人员在查看图表的前几分钟内无法开始破译布局和含义,那么它可能弊大于利。

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

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

当你正在研究各种选择时,问问自己。你了解图表的要点吗?

设计图表的问题是,如果做错了, 会产生更多令人头痛的问题,而没有人会使用它。 没有设计文档通常比糟糕设计文档更好。

我希望有所帮助。

答案 1 :(得分:3)

如果您的客户想要了解影响,您需要对工件的内容进行建模,在工件之间传递什么信息,以及公司各部分如何与工件进行交互。

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

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

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

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

这是对这项权利的一项重大承诺,你必须努力使其保持最新状态,除非每个人都长期注册,否则很可能会失败。

对于那些没有尝试使用SADT的人来说,这是一个非常简单的系统(这与其他答案的格言保持简单相匹配),并且非常有效地将复杂的处理任务分解为你可以看到(并实际沟通)基本上所有东西的块,甚至是管理者!使SADT工作的关键是避免草率;仔细定义弧和节点 ,不要跳过信息源或接收器。如果你这样做,SADT支付得很好。 [大多数白板框和箭头图都很糟糕:你无法分辨什么是真正的动作,什么是真正的数据,或者是否所有信息都是实际显示的以及谁使用它们。)

恕我直言,有趣的是,SADT模型捕捉了colored Petri nets背后的直觉,它模拟了任意复杂的异步计算,这是Petri nets的概括,它是有限状态自动机的推广。

答案 2 :(得分:2)

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

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

我会使用像RoR,Grails等快速CRUD应用程序开发框架来实现它,这是他们(上面的金融机构)所做的。

答案 3 :(得分:2)

你的第一个问题是如何建立一个概念框架来保存所有这些信息(注意:我不是在谈论数据的格式,而是你如何附加意义)。这比它看起来更难,但幸运的是有quite a bit of work done on this already(见图1)所以你不需要从一张白纸开始。

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

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

答案 4 :(得分:1)

您是否尝试过使用Graphviz

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

您可能希望从基础示例和结果图表的Graphviz Gallery开始。

答案 5 :(得分:1)

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

您可能需要检查OS注册表/存储库内容,例如Mule Galaxy,WSO2 Registyry或JBoss的类似产品。

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

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

我不确定你是否需要捕捉关系,或者角色(取决于vs作为依赖关系,如在父子关系中)。以下似乎可以满足您的一切需求:

alt text http://heeroz.com/depends.png

答案 8 :(得分:0)

存储数据的好方法可能就是编写简单的自定义Web应用程序。如果你有明确的要求,它应该是小菜一碟。它应该比购买一些可定制的巨大工具便宜,但可能需要一些时间来开发。根据我的经验,有时最好根据自己的需要做一些最适合您需求的事情,而不是学习一些旨在做任何事情而不做任何事情的新的通用工具。

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

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

    对于这种情况,我不建议使用Visio,我发现它对于小图有用,但是你的情况听起来不像一个小图。

答案 9 :(得分:0)

我不确切地知道这个问题的范围,或者值得投入多少努力,但在我看来,记录人与系统如何互动的最明显的方法之一就是从工作流程开始。有大量的工作流程程序,从真正的功能到更多的文档。嘿,这将是弄清楚所有玩家在工作流程中的含义。有些是人/职称,有些则是系统。

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

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

它本身也可以作为一个优秀的文档。

答案 10 :(得分:0)

即使问题已经“关闭”并且已经支付了赏金,那么将在实际问题上工作的人找到了一个看起来非常合适的工具,所以我将这个包含在每个感兴趣的人(或者可能会在将来寻找问题):

https://www.iteraplan.de/en

答案 11 :(得分:0)

为了组织和报告有关应用程序,技术,资产等的信息,我非常喜欢Iteraplan。它是一个专注于“IT园林绿化”的开源企业架构建模工具,它几乎可以归结为捕获有关您的技术资产和生成报告的数据(列表和链接)。因此,它擅长回答诸如“我们所有业务部门中用于执行X的应用程序”或“我们运行的哪些系统已经运行终止技术”或“运行的应用程序正在运行”等问题。服务器“或”哪些系统安全审核失败“。有关详情,请访问http://www.iteratec.de

对于UML图表,Sparx Enterprise Architect非常好而且相当便宜。 http://www.sparxsystems.com。可以把它想象成Visio,知道它的图表是什么,所以你真的在数据库中构建你的企业/应用程序模型,图表与之相关。很强大。友善,比Rational便宜得多。

答案 12 :(得分:0)

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

对于UML图解,我们使用Sparx,这很棒。我们正在开发一种集成两者的工具。我们使用来自Iteraplan的数据填充Sparx存储库,这使得计算非常简单。