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