Как генерировать диаграммы UML (особенно диаграммы последовательности) из кода Java?


434

Как я могу генерировать диаграммы UML (особенно диаграммы последовательности) из существующего кода Java?


3
Это вряд ли произойдет. Настоящий код Java не выглядит так, как выглядит UML-диаграмма.
Стефан Эггермонт,

1
Так много ответов, которые не касаются диаграмм последовательности. Хмф
Билл К

@BillK мой ответ содержит диаграммы последовательности адресов. Это плагин Intellij Idea - stackoverflow.com/a/45239269/529187 .
Сяо Пэн - ZenUML.com

1
Этот вопрос больше подходит для дочернего сайта программного обеспечения Stack Exchange .
Базилик Бурк

Ответы:


257

ObjectAid UML Explorer

Это то, что я использовал. Легко устанавливается из репозитория:

Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

И производит довольно хорошие UML-диаграммы:

Скриншот

Описание с сайта:

ObjectAid UML Explorer отличается от других инструментов UML. Он использует нотацию UML для отображения графического представления существующего кода, который является таким же точным и актуальным, как и ваш текстовый редактор, и в то же время очень простым в использовании. Несколько уникальных функций делают это возможным:

  • Ваш исходный код и библиотеки - это модель, которая отображается, они не перепроектированы в другой формат.
  • Если вы обновите свой код в Eclipse, ваша диаграмма также обновится; нет необходимости перепроектировать исходный код.
  • Рефакторинг обновляет вашу диаграмму, а также ваш исходный код. Когда вы переименовываете поле или перемещаете класс, ваша диаграмма просто отражает изменения, не выходя из синхронизации.
  • Все диаграммы в вашем рабочем пространстве Eclipse обновляются с учетом изменений рефакторинга. При необходимости они проверяются вашей системой контроля версий.
  • Диаграммы полностью интегрированы в Eclipse IDE. Вы можете перетащить классы Java из любого другого представления на диаграмму, и информация, связанная с диаграммой, будет показана в других представлениях, где это применимо.

Проще, чем папирус, но с меньшими возможностями для создания диаграмм.
lcardosobr

В ObjectAid, есть ли способ автоматически организовать диаграмму классов?
Многоразовый

4
Как >>> Создать учетную запись здесь: objectaid.com/login (письмо с кодом активации было отправлено через 10 минут), Нажмите Diagram Add-On, лицензия будет отправлена ​​на ваш электронный адрес. Следуйте этой objectaid.com/installation, чтобы установить ObjectAid, затем установите GEF с download.eclipse.org/tools/gef/updates/releases. Теперь скопируйте и вставьте лицензию из электронного письма в Window-> Preferences-> ObjectAid. Как создать диаграмму? objectaid.com/class-diagram
rluks

Не удается установить в eclipse juno. An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
Gunaseelan

1
Коммерческая версия ObjectAid может работать лучше, когда дело доходит до генерации диаграмм последовательности, а свободную можно использовать только для генерации диаграмм классов !!
whoami

63

РЕДАКТИРОВАТЬ: Если вы дизайнер, то Papyrus - ваш лучший выбор, он очень продвинутый и полон функций, но если вы просто хотите набросать некоторые UML-диаграммы и простую установку, тогда ObjectAid довольно крутой и не требует никаких плагинов. только что установил его на Eclipse-Java EE и отлично работает!


ОБНОВЛЕНИЕ 11 октября 2013

Мой оригинальный пост был в июне 2012 года, многое изменилось, многие инструменты выросли, а другие нет. Поскольку я вернусь к некоторому моделированию и также получу некоторые ответы на этот пост, я решил снова установить папирус и снова исследую другие возможные решения для моделирования UML. Генерация UML (с функцией синхронизации) действительно важна не для разработчика программного обеспечения, а для среднего разработчика.

