Как я могу сгенерировать диаграммы UML (особенно диаграммы последовательностей) из существующего кода Java?
Так много ответов, которые не касаются диаграмм последовательности. Хммм
@BillK, мой ответ - это диаграммы последовательности адресов. Это плагин Intellij Idea - stackoverflow.com/a/45239269/529187.
Этот Вопрос больше подходит для дочернего сайта Обмен стеками рекомендаций по программному обеспечению.
Существует инструмент под названием binarydoc, который может генерировать диаграммы UML, включая UML sequence diagram, Control Flow Graph (CFG), из Java bytecode (не из исходного кода). Вот пример страницы схемы UML для java-метода java.net.AbstractPlainSocketImpl.getInputStream




Какая у вас кодовая база? Java или C++?
eUML2 for Java is a powerful UML modeler designed for Java developper in Eclipse. The free edition can be used for commercial use. It supports the following features:
- CVS and Team Support
- Designed for large project with multiple and customizable model views
- Helios Compliant
- Real-time code/model synchronization
- UML2.1 compliant and support of OMG XMI
- JDK 1.4 and 1.5 support
The commercial edition provides:
Advanced reversed engineering
- Powerful true dependency analyze tools
- UML Profile and MDD
- Database tools
- Customizable template support
Это очень сложный в установке инструмент. Я пытался около получаса безуспешно. Есть другие предложения?
Используйте Yoxos для управления зависимостями в Eclipse, это действительно здорово! eclipsesource.com/en/yoxos/yoxos-ondemand
Не могу найти eUML2 - это мой менеджер обновлений, и я не хочу упаковывать новую установку Eclipse только для этой функции. Я использую Eclipse "Helios" и иду по следующему пути: Помощь - Установить новое программное обеспечение - Helios download.eclipse.org/releases/helios - Моделирование
Я знаю, что это старый пост, но большинство проблем с установкой eUML2, похоже, уже решены.
eUML - настоящая чушь. Он изменил мой формат кода и повсюду добавил теги. Мой код теперь настолько грязный, что я предпочитаю отменить изменение. Проблема в том, что отмены нет, и ваш код меняется навсегда. Я бы порекомендовал сделать резервную копию вашего проекта перед использованием крапера eUML :-)
Вы когда-нибудь слышали о контроле версий?
Я установил что-то под названием «UML2 Extender SDK» через Help - Install new Software - Modeling. Установка прошла нормально, но я не вижу диаграмм eUML2, описанных в руководство
ужасное программное обеспечение, все установлено нормально, но сам инструмент не очень хорош
Программа установки не смогла разрешить для меня его зависимость от Batik. Также инструкции на домашней странице сильно устарели. Несомненно, боль в заднице.
Версия Juno не имеет ознакомительной версии, только лицензионную.
Я использовал eUML2, и его было действительно легко загрузить, установить и использовать. По крайней мере, для Галилея и Ганимеда все работает нормально.
eUML добавляет теги модели прямо в мой код. Таким образом, он меняет структуру моего кода, даже не спрашивая, согласен ли я. Если я проведу рефакторинг, я потеряю свои диаграммы, которые больше нельзя будет открыть. Обратное показывает больше, а иногда и меньше методов, чем существует на самом деле. и т.д ..... у этого инструмента был некоторый потенциал, но ошибки так и не были исправлены. Это все тот же выпуск с 2007 года. Сейчас в моей компании это не работает, и мы перешли на другие инструменты.
eUML2 отказывается устанавливать в Juno.
Безусловно, лучший инструмент, который я использовал для обратного проектирования и циклического переключения java -> UML, - это Вместе Borland. Он основан на Eclipse (а не на отдельном плагине) и действительно хорошо работает.
Вместе теперь Micro Focus вместе
ссылка больше не работает
Я бы порекомендовал EclipseUML от Omondo для общего использования, хотя несколько месяцев назад у меня были некоторые проблемы с моими веб-проектами. В какой-то момент у них была бесплатная версия, но якобы она больше не продвигается.
Если вам действительно нравятся диаграммы последовательности обратного проектирования из исходного кода, я бы порекомендовал jTracert.
Что касается самих проектов Eclipse, проект Инструменты Eclipse UML2 может поддерживать обратное проектирование, хотя я никогда не видел его использования на практике.
Проект MoDisco (Model Discovery) Eclipse GMT кажется более ясным в достижении вашей цели. список инструментов для конкретных технологий было бы хорошим местом для начала.
Не нашли эту функцию обратного проектирования в UML2 Tools; (
jTracert больше не поддерживается. Преемник jTracert, новый инструмент под названием jSonde теперь находится под лицензией GPL v3. jsonde.com
Omondo лучше всего подходит для java. Действительно чистая интеграция, без смешения модели и кода. Превосходно, но слишком дорого. Нам разрешили купить только одну лицензию, но ее используют более 20 разработчиков, потому что безопасность основана на имени пользователя для входа. Это означает, что если 10 пользователей имеют один и тот же логин, то все они могут его использовать. Получили лицензию с логином Admin :-)
jSonde недоступен по указанному выше URL-адресу. Вы можете найти интернет сайт и исходный код в Github: github.com/bedrin/jsonde.
Вы также можете попробовать UML-модельер netbeans. Я использовал его для создания javacode, который я использовал в своих проектах eclipse. Вы даже можете импортировать проекты eclipse в netbeans и синхронизировать настройки eclipse с настройками проекта netbeans.
Я попробовал несколько моделей UML для eclipse, и они мне не понравились. Они были либо нестабильными, либо сложными, либо просто уродливыми. ;-)
Просто хотел упомянуть, что я также использовал модельер UML Netbeans и не сталкивался с проблемами в моих относительно простых случаях. Пользовательский интерфейс не слишком интуитивно понятен, но вполне нормален. Моделлер также имеет некоторые расширенные функции, такие как создание кода объекта JPA из модели, если я правильно помню.
К сожалению, похоже, что плагин UML больше не поддерживается. переписать плагин, по-видимому, в процессе, но это никому не помогает, так как старый плагин был удален до того, как перезапись была завершена.
Это облом :-( Будем надеяться, что перезапись не займет много времени :-)
UML для NetBeans создавал вице-президент. Они больше не будут этого делать, теперь доступен только их VP UML со слабой бесплатной версией.
Как насчет PlantUML? Это не для реверс-инжиниринга !!! Это для инженерии, прежде чем писать код.
Не отвечает на вопрос, который явно требует инструмента обратного проектирования.
Я не уверен, что это совсем правильно. PlantUML также может описывать код с помощью диаграмм. Попробуйте открыть соответствующее представление в файле класса
Да, я могу проверить, что диаграммы классов автоматически создаются из файлов Java в подключаемом модуле Eclipse.
Я пробовал это, но если ваш код PlantUML становится слишком сложным, вы тратите все свое время, пытаясь выяснить, почему рисунок не отображается должным образом и имеет сбои. Подходит только для небольших диаграмм.
Вы можете использовать 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 добавляет теги модели в код, что на самом деле очень-очень плохо и окончательно не подходит для меня.
Я нашел плагин Зеленый очень простым в использовании и для создания диаграммы классов из исходного кода. Попробуйте :). Просто скопируйте плагин в свой каталог плагинов.
Зеленый кажется, что у него есть потенциал. Однако в моей работе у нас есть проект, который имеет ~ 700 классов, и он немного пыхтит, а затем умирает.
Это то, что я использовал. Это легко установлены из репозитория:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
И создает довольно красивые диаграммы UML:

The ObjectAid UML Explorer is different from other UML tools. It uses the UML notation to show a graphical representation of existing code that is as accurate and up-to-date as your text editor, while being very easy to use. Several unique features make this possible:
- Your source code and libraries are the model that is displayed, they are not reverse engineered into a different format.
- If you update your code in Eclipse, your diagram is updated as well; there is no need to reverse engineer source code.
- Refactoring updates your diagram as well as your source code. When you rename a field or move a class, your diagram simply reflects the changes without going out of sync.
- All diagrams in your Eclipse workspace are updated with refactoring changes as appropriate. If necessary, they are checked out of your version control system.
- Diagrams are fully integrated into the Eclipse IDE. You can drag Java classes from any other view onto the diagram, and diagram-related information is shown in other views wherever applicable.
Проще, чем Papyrus, но с меньшими возможностями для создания диаграмм.
В ObjectAid есть ли способ автоматически упорядочить диаграмму классов?
HowTo >>> Создайте учетную запись здесь: objectaid.com/login (письмо активации было отправлено через 10 минут), нажмите «Надстройка диаграммы», лицензия будет отправлена на ваш адрес электронной почты. Следуйте этому objectaid.com/installation, чтобы установить ObjectAid, затем установите GEF из download.eclipse.org/tools/gef/updates/releases. Теперь скопируйте и вставьте лицензию из электронной почты в Window-> Preferences-> ObjectAid Как создать диаграмму? objectaid.com/class-diagram
Невозможно установить в 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.
а как насчет ассоциаций классов? может этот плагин сделать это? и если да, то как?
Ссылка не для вашего браузера, а для копирования в eclipse
Удивительно, но ObjectAID не экспортирует модели в xmi. Подумайте об этом, если хотите попробовать jhipster-uml
Коммерческая версия ObjectAid может работать лучше, когда дело доходит до генерации диаграмм последовательности, а бесплатная версия может использоваться только для генерации диаграмм классов !!
Невозможно заставить его отображать ассоциации между классами, а также не визуализировать пакеты, если вы вручную не перетащите пакеты в рабочую область и вручную не упорядочите их содержимое. Авторы говорят, что «мы решили не отображать классы внутри их пакета, потому что это просто не масштабируется для многих классов или классов с множеством функций». ИМО, это упущенная возможность - пакеты и ассоциации - это приятные вещи, которые можно показать на диаграммах, например. (мой) инструмент gituml.com делает такие визуализации gituml.com/viewz/23
Обновлено: Если вы дизайнер, то Папирус - ваш лучший выбор, он очень продвинутый и полный функций, но если вы просто хотите набросать некоторые диаграммы UML и простую установку, тогда ObjectAid довольно крутой и не требует каких-либо плагинов, которые я только что установил. это поверх Eclipse-Java EE и отлично работает !.
ОБНОВЛЕНИЕ 11 октября 2013 г.
Мой исходный пост был в июне 2012 года: многое изменилось, многие инструменты выросли, а другие - нет. Поскольку я вернусь к моделированию и получу ответы на этот пост, я решил снова установить papyrus и снова исследовать другие возможные решения для моделирования UML. Генерация UML (с функцией синхронизации) действительно важна не для разработчика программного обеспечения, а для среднего разработчика.
Я бы хотел, чтобы у папируса был простой способ обратного преобразования классов инженера в диаграмму классов UML, и было бы очень круто, если бы в этом обратном инжиниринге была функция синхронизации, но, к сожалению, проект папируса полон функций, и я думаю, что у разработчиков уже много под рукой, так как также многие Действия, которые вы выполняете над папирусом, могут не дать вам никакого ответа, и просто ничего не произойдет, но это в любом случае выходит за рамки этого вопроса.
Ответ (11 октября 2013 г.)
Инструменты
Шаги

