Graphviz pour la documentation
j'ai remarqué que doxygen utilise la bibliothèque graphviz pour créer des diagrammes. Avez-vous déjà utilisé graphviz pour générer de la documentation? Vaut-il la peine d'apprendre le graphviz à des fins de documentation en dehors du cadre de doxygen? Ou devrais-je plutôt m'en tenir à un paquet standard de modélisation de données comme Visio?
je comprends le fond de comme une bibliothèque graphique, mais pour essayer de représenter plus complexe UML (ou similaire) est-il encore utile?
11 réponses
le graphviz est un langage / format très simple pour créer des graphiques. Si les capacités sont assez pour vous, je le recommande (c'est tellement facile, que j'estime le temps d'apprendre avec au plus 1 heure).
si vous parlez simplement de créer des diagrammes d'héritage/collaboration comme le fait Doxygen, cela vaut la peine d'enquêter sur les IDEs qui le feront automatiquement pour vous. Pour la documentation à partir de zéro ou à la main, j'utilise OmniGraffle (puisque je suis sur un Mac) ce que je recommande vivement.
Cependant, GraphViz et DOT peut être très pratique, non seulement pour la documentation, mais aussi pour le débogage et la compréhension du code, en particulier pour les données structure. En général, je n'écris pas point par point à la main, mais le point généré automatiquement peut en valoir la peine.
L'un des endroits où J'ai trouvé GraphViz extrêmement utile est pour comprendre et déboguer les algorithmes d'arborescence de recherche binaire. Je développe CHDataStructures.framework, un cadre open-source Objectif-C, qui comprend plusieurs variétés de TSB. J'ai mis en place deux méthodes: -(NSString*)dotGraphString
sur la classe des parents et -(NSString*)dotGraphStringForNode:
sur chaque classe d'enfant. Dans environ 30 à 40 lignes de code (en plus de celui-ci au bas de CHAbstractBinarySearchTree.m
), j'ai ajouté la possibilité de traverser itérativement un arbre binaire et de créer une représentation par points de celui-ci, y compris l'équilibrage de l'information, les noeuds de coloration rouge ou noir, etc. (Avec un peu de soin, vous pouvez facilement représenter les noeuds sentinelles nuls et afficher l'arbre dans l'ordre approprié.)
Dans mon code de test, après chaque modification de l'arbre, j'ai appelé -dotGraphString
et a enregistré le résultat à A.dot file, s'est arrêté là avec un point de rupture, puis ouvert ce fichier avec GraphViz, ce qui est assez intelligent pour re-afficher le graphique à points lorsque le fichier est mis à jour. Cette approche a rendu beaucoup plus facile de voir ce qui se passait dans l'arbre et de repérer des bogues dans mon implémentation d'un algorithme donné. Cette approche peut être adaptée assez facilement pour différents types de structures de données, et est généralement beaucoup plus rapide et plus facile que de créer un UI juste pour visualiser la structure.
Graphviz ne va pas vous donner une interface graphique habile comme Visio. Elle produira toutefois des graphiques bien présentés. Je le trouve très utile lorsque je génère des graphiques automatiquement via un programme (comme dans le cas de doxygen).
Graphviz est le plus utile pour générer des graphiques de dépendances (via des points) de manière programmatique. les Visiteurs l'utilise pour visualiser les visites de site; Hadoop/En Cascade l'utilise pour visualiser le plan d'exécution des travaux map-reduce.
J'utilise GraphViz intensivement pour la documentation et je dessine souvent des relations ou des diagrammes d'architecture en utilisant GraphViz extérieurement puis je les ajoute à des pages supplémentaires dans mon code Doxygen en utilisant le @dot/@enddot. J'ai également récemment commencé à utiliser @dotfile qui a le double avantage de garder les déclarations de gros points hors du code docs et me permet de continuer à les prévisualiser avec L'interface graphique graphique graphique.
L'autre grand avantage avec GraphViz est que le format textuel simple fonctionne très bien bien avec le contrôle de version. Vous pouvez voir des changements aux diagrammes dans votre diff de git qui seraient impossibles avec n'importe quel format de documentation binaire. Comme je l'ai utilisé de plus en plus au fil des ans, cela devient une caractéristique plus importante pour moi.
Cependant, pour UML j'utilise un véritable outil UML ( Architecte D'Entreprise) plutôt que de farcir à Visio.
Oui, graphviz est facile à apprendre et facile à utiliser à partir de programmes internes.
regardez affichent pas qui est un bon outil pour travailler avec des graphiques. Contrairement à Visio, il chargera et enregistrera une variété de formats qui sont faciles à éditer à la main ou à générer programmatiquement. La mise en page automatique est assez agréable aussi.
Je l'ai utilisé de temps en temps pour illustrer des machines d'état. graphviz est parfait pour cela.
D'accord avec le consensus ici; J'obtiens beaucoup de valeur de Graphviz. C'est vraiment bon pour créer des diagrammes simples, et pas si simples. Les développeurs de logiciels ont tendance à attirer les graphiques, pas seulement dans le code source, mais aussi ailleurs.
par exemple, en ce moment dans une autre fenêtre de navigateur, j'ai la stratégie de branchement et de fusion de notre groupe illustrée en utilisant un diagramme de graphviz (affiché en utilisant le confluence plugin BTW).
Graphviz est bon pour UML aussi. Voir ce tutoriel; C'est aussi une bonne introduction à Graphviz.
nous utilisons graphviz pour générer automatiquement des diagrammes d'objets en retour de notre outil de vérification UML. Nous sommes vraiment satisfaits des résultats puisque nous parvenons à fournir un résultat graphique sans nous soucier du tout de la mise en page.
J'ai essayé Graphviz plusieurs fois, mais je l'ai trouvé assez limité.
ce que j'ai trouvé de mieux pour les diagrammes d'entrée de texte manuel est Tikz Je l'ai utilisé pour états fédérés de micronésie
si la sortie de Graphviz satisfait vos besoins particuliers, c'est probablement très bien. Si vous n'êtes pas tout à fait satisfait de ce qu'il fait et avoir un peu d'expérience TeX - jetez un oeil à Tikz. Il y a beaucoup de paquets différents là-bas, vous ne besoin d'apprendre Tikz pur / PGF (qui peut sembler tout à fait lourd.)
pour info Microsoft Visio Ajouter aux schémas de mise en page avec Graphviz: http://www.calvert.ch/graphvizio/