Хотелось бы, чтобы у папируса был простой способ перевести классы обратного инженера в диаграмму классов UML, и было бы очень здорово, если бы этот реверс-инжиниринг имел функцию синхронизации, но, к сожалению, проект папируса полон функций, и я думаю, что у разработчиков там уже много под рукой, так как действия, которые вы выполняете над папирусом, могут не дать вам никакого ответа, и просто ничего не происходит, но это все равно выходит за рамки этого вопроса.

Ответ (11 октября 2013 г.)

инструменты

  1. Скачать Папирус
  2. Перейдите в Справка -> Установить новое программное обеспечение ...
  3. В раскрывающемся списке Работа с: выберите - Все доступные сайты--
  4. В фильтре введите Папирус
  5. После завершения установки перезапустите Eclipse
  6. Повторите шаги 1-3 и на этот раз установите Modisco

меры

  1. В вашем Java-проекте (предположим, он называется MyProject) создайте папку, например, UML
  2. Щелкните правой кнопкой мыши по имени проекта -> Обнаружение -> Discoverer -> Обнаружение Java и модели инвентаризации из проекта Java, и будет создан файл с именем MyProject_kdm.xmi. введите описание изображения здесь
  3. Щелкните правой кнопкой мыши по имени файла проекта -> новый -> модель папируса -> и назовите его MyProject.
  4. Переместите три сгенерированных файла MyProject.di, MyProject.notation, MyProject.uml в папку UML
  5. Щелкните правой кнопкой мыши MyProject_kdm.xmi -> Discovery -> Discoverer -> снова обнаружить модель UML из кода KDM, и вы получите диалоговое окно свойств, в котором для свойства сериализации установлено значение TRUE, чтобы создать файл с именем MyProject.uml. введите описание изображения здесь

  6. Переместите сгенерированный MyProject.uml, сгенерированный в корне, в папку UML, Eclipse спросит вас, хотите ли вы заменить его, нажмите «Да». Мы сделали здесь то, что мы заменили пустую модель на сгенерированную.

  7. ALT + W -> показать вид -> папирус -> модельер

  8. В этом представлении вы найдете ваши классы, как на картинке введите описание изображения здесь

  9. В представлении щелкните правой кнопкой мыши корневую модель -> Новая диаграмма. введите описание изображения здесь

  10. Затем начните захват классов на диаграмму из представления

Некоторые особенности

  • Чтобы показать элементы класса (переменные, функции и т. Д.) Щелкните правой кнопкой мыши на любом классе -> Фильтры -> показать / скрыть содержимое Вуаля !!

  • Вы можете иметь стандартные настройки цвета в Окне -> Переопределения -> Папирус -> Диаграмма классов.

  • один очень важный параметр - Arrange, когда вы отбрасываете классы, они получают тесный щелчок правой кнопкой мыши на любом пустом месте на диаграмме классов и нажимают Arrange All.

  • Стрелки в представлении проводника модели можно взять на диаграмме, чтобы показать обобщение, реализацию и т. Д.

  • После всего этого ваши настройки будут отображать диаграммы как введите описание изображения здесь

  • Синхронизация недоступна, насколько я знаю, вам нужно вручную импортировать любые новые классы.

Вот и все, и не покупайте коммерческие продукты, если они вам действительно не нужны, папирус на самом деле великолепен и совершенен, вместо того, чтобы пожертвовать или что-то в этом роде.

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


Я искал Модиско в затмении. это обнаружилось с 0 intallable. Этот проект жив или забран? Стало ли это платным инструментом? Папирус не побежит без этого?
R-JANA

Используется STS и неудачно.
R-JANA

@ R-JANA Я не знаю, каково текущее состояние Модиско, но я возвращаюсь к этому посту КАК МОЖНО СКОРЕЕ, потому что скоро собираюсь установить папирус и мне придется обновить его. Я советую вам попробовать установить папирус, имея в виду мой текущий пост; Я думаю, что много изменений произошло с тех пор, как я опубликовал этот ответ.
Исмаил Мармуш

