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

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

Ответ 1

ObjectAid UML Explorer

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

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

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

Screenshot

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

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

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

Ответ 2

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


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

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

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

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

инструменты

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

меры

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

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

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

  8. В этом представлении вы найдете ваши классы, как на картинке enter image description here

  9. В представлении щелкните правой кнопкой мыши корневую модель → Новая диаграмма enter image description here.

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

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

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

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

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

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

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

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

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

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

Ответ 3

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

alt text

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

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Пример выходной диаграммы: enter image description here

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

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

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

Ответ 6

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

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

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

Вы можете использовать 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

Флеш-демонстрация в режиме реального времени: http://www.ejb3.org/reverse.swf

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

Ответ 11

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

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

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

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

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

Ответ 12

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

Ответ 13

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

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

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

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

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

Ответ 14

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