Graphviz для документации
-
08-07-2019 - |
Вопрос
Я заметил, что 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/