Существует дополнительный плагин для Papyrus, который добавляет функции обратного инжиниринга Java: wiki.eclipse.org/Java_reverse_engineering . Благодаря этому проще добавлять элементы диаграммы из источника, вы даже можете перетаскивать классы в диаграмму.
Маркус Энде

42

Какая у вас кодовая база? Java или C ++?

альтернативный текст

eUML2 для Java - это мощный UML-моделлер, разработанный для Java-разработчика в Eclipse. Бесплатная версия может быть использована для коммерческого использования. Он поддерживает следующие функции:

  • CVS и поддержка команды
  • Предназначен для большого проекта с несколькими настраиваемыми видами моделей
  • Гелиос-совместимый
  • Синхронизация кода / модели в реальном времени
  • Совместимость с UML2.1 и поддержка OMG XMI
  • Поддержка JDK 1.4 и 1.5
  • Коммерческое издание предоставляет:

  • Расширенный обратный инжиниринг

  • Мощные инструменты для анализа истинных зависимостей
  • UML Профиль и MDD
  • Инструменты базы данных
  • Поддержка настраиваемых шаблонов

20
Это очень сложный инструмент для установки. Я пытался около получаса без успеха. Любые другие предложения?
Джонатан

2
Не могу найти eUML2 - мой менеджер обновлений, и я не хочу упаковывать новую установку Eclipse только для этой функции. Я использую Eclipse "Helios" и иду по этому пути: Справка - Установка нового программного обеспечения - Helios download.eclipse.org/releases/helios - Моделирование
OneWorld

3
Я знаю, что это старый пост, но большинство проблем с установкой eUML2, похоже, решены.
Энди

7
eUML - это настоящее дерьмо. Это изменило мой формат кода и добавило теги везде. Мой код теперь настолько грязный, что я предпочитаю отменить изменения. Проблема в том, что нет отмены и ваш код изменен навсегда. Я бы порекомендовал сделать резервную копию вашего проекта перед использованием eUML crapper :-)
UML GURU

31
Вы когда-нибудь слышали о контроле версий?
пожрала Элизиум

9

Я один из авторов, поэтому ответ может быть предвзятым. Это с открытым исходным кодом (Apache 2.0), но плагин не является бесплатным. Вам не нужно платить (очевидно), если вы клонируете и создаете его локально.

В Intellij IDEA ZenUML может генерировать диаграмму последовательности из кода Java. введите описание изображения здесь

Проверьте это на https://plugins.jetbrains.com/plugin/12437-zenuml-support

Исходный код: https://github.com/ZenUml/jetbrains-zenuml


1
@hc_dev, спасибо за напоминание. Добавил эту заметку.
Сяо Пэн - ZenUML.com

7

Как насчет PlantUML ? Это не для реверс-инжиниринга !!! Это для разработки, прежде чем код.


4
Не отвечает на вопрос, который явно требует инструмента обратного инжиниринга.
Jmite

1
Я не уверен, что это совершенно правильно. PlantUML также может описывать код с помощью диаграмм. Попробуйте открыть соответствующее представление в файле класса
Эрез А. Корн

1
Да, я могу убедиться, что диаграммы классов автоматически создаются из файлов Java в плагине Eclipse.
HRJ

1
Я попробовал это, но если ваш код PlantUML становится слишком сложным, вы тратите все свое время на то, чтобы выяснить, почему чертеж не отображается должным образом и имеет глюки. Это хорошо только для небольших диаграмм.
trusktr

В Intellij, объединяя PlantUML с Sketch It! и graphviz может генерировать диаграммы классов из кода. Лучше всего подходит для небольших пакетов, pngs не создаются полностью, когда диаграммы становятся слишком большими.
Мелисса Лоос

6

Я разработал плагин maven, который можно запускать из CLI в качестве цели плагина или импортировать как зависимость и программно использовать синтаксический анализатор, @see Main#main()чтобы понять, как это сделать.

