17

doxygenがダイアグラムの作成にgraphvizライブラリを使用していることに気づきました。ドキュメントの生成にgraphvizを使用したことがありますか?doxygenの範囲外の文書化の目的でgraphvizを学ぶ価値はありますか?それとも、Visioのような標準のデータモデリングパッケージを使い続けるほうがいいですか?

グラフライブラリとしてのメリットは理解していますが、より複雑なUML(または同様のもの)を表現しようとする場合でも、調査する価値はありますか?

4

11 に答える 11

21

graphvizは、グラフを作成するための非常に単純な言語/形式です。能力があなたにとって十分であるならば、私はそれをお勧めします(それはとても簡単なので、私はせいぜい1時間で学ぶ時間を見積もるでしょう)。

于 2008-11-19T22:30:15.837 に答える
12

Doxygen のような継承/コラボレーション図の作成について話しているだけなら、それを自動的に行う IDE を調査する価値があります。ゼロから作成したドキュメントや手作業で調整したドキュメントには、OmniGraffleを使用します(Mac を使用しているため)。これを強くお勧めします。

ただし、GraphVizDOTは、ドキュメンテーションだけでなく、特にデータ構造のデバッグやコード理解にも非常に便利です。通常、私は DOT を手で書くことはしませんが、自動生成された DOT は、最小限の労力を費やすだけの価値があります。

GraphViz が非常に役立つと感じた場所の 1 つは、二分探索木アルゴリズムの理解とデバッグです。オープンソースの Objective-C フレームワークであるCHDataStructures.frameworkを開発しています。これには、いくつかの種類の BST が含まれています。-(NSString*)dotGraphString親クラスと-(NSString*)dotGraphStringForNode:各子クラスの2 つのメソッドを実装しました。約 30 ~ 40 行のコード (ほとんどは の下部にありますCHAbstractBinarySearchTree.m) で、バイナリ ツリーを繰り返しトラバースし、情報の分散、ノードの赤または黒の色付けなどを含む、その DOT 表現を作成する機能を追加しました (少し注意すれば、null センチネル ノードを簡単に表現し、ツリーを適切な並べ替え順序で表示できます。)

私のテスト コードでは、ツリーを変更するたびに - を呼び出しdotGraphStringて結果を .dot ファイルに保存し、そこでブレークポイントで停止してから、そのファイルを GraphViz で開きました。ファイルが更新されます。このアプローチにより、ツリーで何が起こっているかを確認し、特定のアルゴリズムの実装でバグを見つけることが非常に簡単になりました。このアプローチは、さまざまな種類のデータ構造に非常に簡単に適用でき、構造を視覚化するためだけに UI を作成するよりもはるかに高速で簡単です。

于 2009-06-10T16:41:51.530 に答える
10

Graphviz は、Visio のような洗練されたグラフィカル インターフェイスを提供しません。ただし、適切にレイアウトされたグラフが生成されます。プログラムを介してグラフを自動的に生成する場合 (doxygen の場合など) に最も便利です。

于 2008-12-16T00:09:43.630 に答える
6

私は文書化のために GraphViz を広く使用しており、外部で GraphViz を使用して関係やアーキテクチャ図をスケッチし、@dot/@enddot を使用して Doxygen コードの追加ページに追加することがよくあります。また、最近 @dotfile の使用を開始しました。これには、大きなドット ステートメントをコード ドキュメントから除外し、GraphViz GUI でそれらを引き続きプレビューできるという 2 つの利点があります。

GraphViz のもう 1 つの大きな利点は、単純なテキスト形式がバージョン管理と非常にうまく連携することです。バイナリ ドキュメント形式では不可能な git diff のダイアグラムへの変更を確認できます。何年にもわたって使用するにつれて、これは私にとってより重要な機能になりつつあります.

ただし、UML については、Visio に詰め込むのではなく、真の UML ツール (エンタープライズ アーキテクト) を使用します。

于 2009-01-14T23:15:07.163 に答える
6

Graphviz は、依存関係グラフを (ドット経由で) プログラムで生成するのに最も役立ちます。訪問者はそれを使用してサイト訪問を視覚化します。Hadoop/Cascadingはこれを使用して、map-reduce ジョブの実行計画を視覚化します。

于 2008-12-16T00:21:46.163 に答える
4

はい、graphviz は簡単に習得でき、プログラム内から簡単に使用できます。

また、グラフを操作するための優れたツールであるyEdも見てください。Visio とは異なり、手動で編集したりプログラムで生成したりしやすいさまざまな形式を読み込んで保存します。自動レイアウトもかなりいいです。

于 2008-12-15T23:48:10.210 に答える
3

ステートマシンを説明するために時々使用しました。それにはgraphvizが最適です。

于 2008-12-15T23:54:17.593 に答える
2

Graphviz を使用して、UML 検証ツールのフィードバックとしてオブジェクト図を自動的に生成します。レイアウトをまったく気にせずにグラフィカルな結果を提供できたので、結果には本当に満足しています。

于 2009-06-11T08:05:35.543 に答える
2

ここでコンセンサスに同意します。私は Graphviz から多くの価値を得ています。シンプルなダイアグラムを作成するのに非常に適しています。ソフトウェア開発者は、ソース コードだけでなく他の場所でもグラフを引き付ける傾向があります。

たとえば、現在、別のブラウザ ウィンドウで、グループの分岐とマージの戦略をグラフビズ ダイアグラム ( confluence プラグインBTW を使用して表示) を使用して説明しています。

Graphviz は UML にも適しています。このチュートリアルを参照してください。これは、Graphviz の良い入門書でもあります。

于 2009-01-14T23:41:32.960 に答える
2

私は Graphviz を何度も試しましたが、かなり制限がありました。

手動のテキスト入力ダイアグラムに最も適しているのはTikzで、 FSM で使用しました

Graphviz の出力が特定のニーズを満たしている場合は、おそらく問題ありません。Tikz の機能に満足できず、TeX の経験がある場合は、Tikz をご覧ください。そこには多くの異なるパッケージがあり、純粋な Tikz/PGF を学ぶ必要はありません (かなり重いと思われるかもしれません)。

于 2011-06-27T23:15:47.580 に答える
1

参考までに、Graphviz を使用したレイアウト図への Microsoft Visio アドイン: http://www.calvert.ch/graphvizio/

于 2011-04-10T19:33:23.260 に答える