Как я могу генерировать диаграммы UML (особенно диаграммы последовательности) из существующего кода Java?
java
uml
reverse-engineering
diagram
Джонатан
источник
источник
Ответы:
ObjectAid UML Explorer
Это то, что я использовал. Легко устанавливается из репозитория:
И производит довольно хорошие UML-диаграммы:
Описание с сайта:
источник
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.
РЕДАКТИРОВАТЬ: Если вы дизайнер, то Papyrus - ваш лучший выбор, он очень продвинутый и полон функций, но если вы просто хотите набросать некоторые UML-диаграммы и простую установку, тогда ObjectAid довольно крутой и не требует никаких плагинов. только что установил его на Eclipse-Java EE и отлично работает!
ОБНОВЛЕНИЕ 11 октября 2013
Мой оригинальный пост был в июне 2012 года, многое изменилось, многие инструменты выросли, а другие нет. Поскольку я вернусь к некоторому моделированию и также получу некоторые ответы на этот пост, я решил снова установить папирус и снова исследую другие возможные решения для моделирования UML. Генерация UML (с функцией синхронизации) действительно важна не для разработчика программного обеспечения, а для среднего разработчика.
Хотелось бы, чтобы у папируса был простой способ перевести классы обратного инженера в диаграмму классов UML, и было бы очень здорово, если бы этот реверс-инжиниринг имел функцию синхронизации, но, к сожалению, проект папируса полон функций, и я думаю, что у разработчиков там уже много под рукой, так как действия, которые вы выполняете над папирусом, могут не дать вам никакого ответа, и просто ничего не происходит, но это все равно выходит за рамки этого вопроса.
Ответ (11 октября 2013 г.)
инструменты
меры
Щелкните правой кнопкой мыши MyProject_kdm.xmi -> Discovery -> Discoverer -> снова обнаружить модель UML из кода KDM, и вы получите диалоговое окно свойств, в котором для свойства сериализации установлено значение TRUE, чтобы создать файл с именем MyProject.uml.
Переместите сгенерированный MyProject.uml, сгенерированный в корне, в папку UML, Eclipse спросит вас, хотите ли вы заменить его, нажмите «Да». Мы сделали здесь то, что мы заменили пустую модель на сгенерированную.
ALT + W -> показать вид -> папирус -> модельер
В этом представлении вы найдете ваши классы, как на картинке
В представлении щелкните правой кнопкой мыши корневую модель -> Новая диаграмма.
Затем начните захват классов на диаграмму из представления
Некоторые особенности
Чтобы показать элементы класса (переменные, функции и т. Д.) Щелкните правой кнопкой мыши на любом классе -> Фильтры -> показать / скрыть содержимое Вуаля !!
Вы можете иметь стандартные настройки цвета в Окне -> Переопределения -> Папирус -> Диаграмма классов.
один очень важный параметр - Arrange, когда вы отбрасываете классы, они получают тесный щелчок правой кнопкой мыши на любом пустом месте на диаграмме классов и нажимают Arrange All.
Стрелки в представлении проводника модели можно взять на диаграмме, чтобы показать обобщение, реализацию и т. Д.
После всего этого ваши настройки будут отображать диаграммы как
Синхронизация недоступна, насколько я знаю, вам нужно вручную импортировать любые новые классы.
Вот и все, и не покупайте коммерческие продукты, если они вам действительно не нужны, папирус на самом деле великолепен и совершенен, вместо того, чтобы пожертвовать или что-то в этом роде.
Отказ от ответственности: я не имею никакого отношения к людям из папируса, на самом деле, я сначала не любил папирус, пока не провел много исследований и не испытал их с некоторым терпением. И вернусь к этому посту снова, когда я попробую другие бесплатные инструменты.
источник
Какая у вас кодовая база? Java или C ++?
источник
В Intellij IDEA ZenUML может генерировать диаграмму последовательности из кода Java.
Проверьте это на https://plugins.jetbrains.com/plugin/12437-zenuml-support
Исходный код: https://github.com/ZenUml/jetbrains-zenuml
источник
Как насчет PlantUML ? Это не для реверс-инжиниринга !!! Это для разработки, прежде чем код.
источник
Я разработал плагин maven, который можно запускать из CLI в качестве цели плагина или импортировать как зависимость и программно использовать синтаксический анализатор,
@see Main#main()
чтобы понять, как это сделать.Он рекурсивно отображает src-код PlantUML нужных пакетов, которые вы можете редактировать вручную, если это необходимо (надеюсь, вы этого не сделаете). Затем, вставив код на страницу plantUML или загрузив jar-файл завода, вы можете отобразить диаграмму UML в виде изображения в формате png.
Проверьте это здесь https://github.com/juanmf/Java2PlantUML
Пример выходной диаграммы:
Любой вклад приветствуется. У него есть набор фильтров, которые настраивают вывод, но я пока не раскрывал их в параметрах CLI плагина.
Важно отметить, что он не ограничивается вашими * .java файлами, он также может отображать диаграммы UML src из ваших зависимостей maven. Это очень удобно для понимания библиотек, от которых вы зависите. Он на самом деле проверяет скомпилированные классы с отражением, поэтому источник не нужен
Станьте первым, кто сыграет на GitHub: P
источник
Я бы порекомендовал EclipseUML от Omondo для общего пользования, хотя несколько месяцев назад у меня были некоторые проблемы с моими веб-проектами. В какой-то момент у них было бесплатное издание, но якобы это больше не рекламируется.
Если вы действительно заинтересованы в диаграммах последовательности обратного инжиниринга из исходного кода, я бы порекомендовал jTracert .
Что касается самих проектов Eclipse, то проект Eclipse UML2 Tools может поддерживать реверс-инжиниринг, хотя я никогда не видел его применения на практике.
MoDisco проект (модель Discovery) Затмения GMT проект , кажется, яснее в достижении вашей цели. Перечень конкретных технических средств будет хорошее место , чтобы начать с.
источник
jSonde
Не доступна в URL , показанной выше. Вы можете найти веб-сайт и исходный код в Github: github.com/bedrin/jsonde .Я обнаружил, что плагин Green очень прост в использовании и генерирует диаграмму классов из исходного кода. Попробуй :). Просто скопируйте плагин в каталог плагинов.
источник
Вы также можете попробовать UML-модельер NetBeans. Я использовал его для создания Javacode, который я использовал в своих проектах затмения. Вы даже можете импортировать проекты eclipse в netbeans и синхронизировать настройки eclipse с настройками проекта netbeans.
Я попробовал несколько моделей UML для затмения и не был удовлетворен ими. Они были либо нестабильны, сложны или просто безобразны. ;-)
источник
Использование IntelliJ IDEA. Чтобы сгенерировать диаграмму классов, выберите пакет и нажмите Ctrl+ Alt+ U:
По умолчанию отображаются только имена классов, а не все зависимости. Чтобы изменить его: щелкните правой кнопкой мыши -> Показать категории ... и Показать зависимости:
Чтобы обобщить диаграмму зависимостей (UML Deployment chart) и использовать maven, перейдите в View -> Tool Windows -> Maven Projects и нажмите Ctrl+ Alt+ U:
Результат:
Также можно генерировать больше других диаграмм. Смотрите документацию .
источник
Вы можете использовать 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 добавляет теги модели в код, что на самом деле очень и очень плохо, и для меня это определенно бесполезно.
источник
Безусловно, лучший инструмент, который я использовал для реверс-инжиниринга, и круговое отключение Java -> UML - это Borland's Together . Он основан на Eclipse (не просто на одном плагине) и действительно хорошо работает.
источник
Я предлагаю PlantUML. Этот инструмент очень полезен и прост в использовании. У PlantUML есть плагин для Netbeans, который вы можете создавать UML-диаграмму из своего Java-кода.
Вы можете установить плагин PlantUML в NetBeans следующим способом:
Меню Netbeans -> Инструменты -> Плагин
Теперь выберите «Доступные плагины», а затем найдите PlantUML и установите его.
Для получения дополнительной информации перейдите на сайт: www.plantuml.com
источник
Я заметил, что плагин SequenceDiagram для Intellij также является хорошим вариантом.
источник
Еще одним инструментом моделирования для Java является (мой) сайт GitUML . Генерируйте UML-диаграммы из кода Java или Python, хранящегося в репозиториях GitHub.
Одна из ключевых идей GitUML - решить одну из проблем с «документацией»: эти диаграммы всегда устарели. С GitUML диаграммы автоматически обновляются, когда вы нажимаете код, используя git.
Просмотрите сообщества UML-диаграммы, там есть несколько шаблонов проектирования Java. Просматривайте популярные репозитории GitHub и визуализируйте в них архитектуру и шаблоны.
Создание диаграмм с помощью точки и нажмите. Редактора перетаскивания нет, просто нажмите на классы в дереве репозитория, которые вы хотите визуализировать:
Базовая технология основана на PlantUML, что означает, что вы можете улучшать свои диаграммы с помощью дополнительной разметки PlantUML.
источник
Существует бесплатный инструмент с именем binarydoc, который может генерировать
UML Sequence Diagram
илиControl Flow Graph
(CFG
) изbytecode
(вместо исходного кода) метода Java.Вот пример двоичной диаграммы, созданной для метода java java.net.AbstractPlainSocketImpl.getInputStream :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
:источник