2008-11-19 24 views
16

Ich habe festgestellt, dass doxygen die graphviz-Bibliothek zum Erstellen von Diagrammen verwendet. Haben Sie Graphviz schon einmal zum Erstellen von Dokumentationen verwendet? Lohnt es sich, das Graphviz außerhalb von doxygen zu Dokumentationszwecken zu lernen? Oder sollte ich besser mit einem Standard-Datenmodellierungspaket wie Visio arbeiten?Graphviz für Dokumentation

Ich verstehe die Vorteile davon als eine grafische Bibliothek, aber für den Versuch, komplexere UML (oder ähnlich) zu repräsentieren, ist es immer noch eine Betrachtung wert?

Antwort

20

Das Graphviz ist eine sehr einfache Sprache/Format zum Erstellen von Graphen. Wenn die Fähigkeiten genug für Sie sind, würde ich es empfehlen (Es ist so einfach, dass ich die Zeit zum Lernen mit höchstens 1 Stunde schätzen würde).

+0

Ich stimme zu. Ich weiß nichts über Dokumentationszwecke, aber ich konnte in einer halben Stunde nützliche Graphen programmatisch erzeugen. Mein Eindruck ist, dass eine Stunde für die Grundlagen wahrscheinlich angemessen ist. –

+0

Sehr schlechte Dokumentation, fehlt ganz auf Beispiele ... Ich glaube nicht, dass Sie wirklich nur eine Stunde brauchen. Ich versuche den ganzen Tag, um ein paar einfache UML-Dinge zu erledigen. – Thanks

+6

Richtiges Werkzeug für den Job: Graphviz wird schrecklich schrecklich sein, um zu versuchen, UML zu machen, weil das nicht dafür gedacht ist. Wenn Sie in der Lage sein, schnell die Beziehungen zwischen den Elementen zu zeigen, wird Graphviz groß sein. Wenn Sie Gegenstände präzise platzieren müssen, werden Sie das Leben hassen. –

4

Ja, graphviz ist einfach zu erlernen und einfach in Programmen zu verwenden.

Schauen Sie sich auch yEd, die ein gutes Werkzeug für die Arbeit mit Graphen ist. Im Gegensatz zu Visio lädt und speichert es eine Vielzahl von Formaten, die leicht von Hand zu bearbeiten oder zu programmieren sind. Das Auto-Layout-Zeug ist auch ziemlich nett.

+6

Für diejenigen, die Visio wirklich mögen, können Sie Graphviz verwenden, um im SVG-Format (-Tsvg) auszugeben und dann in Visio zu lesen. Diese können dann bearbeitet werden, um genau das gewünschte Layout zu erhalten.Spart viel Grunzarbeit. –

3

Ich habe es gelegentlich zur Veranschaulichung von Zustandsautomaten verwendet. graphviz ist perfekt dafür.

10

Graphviz wird Ihnen keine glatte grafische Oberfläche wie Visio geben. Es wird jedoch gut ausgeführte Diagramme erzeugen. Ich finde es am nützlichsten, wenn ich Graphen automatisch über ein Programm erzeuge (wie im Falle von Doxygen).

+4

Ich würde sagen, es * normalerweise * gibt Ihnen gut angelegte Diagramme. Ab einem bestimmten Grad an Komplexität erhalten Sie Überschneidungen usw. Graph Rendering ist ein sehr schwieriges Problem. Manchmal gibt es nur so viel, was Sie tun können ... http://dysart.cs.byu.edu/CHDataStructures/inherits.html –

+1

Ja, ich nehme an, der Punkt ist, dass die Grafiklayouts in Graphviz viel besser sind, als Sie normalerweise sehen in anderen Programmen. Außerdem haben Sie die Kontrolle über das Layout, wenn Sie es brauchen oder brauchen. –

6

Graphviz ist am nützlichsten, um Abhängigkeitsgraphen (via Punkt) programmatisch zu erzeugen. Visitors verwendet es, um Site-Besuche zu visualisieren; Hadoop/Cascading verwendet es, um den Ausführungsplan von Map-Reduce-Jobs zu visualisieren.

6

Ich verwende GraphViz ausgiebig für die Dokumentation und skizziere häufig Beziehungen oder Architekturdiagramme mit GraphViz extern und füge sie dann mit dem @ dot/@ enddot zu zusätzlichen Seiten in meinem Doxygen-Code hinzu. Ich habe auch vor kurzem begonnen, @dotfile zu verwenden, was den doppelten Vorteil hat, große Punktanweisungen aus den Code-Dokumenten herauszuhalten und es mir zu ermöglichen, sie weiterhin mit der GraphViz-GUI zu betrachten.

Der andere große Vorteil von GraphViz ist, dass das einfache Textformat sehr gut mit Versionskontrolle funktioniert. Sie können Änderungen an Diagrammen in Ihrem git diff sehen, die mit keinem binären Dokumentationsformat möglich wären. Da ich es im Laufe der Jahre immer öfter verwendet habe, wird dies für mich immer wichtiger.

Allerdings verwende ich für UML ein echtes UML-Tool (Enterprise Architect) statt in Visio stopfen.

2

Stimmen Sie dem Konsens hier zu; Von Graphviz bekomme ich viel Wert. Es ist wirklich gut, um einfache und nicht so einfache Diagramme zu erstellen. Softwareentwickler neigen dazu, Graphen anzuziehen, nicht nur im Quellcode, sondern auch anderswo.

Zum Beispiel, jetzt in einem anderen Browser-Fenster, habe ich die Verzweigung und Verschmelzung Strategie unserer Gruppe mit einem Graphviz-Diagramm dargestellt (angezeigt mit der confluence plugin BTW).

Graphviz ist auch gut für UML. Siehe this tutorial; es ist auch eine gute Einführung in Graphviz.

12

Wenn Sie nur über das Erstellen von Vererbungs-/Kollaborationsdiagrammen wie Doxygen sprechen, lohnt es sich, IDEs zu untersuchen, die das automatisch für Sie erledigen. Ich benutze OmniGraffle (seit ich auf einem Mac bin), die ich sehr empfehlen kann.

Aber GraphViz und DOT kann wirklich praktisch sein, nicht nur für die Dokumentation, sondern auch für das Debuggen und Code-Verständnis, insbesondere für Datenstrukturen. Ich schreibe DOT im Allgemeinen nicht von Hand, aber automatisch generierte DOT kann den minimalen Aufwand wert sein.

Einer der Orte, die ich gefunden habe GraphViz extrem nützlich ist zum Verständnis und Debuggen von binären Suchbaum-Algorithmen. Ich entwickle CHDataStructures.framework, ein Open-Source-Objective-C-Framework, das mehrere Varianten von BSTs enthält. Ich habe zwei Methoden implementiert: -(NSString*)dotGraphString für die Elternklasse und -(NSString*)dotGraphStringForNode: für jede Kindklasse. In etwa 30 bis 40 Codezeilen (die meisten davon am Ende von CHAbstractBinarySearchTree.m) fügte ich die Fähigkeit hinzu, einen Binärbaum iterativ zu durchlaufen und eine DOT-Repräsentation davon zu erstellen, einschließlich Balancing-Informationen, Knoten rot oder schwarz färben usw. (Mit ein wenig Sorgfalt können Sie einfach null Sentinel-Knoten darstellen und den Baum in ordnungsgemäß sortierter Reihenfolge anzeigen.)

In meinem Testcode, nach jeder Änderung des Baumes, rief ich - dotGraphString an und speicherte das Ergebnis in einem .dot Datei, wurde dort mit einem Haltepunkt angehalten und dann diese Datei mit GraphViz geöffnet, das intelligent genug ist, um das DOT-Diagramm erneut zu rendern, wenn die Datei aktualisiert wird. Dieser Ansatz machte es erheblich einfacher zu sehen, was in der Baumstruktur vor sich ging, und Bugs in meiner Implementierung eines bestimmten Algorithmus zu erkennen. Dieser Ansatz kann ziemlich einfach für verschiedene Arten von Datenstrukturen angepasst werden und ist im Allgemeinen viel schneller und einfacher als das Erstellen einer UI nur zum Visualisieren der Struktur.

2

Wir verwenden graphviz, um automatisch Objektdiagramme als Feedback unseres UML-Verifikationswerkzeugs zu generieren. Wir sind sehr zufrieden mit den Ergebnissen, da wir es schaffen, ein grafisches Ergebnis zu liefern, ohne uns um das Layout kümmern zu müssen.

+0

GraphViz erstellt Diagramme normalerweise anders als das Original (falls vorhanden). Daher bemerke ich oft Details, die im Original übersehen wurden. – CyberFonic

2

hatte ich einen gehen mit Graphviz ein paar Mal, es allerdings recht gefunden zu begrenzen.

Was ich am besten für die manuelle Texteingabe-Diagramme gefunden ist Tikz ich es

für FSM's

verwendet Wenn Graphviz Ausgabe erfüllt Ihre speziellen Bedürfnisse, ist es wahrscheinlich in Ordnung. Wenn Sie nicht ganz glücklich sind mit dem, was es tut und etwas TeX Erfahrung haben - werfen Sie einen Blick auf Tikz. Es gibt viele verschiedene Pakete da draußen, Sie müssen nicht müssen lernen, reine Tikz/PGF (die möglicherweise ziemlich schwer scheinen).