Ответ 1
Graphviz - очень простой язык/формат для создания графиков. Если возможностей достаточно для вас, я бы порекомендовал (это так просто, что я бы оценил время, чтобы учиться не более 1 часа).
Я заметил, что 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
) я добавил возможность итеративного прохождения двоичного дерева и создания его DOT-представления, включая информацию о балансировке, красящие или красные узлы и т.д.. (С небольшой осторожностью вы можете легко представлять нулевые узлы-дозор и отображать дерево в надлежащем порядке сортировки.)
В моем тестовом коде после каждой модификации дерева я вызвал - dotGraphString
и сохранил результат в .dot файле, остановился там с точкой останова, а затем открыл этот файл с помощью GraphViz, который достаточно умен, чтобы повторно -принять график DOT при обновлении файла. Этот подход значительно облегчил понимание того, что происходило в дереве и пятнах ошибок при реализации данного алгоритма. Этот подход может быть легко адаптирован для различных типов структур данных и, как правило, намного быстрее и проще, чем создание пользовательского интерфейса только для визуализации структуры.
Graphviz не даст вам графического интерфейса, такого как Visio. Тем не менее, он будет создавать хорошо выложенные графики. Я считаю это наиболее полезным, когда я автоматически генерирую графики через программу (как в случае с doxygen).
Graphviz наиболее полезен для генерации графиков зависимостей (через точку) программным способом. Visitors использует его для визуализации посещений сайта; Hadoop/Cascading использует его для визуализации плана выполнения работ по сокращению карты.
Я широко использую GraphViz для документации и часто рисую отношения или диаграммы архитектуры, используя GraphViz извне, а затем добавляю их на дополнительные страницы в моем коде Doxygen, используя @dot/@enddot. Я также недавно начал использовать @dotfile, который имеет двойное преимущество хранения больших точечных выражений из документов кода и позволяет мне продолжать просматривать их с помощью графического интерфейса GraphViz.
Другим большим преимуществом GraphViz является то, что простой текстовый формат очень хорошо работает с контролем версий. Вы можете видеть изменения в диаграммах в вашем git diff, что было бы невозможно в любом формате бинарной документации. Поскольку я использовал его более чем на протяжении многих лет, это становится для меня более важной особенностью.
Однако для UML я использую настоящий инструмент UML (Enterprise Architect), а не набивка в Visio.
Да, Graphviz легко учится и прост в использовании из программ.
Также посмотрите yEd, что является хорошим инструментом для работы с графиками. В отличие от Visio, он будет загружать и сохранять различные форматы, которые легко редактировать вручную или программировать. Файл авто-макета тоже очень приятный.
Я иногда использовал его для иллюстрации государственных машин. graphviz идеально подходит для этого.
Мы используем graphviz для автоматического создания диаграмм объектов в качестве обратной связи нашего инструмента проверки UML. Мы очень довольны результатами, поскольку нам удается предоставить графический результат, не беспокоясь о макете.
Я много раз пробовал с Graphviz, но нашел, что это довольно ограничивает.
То, что я нашел лучше всего для ручных текстовых диаграмм, Tikz Я использовал его для FSM
Если вывод Graphviz удовлетворяет вашим конкретным потребностям, он, вероятно, прекрасен. Если вы не совсем довольны тем, что он делает, и у вас есть опыт TeX - взгляните на Tikz. Там много разных пакетов, вы не необходимо изучить чистый Tikz/PGF (который может показаться довольно тяжелым).
Соглашаться с консенсусом здесь; Я получаю много пользы от Graphviz. Это действительно полезно для создания простых, а не простых диаграмм. Разработчики программного обеспечения склонны привлекать графики не только в исходном коде, но и в других местах.
Например, прямо сейчас в другом окне браузера, у меня есть стратегия разбиения на группы и объединения, проиллюстрированная с использованием диаграммы graphviz (отображается с помощью плагина слияния BTW).
Graphviz также подходит для UML. См. этот учебник; это хорошее введение в Graphviz.
FYI Microsoft Visio добавляет в схемы компоновки с Graphviz: http://www.calvert.ch/graphvizio/