tool one many examples data create uml doxygen documentation-generation graphviz

uml - one - mongodb structure data



Graphviz para documentación (11)

He probado Graphviz bastantes veces, aunque me pareció bastante limitante.

Lo que encontré mejor para los diagramas de entrada de texto manual es Tikz lo usé para FSM

Si la salida de Graphviz satisface tus necesidades particulares, probablemente esté bien. Si no está satisfecho con lo que hace y tiene alguna experiencia TeX, eche un vistazo a Tikz. Hay muchos paquetes diferentes por ahí, no es necesario aprender Tikz / PGF puro (que puede parecer bastante pesado).

Noté que doxygen usa la biblioteca graphviz para crear diagramas. ¿Alguna vez ha utilizado 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?

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


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).


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


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

Consulte también 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.


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


Graphviz no le dará una interfaz gráfica ingeniosa 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).


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 mismo en otra ventana del navegador, tengo la estrategia de bifurcación y fusión de nuestro grupo ilustrada usando un diagrama graphviz (mostrado usando el plugin de confluencia BTW).

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


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, utilizo OmniGraffle (ya que estoy en una Mac) que recomiendo encarecidamente.

Sin embargo, GraphViz y DOT pueden ser realmente ú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 encuentro GraphViz extremadamente útil es para comprender y depurar los algoritmos del árbol de búsqueda binario. Desarrollo CHDataStructures.framework , un framework de código abierto Objective-C, que incluye varias variedades de BST. Implementé dos métodos: -(NSString*)dotGraphString en la clase padre y -(NSString*)dotGraphStringForNode: en cada clase secundaria. En aproximadamente 30-40 líneas de código (la mayoría 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é a dotGraphString y dotGraphString el resultado en un archivo .dot, me detuve allí con un punto de interrupción y luego abrí ese archivo con GraphViz, que es lo suficientemente inteligente como para volver a representar el gráfico DOT cuando el archivo se actualiza 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 IU solo para visualizar la estructura.


Usamos 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.



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 textual simple funciona muy bien con el control de versiones. 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 verdadera herramienta UML ( Enterprise Architect ) en lugar de rellenar todo en Visio.