Graphviz用于文档

时间:2008-11-19 22:23:08

标签: uml doxygen documentation-generation graphviz

我注意到doxygen使用graphviz库来创建图表。您是否曾使用graphviz生成文档?是否值得在doxygen范围之外学习graphviz用于文档目的?或者我最好坚持使用像Visio这样的标准数据建模软件包吗?

我理解它作为图形库的优点,但是为了尝试表示更复杂的UML(或类似的),它还值得研究吗?

11 个答案:

答案 0 :(得分:21)

graphviz是用于创建图形的非常简单的语言/格式。如果能力足够你我会推荐它(它很容易,我估计最多1小时学习的时间)。

答案 1 :(得分:12)

如果您只是在谈论像Doxygen那样创建继承/协作图表,那么值得研究能够自动为您完成这项工作的IDE。对于从头开始或手动调整的文档,我使用OmniGraffle(因为我在Mac上),我强烈推荐。

然而,GraphVizDOT可以非常方便,不仅用于文档,还用于调试和代码理解,特别是对于数据结构。我一般不会手工编写DOT,但自动生成的DOT非常值得花费最少的努力。

我发现GraphViz非常有用的一个地方是理解和调试二进制搜索树算法。我开发了CHDataStructures.framework,一个开源的Objective-C框架,其中包括多种BST。我实现了两个方法:父类的-(NSString*)dotGraphString和每个子类的-(NSString*)dotGraphStringForNode:。在大约30-40行代码中(大部分位于CHAbstractBinarySearchTree.m的底部),我添加了迭代遍历二叉树并创建它的DOT表示的能力,包括平衡信息,着色节点红色或黑色等等(稍加注意,您可以轻松地表示空的前哨节点并以正确的排序顺序显示树。)

在我的测试代码中,在每次修改树之后,我调用了 - dotGraphString并将结果保存到.dot文件,用断点停在那里,然后用GraphViz打开该文件,这很聪明更新文件时重新呈现DOT图。这种方法使得查看树中发生的事情以及发现给定算法的实现中的错误变得非常容易。这种方法可以很容易地适用于各种类型的数据结构,并且通常比创建用于可视化结构的UI更快更容易。

答案 2 :(得分:10)

Graphviz不会像Visio那样为您提供光滑的图形界面。然而,它将产生布局良好的图表。当我通过程序自动生成图形时(例如doxygen),我发现它最有用。

答案 3 :(得分:6)

Graphviz对于以编程方式生成依赖图(通过点)非常有用。 Visitors使用它来可视化网站访问; Hadoop/Cascading使用它来可视化map-reduce作业的执行计划。

答案 4 :(得分:6)

我将GraphViz广泛用于文档,并经常使用GraphViz从外部勾画关系或架构图,然后使用@ dot / @ enddot将它们添加到我的Doxygen代码中的额外页面。我最近也开始使用@dotfile,它具有将大型点语句保留在代码文档之外的双重好处,并允许我继续使用GraphViz GUI预览它们。

GraphViz的另一大好处是简单的文本格式在版本控制方面非常有效。您可以在git diff中看到对图表的更改,这对于任何二进制文档格式都是不可能的。多年来,我越来越多地使用它,这对我来说已经成为一个更重要的特征。

但是,对于UML,我使用真正的UML工具(Enterprise Architect),而不是在Visio中填充。

答案 5 :(得分:4)

是的,graphviz易于学习,并且易于在程序中使用。

另请参阅yEd这是处理图表的好工具。与Visio不同,它将加载和保存各种易于手动编辑或以编程方式生成的格式。自动布局的东西也很不错。

答案 6 :(得分:3)

我偶尔用它来说明状态机。 graphviz非常适合。

答案 7 :(得分:2)

同意这里的共识;我从Graphviz中获得了很多价值。这对于创建简单而不那么简单的图表非常有用。软件开发人员倾向于吸引图表,不仅仅是源代码,还有其他地方。

例如,现在在另一个浏览器窗口中,我使用graphviz图表显示了我们组的分支和合并策略(使用confluence plugin BTW显示)。

Graphviz也适用于UML。见this tutorial;这也是Graphviz的一个很好的介绍。

答案 8 :(得分:2)

我们使用graphviz自动生成对象图作为UML验证工具的反馈。我们对结果非常满意,因为我们设法提供图形结果而不必担心布局。

答案 9 :(得分:2)

我曾多次使用Graphviz,但发现它非常有限。

我发现最适合手动文本输入图的是Tikz 我用它来FSM's

如果Graphviz输出满足您的特定需求,那可能就好了。 如果您对它的功能不满意并拥有一些TeX经验 - 看看Tikz。那里有许多不同的包,你没有 需要学习纯Tikz / PGF(可能看起来很重)。

答案 10 :(得分:1)

FYI 使用Graphviz将Microsoft Visio插件添加到布局图中: http://www.calvert.ch/graphvizio/