Графвиз для документации - PullRequest
17 голосов
/ 20 ноября 2008

Я заметил, что doxygen использует библиотеку graphviz для создания диаграмм. Вы когда-нибудь использовали graphviz для создания документации? Стоит ли изучать graphviz для целей документации, выходящей за рамки doxygen? Или мне лучше придерживаться стандартного пакета моделирования данных, такого как Visio?

Я понимаю ее достоинства как графической библиотеки, но стоит ли пытаться представить более сложный UML (или подобный)?

Ответы [ 11 ]

21 голосов
/ 20 ноября 2008

Graphviz - очень очень простой язык / формат для создания графиков. Если возможностей достаточно для вас, я бы порекомендовал его (это так просто, что я бы оценил время обучения не более 1 часа).

12 голосов
/ 10 июня 2009

Если вы просто говорите о создании диаграмм наследования / совместной работы, как это делает Doxygen, стоит изучить среды разработки, которые сделают это для вас автоматически. Для документации с нуля или с ручной настройкой я использую OmniGraffle (так как я на Mac), который я настоятельно рекомендую.

Однако GraphViz и DOT могут быть очень полезны не только для документации, но и для отладки и понимания кода, особенно для структур данных. Обычно я не пишу DOT вручную, но автоматически сгенерированный DOT может стоить минимальных усилий.

Одно из мест, где я нашел GraphViz чрезвычайно полезным, - это понимание и отладка алгоритмов двоичного дерева поиска. Я разрабатываю CHDataStructures.framework , среду Objective-C с открытым исходным кодом, которая включает в себя несколько разновидностей BST. Я реализовал два метода: -(NSString*)dotGraphString в родительском классе и -(NSString*)dotGraphStringForNode: в каждом дочернем классе. Примерно в 30-40 строках кода (большая часть - внизу CHAbstractBinarySearchTree.m), я добавил возможность итеративного обхода двоичного дерева и создания его точечного представления, включая информацию о балансировке, окрашивание узлов в красный или черный цвет и т. Д. . (С некоторой тщательностью вы можете легко представить нулевые сторожевые узлы и отобразить дерево в надлежащем отсортированном порядке.)

В моем тестовом коде после каждой модификации дерева я вызывал - dotGraphString и сохранял результат в файле .dot, останавливался там с точкой останова, затем открывал этот файл с помощью GraphViz, который достаточно умен, чтобы -отобразить график DOT при обновлении файла. Благодаря такому подходу стало намного проще видеть, что происходит в дереве, и обнаруживать ошибки в моей реализации данного алгоритма. Этот подход может быть довольно легко адаптирован для различных типов структур данных и, как правило, гораздо быстрее и проще, чем создание пользовательского интерфейса только для визуализации структуры.

10 голосов
/ 16 декабря 2008

Graphviz не собирается предоставлять вам удобный графический интерфейс, как Visio. Тем не менее, он будет давать хорошо продуманные графики. Я считаю это наиболее полезным, когда я генерирую графики автоматически с помощью программы (как в случае с Doxygen).

6 голосов
/ 15 января 2009

Я широко использую GraphViz для документации и часто зарисовываю взаимосвязи или диаграммы архитектуры, используя GraphViz извне, а затем добавляю их на дополнительные страницы в моем коде Doxygen с помощью @ dot / @ enddot. Я также недавно начал использовать @dotfile, который имеет двойное преимущество: он позволяет не использовать операторы больших точек в документах кода и продолжать просматривать их с помощью графического интерфейса GraphViz.

Другим большим преимуществом GraphViz является то, что простой текстовый формат очень хорошо работает с контролем версий. Вы можете увидеть изменения в диаграммах в вашем git diff, которые были бы невозможны для любого двоичного формата документации. По мере того, как я использовал его все больше и больше, это становится для меня более важной особенностью.

Однако для UML я использую настоящий инструмент UML ( Enterprise Architect ), а не разбираюсь в Visio.

6 голосов
/ 16 декабря 2008

Graphviz наиболее полезен для программной генерации графиков зависимостей (через точку). Посетители использует его для визуализации посещений сайта; Hadoop / Cascading использует его для визуализации плана выполнения заданий сокращения карты.

4 голосов
/ 16 декабря 2008

Да, graphviz легок в освоении и прост в использовании из программ.

Также посмотрите на yEd , который является хорошим инструментом для работы с графиками. В отличие от Visio, он будет загружать и сохранять различные форматы, которые легко редактировать вручную или создавать программно. Авто-макет тоже неплохо.

3 голосов
/ 16 декабря 2008

Я иногда использовал его для иллюстрации конечных автоматов. Graphviz идеально подходит для этого.

2 голосов
/ 28 июня 2011

Я несколько раз пробовал использовать Graphviz, но нашел это довольно ограниченным.

Что я нашел лучше всего для диаграмм ввода текста вручную, это Tikz Я использовал это для FSM's

Если вывод Graphviz удовлетворяет вашим конкретным потребностям, это, вероятно, нормально. Если вы не совсем довольны тем, что он делает, и у вас есть опыт работы с TeX - взгляните на Тикза. Там много разных пакетов, вы не нужно выучить чистый тикз / пгф (который может показаться довольно тяжелым).

2 голосов
/ 11 июня 2009

Мы используем graphviz для автоматической генерации диаграмм объектов в качестве обратной связи с нашим инструментом проверки UML. Мы действительно довольны результатами, так как нам удается обеспечить графический результат, не беспокоясь о макете.

2 голосов
/ 15 января 2009

Согласен с консенсусом здесь; Я получаю много пользы от Graphviz. Это действительно хорошо для создания простых и не очень простых диаграмм. Разработчики программного обеспечения, как правило, привлекают графики не только в исходном коде, но и в других местах.

Например, прямо сейчас в другом окне браузера у меня есть стратегия ветвления и слияния нашей группы, проиллюстрированная с помощью диаграммы graphviz (отображаемой с помощью плагина слияния BTW).

Graphviz также хорош для UML. Смотрите этот урок ; это также хорошее введение в Graphviz.

...