Как генерировать диаграммы UML (особенно диаграммы последовательности) из кода Java? - PullRequest
419 голосов
/ 09 сентября 2008

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

Ответы [ 14 ]

250 голосов
/ 06 января 2012

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 из любого другого представления на диаграмму и связать ее с диаграммой. информация отображается в других видах, где это применимо.
63 голосов
/ 10 июня 2012

EDIT: Если вы дизайнер, то Папирус - ваш лучший выбор, он очень продвинут и полон функций, но если вы просто хотите набросать некоторые UML-диаграммы и простую установку, тогда ObjectAid довольно круто и не требует никаких плагинов. Я только что установил его на Eclipse-Java EE и отлично работает!.


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

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

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

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

Инструменты

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

Steps

  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. Затем начните захват классов на диаграмме из представления

Некоторые функции

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

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

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

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

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

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

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

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

42 голосов
/ 09 сентября 2008

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

alt text

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

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

  • Усовершенствованная обратная инженерия

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

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

5 голосов
/ 18 августа 2016

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

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

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

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

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

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

Станьте первым на GitHub: P

4 голосов
/ 09 апреля 2009

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

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

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

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

3 голосов
/ 28 апреля 2011

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

3 голосов
/ 05 мая 2009

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

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

2 голосов
/ 21 июля 2017

http://www.zenuml.com не генерирует диаграммы UML непосредственно из кода Java, но его DSL подобен Java. Кстати, я создал zenuml:) enter image description here

2 голосов
/ 18 июля 2017

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

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

Для генерации диаграммы зависимостей (UML-диаграмма развертывания) и вы используете maven, перейдите в View -> Tool Windows -> Maven Projects и нажмите Ctrl + Alt + U : enter image description here

Результат: enter image description here

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

...