Он рекурсивно отображает src-код PlantUML нужных пакетов, которые вы можете редактировать вручную, если это необходимо (надеюсь, вы этого не сделаете). Затем, вставив код на страницу plantUML или загрузив jar-файл завода, вы можете отобразить диаграмму UML в виде изображения в формате png.

Проверьте это здесь https://github.com/juanmf/Java2PlantUML

Пример выходной диаграммы: введите описание изображения здесь

Любой вклад приветствуется. У него есть набор фильтров, которые настраивают вывод, но я пока не раскрывал их в параметрах CLI плагина.

Важно отметить, что он не ограничивается вашими * .java файлами, он также может отображать диаграммы UML src из ваших зависимостей maven. Это очень удобно для понимания библиотек, от которых вы зависите. Он на самом деле проверяет скомпилированные классы с отражением, поэтому источник не нужен

Станьте первым, кто сыграет на GitHub: P


4

Я бы порекомендовал EclipseUML от Omondo для общего пользования, хотя несколько месяцев назад у меня были некоторые проблемы с моими веб-проектами. В какой-то момент у них было бесплатное издание, но якобы это больше не рекламируется.

Если вы действительно заинтересованы в диаграммах последовательности обратного инжиниринга из исходного кода, я бы порекомендовал jTracert .

Что касается самих проектов Eclipse, то проект Eclipse UML2 Tools может поддерживать реверс-инжиниринг, хотя я никогда не видел его применения на практике.

MoDisco проект (модель Discovery) Затмения GMT проект , кажется, яснее в достижении вашей цели. Перечень конкретных технических средств будет хорошее место , чтобы начать с.


Не нашли эту функцию обратного инжиниринга в UML2 Tools; (
OneWorld

2
jTracert больше не выпускается Преемник jTracert, нового инструмента под названием jSonde, теперь лицензирован под лицензией GPL v3. jsonde.com
Альпийский

Омондо является лучшим для Java. Действительно чистая интеграция, без сочетания модели и кода. Превосходно, но слишком дорого. Нам разрешили купить только одну лицензию, но мы более 20 разработчиков, использующих ее, потому что безопасность основана на имени пользователя. Это означает, что если 10 пользователей имеют одинаковый логин, то все они могут его использовать. Мы получили лицензию с именем администратора :-)
UML GURU

jSondeНе доступна в URL , показанной выше. Вы можете найти веб-сайт и исходный код в Github: github.com/bedrin/jsonde .
Хайме

3

Я обнаружил, что плагин Green очень прост в использовании и генерирует диаграмму классов из исходного кода. Попробуй :). Просто скопируйте плагин в каталог плагинов.


2
Зеленый кажется, что у него есть потенциал. Однако на моей работе у нас есть проект, который имеет ~ 700 классов, и он немного пыхтит, а затем умирает.
Аппак

3

Вы также можете попробовать UML-модельер NetBeans. Я использовал его для создания Javacode, который я использовал в своих проектах затмения. Вы даже можете импортировать проекты eclipse в netbeans и синхронизировать настройки eclipse с настройками проекта netbeans.

Я попробовал несколько моделей UML для затмения и не был удовлетворен ими. Они были либо нестабильны, сложны или просто безобразны. ;-)


Просто хотел отметить, что я также использовал UML-модельер Netbeans и не сталкивался с проблемами в моих относительно простых случаях. Пользовательский интерфейс не слишком интуитивно понятен, но это совершенно нормально. Модельер также имеет некоторые расширенные функции, такие как создание кода сущности JPA из модели, если я правильно помню.
Туукка Мустонен

1
К сожалению, похоже, что плагин UML больше не поддерживается. Переписан плагин , видимо , ведется , но это не поможет никому , так как они сбросили старый плагин , прежде чем переписывание было завершено.
Аппак

Это облом :-( Будем надеяться, что переписывание не займет много времени :-)
Патрик Корнелиссен

1
UML для NetBeans создавался VP. Они больше не будут этого делать, теперь доступен только их VP UML со слабой бесплатной версией.
Гангнус