Щелкните правой кнопкой мыши MyProject_kdm.xmi -> Discovery -> Discoverer -> Откройте для себя модель UML из кода KDM снова, вы получите диалоговое окно свойств, в котором для свойства сериализации установите значение TRUE, чтобы сгенерировать файл с именем MyProject.uml

Переместите сгенерированный файл MyProject.uml, созданный в корневом каталоге, в папку UML, Eclipse спросит вас, хотите ли вы заменить его, нажмите «Да». Здесь мы заменили пустую модель на сгенерированную.
ALT + W -> показать вид -> папирус -> проводник модели
В этом представлении вы найдете свои классы, как на картинке

В представлении щелкните правой кнопкой мыши корневую модель -> Новая диаграмма
.
Затем начните захват классов на диаграмму из представления
Некоторые особенности
Чтобы отобразить элементы класса (переменные, функции и т. д.) Щелкните правой кнопкой мыши любой класс -> Фильтры -> показать / скрыть содержимое Вуаля !!
У вас могут быть настройки дружественного цвета по умолчанию из Window -> pereferences -> papyrus -> class diagram
одна очень важная настройка - Договариваться, когда вы отбрасываете классы, они становятся тесными, щелкните правой кнопкой мыши любое пустое место на диаграмме классов и нажмите `` Упорядочить все ''
Стрелки в обзоре модели можно переместить на диаграмму, чтобы показать обобщение, реализацию и т. д.
После всего этого в ваших настройках появятся диаграммы вроде

