Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

К вашему сведению Microsoft Visio Addin в диаграммы макета с помощью Graphviz:http://www.calvert.ch/graphvizio/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top