doxygenがダイアグラムの作成にgraphvizライブラリを使用していることに気づきました。ドキュメントの生成にgraphvizを使用したことがありますか?doxygenの範囲外の文書化の目的でgraphvizを学ぶ価値はありますか?それとも、Visioのような標準のデータモデリングパッケージを使い続けるほうがいいですか?
グラフライブラリとしてのメリットは理解していますが、より複雑なUML(または同様のもの)を表現しようとする場合でも、調査する価値はありますか?
doxygenがダイアグラムの作成にgraphvizライブラリを使用していることに気づきました。ドキュメントの生成にgraphvizを使用したことがありますか?doxygenの範囲外の文書化の目的でgraphvizを学ぶ価値はありますか?それとも、Visioのような標準のデータモデリングパッケージを使い続けるほうがいいですか?
グラフライブラリとしてのメリットは理解していますが、より複雑なUML(または同様のもの)を表現しようとする場合でも、調査する価値はありますか?
graphvizは、グラフを作成するための非常に単純な言語/形式です。能力があなたにとって十分であるならば、私はそれをお勧めします(それはとても簡単なので、私はせいぜい1時間で学ぶ時間を見積もるでしょう)。
Doxygen のような継承/コラボレーション図の作成について話しているだけなら、それを自動的に行う IDE を調査する価値があります。ゼロから作成したドキュメントや手作業で調整したドキュメントには、OmniGraffleを使用します(Mac を使用しているため)。これを強くお勧めします。
ただし、GraphVizとDOTは、ドキュメンテーションだけでなく、特にデータ構造のデバッグやコード理解にも非常に便利です。通常、私は DOT を手で書くことはしませんが、自動生成された DOT は、最小限の労力を費やすだけの価値があります。
GraphViz が非常に役立つと感じた場所の 1 つは、二分探索木アルゴリズムの理解とデバッグです。オープンソースの Objective-C フレームワークであるCHDataStructures.frameworkを開発しています。これには、いくつかの種類の BST が含まれています。-(NSString*)dotGraphString
親クラスと-(NSString*)dotGraphStringForNode:
各子クラスの2 つのメソッドを実装しました。約 30 ~ 40 行のコード (ほとんどは の下部にありますCHAbstractBinarySearchTree.m
) で、バイナリ ツリーを繰り返しトラバースし、情報の分散、ノードの赤または黒の色付けなどを含む、その DOT 表現を作成する機能を追加しました (少し注意すれば、null センチネル ノードを簡単に表現し、ツリーを適切な並べ替え順序で表示できます。)
私のテスト コードでは、ツリーを変更するたびに - を呼び出しdotGraphString
て結果を .dot ファイルに保存し、そこでブレークポイントで停止してから、そのファイルを GraphViz で開きました。ファイルが更新されます。このアプローチにより、ツリーで何が起こっているかを確認し、特定のアルゴリズムの実装でバグを見つけることが非常に簡単になりました。このアプローチは、さまざまな種類のデータ構造に非常に簡単に適用でき、構造を視覚化するためだけに UI を作成するよりもはるかに高速で簡単です。
Graphviz は、Visio のような洗練されたグラフィカル インターフェイスを提供しません。ただし、適切にレイアウトされたグラフが生成されます。プログラムを介してグラフを自動的に生成する場合 (doxygen の場合など) に最も便利です。
私は文書化のために GraphViz を広く使用しており、外部で GraphViz を使用して関係やアーキテクチャ図をスケッチし、@dot/@enddot を使用して Doxygen コードの追加ページに追加することがよくあります。また、最近 @dotfile の使用を開始しました。これには、大きなドット ステートメントをコード ドキュメントから除外し、GraphViz GUI でそれらを引き続きプレビューできるという 2 つの利点があります。
GraphViz のもう 1 つの大きな利点は、単純なテキスト形式がバージョン管理と非常にうまく連携することです。バイナリ ドキュメント形式では不可能な git diff のダイアグラムへの変更を確認できます。何年にもわたって使用するにつれて、これは私にとってより重要な機能になりつつあります.
ただし、UML については、Visio に詰め込むのではなく、真の UML ツール (エンタープライズ アーキテクト) を使用します。
Graphviz は、依存関係グラフを (ドット経由で) プログラムで生成するのに最も役立ちます。訪問者はそれを使用してサイト訪問を視覚化します。Hadoop/Cascadingはこれを使用して、map-reduce ジョブの実行計画を視覚化します。
はい、graphviz は簡単に習得でき、プログラム内から簡単に使用できます。
また、グラフを操作するための優れたツールであるyEdも見てください。Visio とは異なり、手動で編集したりプログラムで生成したりしやすいさまざまな形式を読み込んで保存します。自動レイアウトもかなりいいです。
ステートマシンを説明するために時々使用しました。それにはgraphvizが最適です。
Graphviz を使用して、UML 検証ツールのフィードバックとしてオブジェクト図を自動的に生成します。レイアウトをまったく気にせずにグラフィカルな結果を提供できたので、結果には本当に満足しています。
ここでコンセンサスに同意します。私は Graphviz から多くの価値を得ています。シンプルなダイアグラムを作成するのに非常に適しています。ソフトウェア開発者は、ソース コードだけでなく他の場所でもグラフを引き付ける傾向があります。
たとえば、現在、別のブラウザ ウィンドウで、グループの分岐とマージの戦略をグラフビズ ダイアグラム ( confluence プラグインBTW を使用して表示) を使用して説明しています。
Graphviz は UML にも適しています。このチュートリアルを参照してください。これは、Graphviz の良い入門書でもあります。
参考までに、Graphviz を使用したレイアウト図への Microsoft Visio アドイン: http://www.calvert.ch/graphvizio/