Насколько я знаю, синхронизация недоступна, вам придется вручную импортировать любые новые классы.
Вот и все, и не покупайте коммерческие продукты, если он вам действительно не нужен, папирус на самом деле великолепен и сложен, вместо этого жертвуйте или что-то в этом роде.
Отказ от ответственности: я не имею отношения к людям, занимающимся папирусом, на самом деле, мне сначала не нравился папирус, пока я не провел много исследований и не испытал его с некоторым терпением. И еще вернусь к этому посту, когда попробую другие бесплатные инструменты.
Я искал Modisco в eclipse. он появился с 0 intallable. Этот проект жив или забрали? Стало ли это платным инструментом. Неужели Папирус без этого не запустится?
Использовал СТС и неудачно.
@ R-JANA Я не знаю, каков текущий статус Modisco, но я вернусь к этому посту как можно скорее, потому что я собираюсь установить папирус в ближайшее время, и мне придется его обновить. Я советую вам попробовать установить папирус, имея в виду мой текущий пост; Я думаю, что с тех пор, как я опубликовал этот ответ, произошло много изменений.
Для Papyrus есть дополнительный плагин, который добавляет функциональность обратного проектирования Java: wiki.eclipse.org/Java_reverse_engineering. Благодаря этому намного проще добавлять элементы диаграммы из источника, вы даже можете перетаскивать классы в диаграмму.
Я предлагаю PlantUML. этот инструмент очень полезен и прост в использовании. У PlantUML есть плагин для Netbeans, с помощью которого вы можете создавать диаграмму UML из вашего Java-кода.
вы можете установить плагин PlantUML в netbeans следующим способом:
Меню Netbeans -> Инструменты -> Плагин
Теперь выберите «Доступные плагины», затем найдите PlantUML и установите его.
Для получения дополнительной информации посетите веб-сайт: www.plantuml.com
Я разработал плагин maven, который может, которые можно запускать из CLI как цель плагина или импортировать как зависимость и программно использовать синтаксический анализатор @see Main#main(), чтобы понять, как это сделать.
Это рекурсивно отображает PlantUML src-код желаемых пакетов, который вы можете редактировать вручную при необходимости (надеюсь, вы этого не сделаете). Затем, вставив код на страницу plantUML или загрузив jar-файл plant, вы можете визуализировать диаграмму UML как изображение PNG.
Посмотрите здесь https://github.com/juanmf/Java2PlantUML
Любой вклад более чем приветствуется. В нем есть набор фильтров, которые настраивают вывод, но я еще не раскрыл их в параметрах интерфейса командной строки плагина.
Важно отметить, что он не ограничивается вашими * .java файлами, он также может отображать UML-диаграммы src из ваших зависимостей maven. Это очень удобно для понимания библиотек, от которых вы зависите. На самом деле он проверяет скомпилированные классы с отражением, поэтому источник не нужен
Будь первым, кто разместит его на GitHub: P
Используя IntelliJ IDEA. Чтобы сгенерировать диаграмму классов, выберите пакет и нажмите Ctrl + Alt + U: 
По умолчанию он отображает только имена классов, а не все зависимости. Чтобы изменить это: щелкните правой кнопкой мыши -> Показать категории ... и Показать зависимости:

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

Также можно создать больше других диаграмм. См. документация.
Плагин SequenceDiagram для IntelliJ Idea (протестирован в версии сообщества) действительно хорошо справляется со своей задачей. спасибо @ dean-jain из этот вопрос
I am one of the authors, so the answer can be biased. It is open-source (Apache 2.0), but the plugin is not free. You don't have to pay (obviously) if you clone and build it locally.
В Intellij IDEA ZenUML может генерировать диаграмму последовательности из кода Java.

Проверьте это на https://plugins.jetbrains.com/plugin/12437-zenuml-support
Исходный код: https://github.com/ZenUml/jetbrains-zenuml
@hc_dev, спасибо за напоминание. Добавил эту заметку.
Я заметил, что плагин SequenceDiagram для Intellij также является хорошим вариантом.
Проверьте это для генерации: - 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)
Еще один инструмент моделирования для Java - (мой) сайт GitUML. Создавайте диаграммы UML из кода Java или Python, хранящегося в репозиториях GitHub.
Одна из ключевых идей GitUML - решить одну из проблем с «документацией»: диаграммы всегда устарели. С GitUML диаграммы автоматически обновляются, когда вы отправляете код с помощью git.
Просмотрите схемы UML сообщества, там есть несколько шаблонов проектирования Java. Просмотрите популярные репозитории GitHub и визуализируйте в них архитектуры и шаблоны.
Создавайте диаграммы, используя указатель и щелчок. Редактора перетаскивания нет, просто щелкните классы в дереве репозитория, которые вы хотите визуализировать:
Базовая технология основана на PlantUML, что означает, что вы можете уточнить свои диаграммы с помощью дополнительной разметки PlantUML.
Существует инструмент Свободный с именем binarydoc, который может генерировать UML Sequence Diagram или Control Flow Graph (CFG) из bytecode (вместо исходного кода) метода Java.
Вот пример диаграммы binarydoc, созданной для java-метода java.net.AbstractPlainSocketImpl.getInputStream:
java.net.AbstractPlainSocketImpl.getInputStream:java.net.AbstractPlainSocketImpl.getInputStream:страница binarydoc неверна
Привет, @frewper, ссылка на страницу двоичного документа обновлена, попробуйте еще раз
Это вряд ли произойдет. Реальный код Java не структурирован так, чтобы выглядеть красиво, как диаграммы UML.