Как я могу генерировать диаграммы UML (особенно диаграммы последовательности) из существующего кода Java?
Как я могу генерировать диаграммы UML (особенно диаграммы последовательности) из существующего кода Java?
Ответы:
Это то, что я использовал. Легко устанавливается из репозитория:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
И производит довольно хорошие UML-диаграммы:
ObjectAid UML Explorer отличается от других инструментов UML. Он использует нотацию UML для отображения графического представления существующего кода, который является таким же точным и актуальным, как и ваш текстовый редактор, и в то же время очень простым в использовании. Несколько уникальных функций делают это возможным:
- Ваш исходный код и библиотеки - это модель, которая отображается, они не перепроектированы в другой формат.
- Если вы обновите свой код в Eclipse, ваша диаграмма также обновится; нет необходимости перепроектировать исходный код.
- Рефакторинг обновляет вашу диаграмму, а также ваш исходный код. Когда вы переименовываете поле или перемещаете класс, ваша диаграмма просто отражает изменения, не выходя из синхронизации.
- Все диаграммы в вашем рабочем пространстве Eclipse обновляются с учетом изменений рефакторинга. При необходимости они проверяются вашей системой контроля версий.
- Диаграммы полностью интегрированы в Eclipse IDE. Вы можете перетащить классы Java из любого другого представления на диаграмму, и информация, связанная с диаграммой, будет показана в других представлениях, где это применимо.
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 ++?
eUML2 для Java - это мощный UML-моделлер, разработанный для Java-разработчика в Eclipse. Бесплатная версия может быть использована для коммерческого использования. Он поддерживает следующие функции:
- CVS и поддержка команды
- Предназначен для большого проекта с несколькими настраиваемыми видами моделей
- Гелиос-совместимый
- Синхронизация кода / модели в реальном времени
- Совместимость с UML2.1 и поддержка OMG XMI
- Поддержка JDK 1.4 и 1.5
Коммерческое издание предоставляет:
Расширенный обратный инжиниринг
- Мощные инструменты для анализа истинных зависимостей
- UML Профиль и MDD
- Инструменты базы данных
- Поддержка настраиваемых шаблонов
Я один из авторов, поэтому ответ может быть предвзятым. Это с открытым исходным кодом (Apache 2.0), но плагин не является бесплатным. Вам не нужно платить (очевидно), если вы клонируете и создаете его локально.
В 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
: