2008-11-19 23 views
16

Me di cuenta de que doxygen utiliza la biblioteca graphviz para crear diagramas. ¿Alguna vez ha usado graphviz para generar documentación? ¿Vale la pena aprender la graphviz para propósitos de documentación fuera del alcance de doxygen? ¿O es mejor que me quede con un paquete de modelado de datos estándar como Visio?Graphviz para la documentación

Entiendo los méritos de esto como una biblioteca de gráficos, pero para intentar representar UML más complejo (o similar) ¿vale la pena investigarlo?

Respuesta

20

Graphviz es un lenguaje/formato muy simple para crear gráficos. Si las capacidades son suficientes para usted, lo recomendaría (es tan fácil, que estimaría el tiempo para aprender con un máximo de 1 hora).

+0

Estoy de acuerdo. No sé sobre los propósitos de la documentación, pero pude generar gráficos útiles programáticamente en media hora. Mi impresión es que una hora es probablemente razonable para lo básico. –

+0

Documentación muy pobre, carece totalmente de ejemplos ... No creo que realmente necesite una sola hora. Estoy intentando todo el día para hacer algunas cosas simples de UML. – Thanks

+6

Herramienta de Rigth para el trabajo: Graphviz va a ser terriblemente horrible para intentar hacer UML, porque no es para lo que fue diseñado. Si necesita poder mostrar rápidamente las relaciones entre los elementos, Graphviz será genial. Si tiene que colocar artículos con precisión, odiará la vida. –

4

Sí, graphviz es fácil de aprender y fácil de usar desde dentro de los programas.

También vea yEd que es una buena herramienta para trabajar con gráficos. A diferencia de Visio, cargará y guardará una variedad de formatos que son fáciles de editar a mano o generar programáticamente. El diseño automático es bastante bueno también.

+6

Para aquellos que realmente les gusta Visio, puede usar Graphviz para generar en formato SVG (-Tsvg) y luego leerlo en Visio. Que luego se puede editar para obtener exactamente el diseño deseado.Ahorra mucho trabajo duro. –

3

Lo he usado ocasionalmente para ilustrar máquinas de estados. graphviz es perfecto para eso.

10

Graphviz no le dará una interfaz gráfica como Visio. Sin embargo, producirá gráficos bien diseñados. Lo encuentro más útil cuando estoy generando gráficos automáticamente a través de un programa (como en el caso de doxygen).

+4

Lo diría * generalmente * le ofrece gráficos bien diseñados. Después de cierto nivel de complejidad, se superponen, etc. La representación gráfica es un problema muy difícil. A veces hay mucho que puedes hacer ... http://dysart.cs.byu.edu/CHDataStructures/inherits.html –

+1

Sí, supongo que el punto es que los diseños de gráficos en Graphviz son mucho mejores de lo que ves en otros programas Además, le brinda el control del diseño cuando lo desea o lo necesita. –

6

Graphviz es más útil para generar gráficos de dependencia (a través de punto) mediante programación. Visitors lo usa para visualizar visitas al sitio; Hadoop/Cascading lo usa para visualizar el plan de ejecución de trabajos de reducción de mapas.

6

Utilizo GraphViz extensivamente para la documentación y, a menudo, bosquejo relaciones o diagramas de arquitectura usando GraphViz externamente y luego los agrego a páginas adicionales en mi código Doxygen usando @ dot/@ enddot. Recientemente, también comencé a usar @dotfile, que tiene el doble beneficio de mantener grandes estados de puntos fuera de los documentos de código y me permite seguirlos para obtener una vista previa con GraphViz GUI.

El otro gran beneficio con GraphViz es que el formato de texto simple funciona muy bien con el control de la versión. Puede ver los cambios a los diagramas en su git diff que sería imposible con cualquier formato de documentación binaria. Como lo he usado más a lo largo de los años, esto se está convirtiendo en una característica más importante para mí.

Sin embargo, para UML utilizo una herramienta UML verdadera (Enterprise Architect) en lugar de meterme en Visio.

2

Estoy de acuerdo con el consenso aquí; Valoro mucho el valor de Graphviz. Es realmente bueno para crear diagramas simples y no tan simples. Los desarrolladores de software tienden a atraer gráficos, no solo en el código fuente sino también en otros lugares.

Por ejemplo, ahora en otra ventana del navegador, la estrategia de bifurcación y fusión de nuestro grupo se ilustra utilizando un diagrama graphviz (mostrado usando el confluence plugin BTW).

Graphviz es bueno para UML también. Ver this tutorial; es una buena introducción a Graphviz también.

12

Si solo está hablando de crear diagramas de herencia/colaboración como Doxygen, vale la pena investigar los IDEs que lo harán automáticamente. Para documentación desde cero o ajustada a mano, uso OmniGraffle (ya que estoy en una Mac) que recomiendo encarecidamente.

Sin embargo, GraphViz y DOT pueden ser muy útiles, no solo para la documentación, sino también para la depuración y la comprensión de códigos, particularmente para las estructuras de datos. Generalmente no escribo DOT a mano, pero el DOT generado automáticamente puede valer la pena el mínimo esfuerzo.

Uno de los lugares que encontré GraphViz extremadamente útil es para comprender y depurar los algoritmos del árbol de búsqueda binaria. Desarrollé CHDataStructures.framework, un marco de código abierto Objective-C, que incluye varias variedades de BST. Implementé dos métodos: -(NSString*)dotGraphString en la clase principal y -(NSString*)dotGraphStringForNode: en cada clase secundaria. En aproximadamente 30-40 líneas de código (la mayor parte en la parte inferior de CHAbstractBinarySearchTree.m), agregué la capacidad de recorrer iterativamente un árbol binario y crear una representación DOT de él, incluyendo información de equilibrio, nodos de coloreo rojo o negro, etc. (Con un poco de cuidado, puede representar fácilmente nódulos centinela nulos y mostrar el árbol en el orden correcto ordenado.)

En mi código de prueba, después de cada modificación del árbol, llamé - dotGraphString y guardé el resultado en .dot archivo, se detuvo allí con un punto de interrupción, luego abrió ese archivo con GraphViz, que es lo suficientemente inteligente como para volver a representar el gráfico DOT cuando se actualiza el archivo. Este enfoque hizo que fuera mucho más fácil ver lo que estaba sucediendo en el árbol y detectar errores en mi implementación de un algoritmo dado. Este enfoque se puede adaptar bastante fácilmente para varios tipos de estructuras de datos, y generalmente es mucho más rápido y más fácil que crear una interfaz de usuario solo para visualizar la estructura.

2

Utilizamos graphviz para generar automáticamente diagramas de objetos como comentarios de nuestra herramienta de verificación UML. Estamos muy contentos con los resultados ya que logramos proporcionar un resultado gráfico sin preocuparnos en absoluto por el diseño.

+0

GraphViz normalmente establece diagramas diferentes del original (si hay alguno). Como resultado, a menudo noto detalles que fueron pasados ​​por alto en el original. – CyberFonic

2

tuve una vez con Graphviz unas cuantas veces, aunque pareció bastante limitante.

Lo que me pareció mejor para diagramas de entrada de texto manual es Tikz que lo utilizaron para FSM's

Si satisface salida Graphviz sus necesidades particulares, es probablemente muy bien. Si no está satisfecho con lo que hace y tiene algo de experiencia en TeX, eche un vistazo a Tikz. Existen muchos paquetes diferentes, no necesita para aprender Tikz/PGF puro (que puede parecer bastante pesado).