2

Использование IntelliJ IDEA. Чтобы сгенерировать диаграмму классов, выберите пакет и нажмите Ctrl+ Alt+ U:введите описание изображения здесь

По умолчанию отображаются только имена классов, а не все зависимости. Чтобы изменить его: щелкните правой кнопкой мыши -> Показать категории ... и Показать зависимости: введите описание изображения здесь

Чтобы обобщить диаграмму зависимостей (UML Deployment chart) и использовать maven, перейдите в View -> Tool Windows -> Maven Projects и нажмите Ctrl+ Alt+ U: введите описание изображения здесь

Результат: введите описание изображения здесь

Также можно генерировать больше других диаграмм. Смотрите документацию .


2

Вы можете использовать 30-дневную ознакомительную версию EclipseUML для Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Это не последняя версия 3.6, но она довольно хорошая и не требуется покупать его для тестирования и обратного проектирования.

Обратный инжиниринг: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

Демо-версия Flash: http://www.ejb3.org/reverse.swf

EclipseUML Omondo - лучший в мире инструмент для Java. Похоже, только eUML конкурирует с ним на этом рынке живой синхронизации Java, но eUML добавляет теги модели в код, что на самом деле очень и очень плохо, и для меня это определенно бесполезно.


1

Безусловно, лучший инструмент, который я использовал для реверс-инжиниринга, и круговое отключение Java -> UML - это Borland's Together . Он основан на Eclipse (не просто на одном плагине) и действительно хорошо работает.


Вместе теперь Micro Focus Together
Хайме

0

Я предлагаю PlantUML. Этот инструмент очень полезен и прост в использовании. У PlantUML есть плагин для Netbeans, который вы можете создавать UML-диаграмму из своего Java-кода.

Вы можете установить плагин PlantUML в NetBeans следующим способом:

Меню Netbeans -> Инструменты -> Плагин

Теперь выберите «Доступные плагины», а затем найдите PlantUML и установите его.

Для получения дополнительной информации перейдите на сайт: www.plantuml.com


0

Я заметил, что плагин SequenceDiagram для Intellij также является хорошим вариантом.


1
Проверьте это для генерации: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/… (обратный инжиниринг) && для зарисовки: - guru99.com/ best-uml-tools.html (Помните, что не все бесплатные инструменты генерируют диаграммы последовательности, могут поддерживать только диаграммы классов, я использовал SequenceDiagram для генерации и draw.io для ручного создания диаграмм UML)
whoami,

0

Еще одним инструментом моделирования для Java является (мой) сайт GitUML . Генерируйте UML-диаграммы из кода Java или Python, хранящегося в репозиториях GitHub.

Одна из ключевых идей GitUML - решить одну из проблем с «документацией»: эти диаграммы всегда устарели. С GitUML диаграммы автоматически обновляются, когда вы нажимаете код, используя git.

Просмотрите сообщества UML-диаграммы, там есть несколько шаблонов проектирования Java. Просматривайте популярные репозитории GitHub и визуализируйте в них архитектуру и шаблоны.

браузер диаграмм

Создание диаграмм с помощью точки и нажмите. Редактора перетаскивания нет, просто нажмите на классы в дереве репозитория, которые вы хотите визуализировать:

выберите классы Java, которые вы хотите визуализировать

Базовая технология основана на PlantUML, что означает, что вы можете улучшать свои диаграммы с помощью дополнительной разметки PlantUML.


0

Существует бесплатный инструмент с именем binarydoc, который может генерировать UML Sequence Diagramили Control Flow Graph( CFG) из bytecode(вместо исходного кода) метода Java.

Вот пример двоичной диаграммы, созданной для метода java java.net.AbstractPlainSocketImpl.getInputStream :

  • График потока управления метода java.net.AbstractPlainSocketImpl.getInputStream:

График потока управления

  • Схема последовательности UML метода java.net.AbstractPlainSocketImpl.getInputStream:

Диаграмма последовательности UML

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.