Як генерувати діаграми UML (особливо послідовні діаграми) з коду Java?


434

Як я можу генерувати діаграми UML (особливо послідовні діаграми) з існуючого коду Java?


3
Це навряд чи станеться. Реальний код Java не структурований так, щоб виглядати так, як діаграми UML.
Стефан Еггермонт

1
Стільки відповідей, які не стосуються діаграм послідовності. Hmph
Білл К

@BillK моя відповідь робить діаграми послідовності адрес. Це плагін Intellij Idea - stackoverflow.com/a/45239269/529187 .
Сяо Пен - ZenUML.com

1
Це питання більше відповідає сестринському сайту Рекомендації щодо обміну стеками .
Василь Бурк

Відповіді:


257

ObjectAid UML Explorer

Це те, що я використав. Він легко встановлюється з сховища:

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

І створює досить приємні діаграми UML:

Знімок екрана

Опис веб-сайту:

Провідник ObjectAid UML відрізняється від інших інструментів UML. Він використовує позначення UML, щоб показати графічне зображення існуючого коду, настільки ж точного та актуального, як і ваш текстовий редактор, при цьому дуже простий у використанні. Деякі унікальні можливості роблять це можливим:

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

Простіше, ніж папірус, але з меншими можливостями для створення діаграм.
lcardosobr

Чи існує спосіб автоматичного упорядкування діаграми класу в ObjectAid?
багаторазове використання

4
HowTo >>> Створіть тут обліковий запис: objectaid.com/login (повідомлення про активацію було надіслано через 10 хвилин), клацніть надбудова діаграми, на вашу електронну пошту буде надіслана ліцензія. Дотримуйтесь цього objectaid.com/installation, щоб встановити ObjectAid, а потім встановіть GEF з download.eclipse.org/tools/gef/updates/releases Тепер скопіюйте вставку ліцензії з електронної пошти у вікно-> Налаштування-> ObjectAid Як створити діаграму? objectaid.com/class-diagram
rluks

Неможливо встановити в затемнення 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.
Гунаселан

1
Комерційна версія ObjectAid може зробити краще, коли справа доходить до генерації діаграм послідовностей проти безкоштовного, може використовуватися лише для генерації діаграм класів !!
whoami

63

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


ОНОВЛЕННЯ 11 жовтня 2013 року

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

Я хотів би, щоб папірус мав прямий шлях до класів Reverse Engineer в діаграму класів UML, і було б дуже круто, якби ця зворотна інженерія мала функцію синхронізації, але, на жаль, проект папірусу має багато функцій, і я думаю, що розробники там вже багато під рукою, оскільки також багато дії, які ви робите над папірусом, можуть не дати вам жодної відповіді, і просто нічого не відбувається, але це все одно не входить до сфери цього питання.

Відповідь (11 жовтня 2013 р.)

Інструменти

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

Кроки

  1. У своєму проекті Java (припустимо, це називається MyProject) створити папку, наприклад, UML
  2. Клацніть правою кнопкою миші на назві проекту -> Відкриття -> Відкривальник -> Відкрийте Java та модель інвентарю від проекту java, буде створено файл під назвою MyProject_kdm.xmi. введіть тут опис зображення
  3. Клацніть правою кнопкою миші файл імені проекту -> новий -> модель папірусу -> і назвіть його MyProject.
  4. Перемістіть три створені файли MyProject.di, MyProject.notation, MyProject.uml у папку UML
  5. Клацніть правою кнопкою миші MyProject_kdm.xmi -> Discovery -> Discoverer -> Відкрийте модель UML з коду KDM знову, у діалоговому вікні властивості встановіть підтримку серіалізації на TRUE, щоб створити файл з назвою MyProject.uml введіть тут опис зображення

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

  7. ALT + W -> показ перегляду -> папірус -> Explorer Explorer

  8. З цього виду ви знайдете свої заняття, як на малюнку введіть тут опис зображення

  9. У вікні правої кнопки клацніть кореневу модель -> Нова діаграма введіть тут опис зображення

  10. Потім почніть захоплювати класи до діаграми з подання

Деякі особливості

  • Щоб показати елементи класу (змінні, функції тощо) Клацніть правою кнопкою миші будь-який клас -> Фільтри -> показати / приховати вміст Voila !!

  • Ви можете встановити налаштування кольорів за замовчуванням у вікні -> pereferences -> папірус -> діаграма класів

  • Одним з дуже важливих параметрів є « Упорядкувати», коли ви відмовляєтесь від класів, вони отримують тісну клацання правою кнопкою миші на будь-якому порожньому просторі на діаграмі класів та натисніть «Упорядкувати всі»

  • Стрілки у поданні моделі Explorer можуть бути схоплені до діаграми, щоб показати узагальнення, реалізацію тощо

  • Після всього цього ваші налаштування покажуть діаграми типу введіть тут опис зображення

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

Ось і все. І не купуйте комерційну продукцію, якщо вам вона справді не потрібна, папірус насправді чудовий і витончений, а не пожертвування чи щось таке.

Відмова: Я не маю відношення до людей з папірусом, насправді я спочатку не любив папірус, поки я не провів багато досліджень і пережив це з деяким терпінням. І я знову повернуся до цієї публікації, коли спробую інші безкоштовні інструменти.


Я шукав Модіско в затемненні. він виявився з 0 незмінним. Цей проект живий чи забраний? Це стало платним інструментом. Чи не папірус не запуститься без цього?
R-JANA

Використовується СТС і невдало.
R-JANA

@ R-JANA Я не знаю, який зараз статус Modisco, але я повертаюсь до цієї публікації якнайшвидше, тому що я скоро встановлю папірус і мені доведеться його оновити. Я раджу вам спробувати встановити папірус, маючи на увазі мою поточну посаду; Я думаю, що з того часу я опублікував цю відповідь.
Ісмаїл Мармуз

Існує додатковий плагін для Papyrus, який додає функцію зворотної інженерії Java: wiki.eclipse.org/Java_reverse_engineering . За допомогою цього простіше додати елементи діаграми з джерела, навіть можна перетягнути класи в діаграму.
Маркус Енде

42

Яка кодова база? Java чи C ++?

alt текст

eUML2 для Java - це потужний модель UML, призначений для розробника Java в Eclipse. Безкоштовне видання можна використовувати для комерційного використання. Він підтримує такі функції:

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

  • Розширена інвертована техніка

  • Потужні інструменти аналізу справжньої залежності
  • Профіль UML та MDD
  • Інструменти бази даних
  • Підтримка шаблону, що настроюється

20
Це дуже складний інструмент для установки. Я пробував близько півгодини, не маючи успіху. Будь-які інші пропозиції?
Джонатан

2
Не можу знайти eUML2 - це мій оновлений Managaer, і я не хочу спакувати нове налаштування Eclipse лише з цієї функції. Я використовую Eclipse "Helios" і йду таким шляхом: Довідка - Встановіть нове програмне забезпечення - Helios download.eclipse.org/releases/helios - Моделювання
OneWorld

3
Я знаю, що це стара публікація, але більшість проблем із встановленням eUML2, здається, вирішено.
Енді

7
eUML - справжнє лайно. Він змінив мій формат коду та додав теги скрізь. Мій код зараз такий брудний, що я вважаю за краще скасувати зміни. Проблема полягає в тому, що скасування відсутнє, і ваш код змінюється назавжди. Я рекомендую створити резервну копію вашого проекту перед тим, як використовувати epper-crapper :-)
UML GURU

31
Ви коли-небудь чули про управління версіями?
пожирав елізіум

9

Я один з авторів, тому відповідь може бути необ’єктивним. Він з відкритим кодом (Apache 2.0), але плагін не безкоштовний. Вам не доведеться платити (очевидно), якщо ви клонуєте та будуєте локально.

У Intellij IDEA ZenUML може генерувати послідовну діаграму з коду Java. введіть тут опис зображення

Перевірте це за адресою https://plugins.jetbrains.com/plugin/12437-zenuml-support

Вихідний код: https://github.com/ZenUml/jetbrains-zenuml


1
@hc_dev, дякую за ваше нагадування. Додав цю замітку.
Сяо Пен - ZenUML.com

7

Як щодо PlantUML ? Це не для зворотного проектування !!! Це для інженерії, перш ніж кодувати.


4
Не відповідає на запитання, яке чітко вимагає зворотного інженерного інструменту.
jmite

1
Я не впевнений, що це абсолютно правильно. PlantUML також може описати код за допомогою діаграм. Спробуйте відкрити відповідний вигляд у файлі класу
Ерез А. Корн

1
Так, я можу переконатися, що діаграми класів створені автоматично з файлів Java в плагіні Eclipse.
HRJ

1
Я спробував це, але якщо ваш код PlantUML стає занадто складним, ви витрачаєте весь свій час на те, щоб зрозуміти, чому малюнок не відображається належним чином і має глюки. Це добре лише для невеликих діаграм.
trusktr

У Intellij поєднуючи PlantUML із Sketch It! і graphviz може генерувати класдіаграми з коду. Найкраще працює для невеликих пакетів, png, здається, не створений повністю, коли діаграми стають занадто великими.
Меліса Лоос

6

Я розробив плагін Maven, який може бути запущений із CLI як плагін, або імпортувати як залежність і програмно використовувати парсер, @see Main#main()щоб отримати уявлення про те, як.

Він надає PlantUML src-код бажаних пакетів рекурсивно, який ви можете редагувати вручну, якщо потрібно (сподіваємось, цього не зробите). Потім, вставивши код на сторінку plantUML або завантаживши заводську банку, ви можете надати діаграму UML у вигляді PNG-зображення.

Перевірте це https://github.com/juanmf/Java2PlantUML

Приклад схеми виводу: введіть тут опис зображення

Будь-який внесок більш ніж вітається. У ньому є набір фільтрів, які налаштовують вихід, але я їх ще не виставляв у параметрі CLI для плагінів.

Важливо зауважити, що він не обмежується вашими * .java-файлами, він може також відображати UML-діаграми src від вашої залежності. Це дуже зручно для розуміння бібліотек, від яких ви залежите. Він фактично перевіряє складені класи з відображенням, тому джерело не потрібне

Будьте першим, хто зіграв це на GitHub: P


4

Я б порекомендував EclipseUML від Omondo для загального використання, хоча у мене були проблеми кілька місяців тому з моїми веб-проектами. Свого часу вони мали безкоштовне видання, але це, мабуть, більше не рекламується.

Якщо ви дійсно зацікавлені в діаграмах зворотної інженерної послідовності з вихідного коду, я рекомендую jTracert .

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

Проект MoDisco (Model Discovery) Eclipse GMT виглядає більш зрозумілим у досягненні своєї мети. Перелік конкретних технічних засобів буде хороше місце , щоб почати с.


Не знайшли такої функції зворотної інженерії в інструментах UML2; (
OneWorld

2
jTracert припинено. Наступник jTracert, нового інструменту під назвою jSonde, тепер має ліцензію під GPL v3. jsonde.com
Альпійська,

Омондо найкращий для Java. Дійсно чиста інтеграція, без поєднання моделі та коду. Чудовий, але занадто дорогий. Нам було дозволено купувати лише одну ліцензію, але ми використовуємо її понад 20 моделерів, оскільки захист базується на вході за ім'ям користувача. Це означає, що якщо 10 користувачів мають однаковий логін, всі вони можуть ним користуватися. Ми отримали ліцензію з ім’ям адміністратора :-)
UML GURU

jSondeЧи не доступна в URL , показаної вище. Ви можете знайти веб-сайт та вихідний код у Github: github.com/bedrin/jsonde .
Хайме

3

Я знайшов Зелений плагін дуже простий у використанні та для створення діаграми класів із вихідного коду. Спробувати :). Просто скопіюйте плагін у свій реєстр плагінів.


2
Зелений, здається, має потенціал. Але в моїй роботі у нас є проект, який налічує ~ 700 класів, і він трохи забивається, а потім гине.
Аппак

3

Ви також можете спробувати модельєра UML Netbeans. Я використовував його для створення javacode, який я використовував у своїх проектах затемнення. Ви навіть можете імпортувати проекти затемнення в Netbeans і тримати параметри затемнення синхронізованими з налаштуваннями проекту netbeans.

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


Просто хотів зазначити, що я також використовував Netbeans UML-модельєр і не натикався на проблеми в моїх відносно простих випадках. Користувацький інтерфейс не надто інтуїтивний, але це цілком нормально. Модельєр також має деякі вдосконалені функції, такі як створення коду образу JPA поза моделлю, якщо я правильно пам'ятаю.
Tuukka Mustonen

1
На жаль, схоже, що плагін UML більше не підтримується. Переписаний плагін , мабуть , ведеться , але це не допоможе нікому , так як вони скинули старий плагін , перш ніж переписування було завершено.
Аппак

Це облом :-( Будемо сподіватися, що перезапис не займе багато часу :-)
Патрік Корнеліссен

1
UML для NetBeans робив VP. Вони більше не будуть робити це, тепер доступний лише їх VP UML зі слабкою безкоштовною версією.
Gangnus

2

Використання IntelliJ IDEA. Для створення діаграми класів виберіть пакет та натисніть Ctrl+ Alt+ U:введіть тут опис зображення

За замовчуванням він відображає лише назви класів, а не всі залежності. Щоб змінити це: натисніть правою кнопкою миші -> Показати категорії ... та Показати залежності: введіть тут опис зображення

Щоб генерувати діаграму залежностей (діаграма розгортання UML) та використовуєте maven go View -> Інструмент Windows -> Maven Projects та натисніть Ctrl+ Alt+ U: введіть тут опис зображення

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

Також можна генерувати більше інших діаграм. Дивіться документацію .


2

Ви можете використовувати 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 додає теги моделей у код, який насправді дуже поганий і остаточний для мене немає.


1

На сьогоднішній день найкращим інструментом, який я використав для зворотної інженерії та кругового відключення Java -> UML є Borland's Together . Він заснований на Eclipse (не просто на одному плагіні) і справді добре працює.


Тепер разом Micro Micro Focus
Хайме

0

Я пропоную PlantUML. цей інструмент дуже корисний і простий у використанні. У PlantUML є плагін для Netbeans, за допомогою якого ви можете створити UML-діаграму зі свого коду Java.

Ви можете встановити плагін PlantUML в netbeans цим методом:

Меню Netbeans -> Інструменти -> Плагін

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

Для отримання додаткової інформації відвідайте веб-сайт: www.plantuml.com


0

Я помітив, що плагін SequenceDiagram для Intellij також є хорошим варіантом.


1
Перевірте це для покоління: - 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)
whoami

0

Іншим інструментом моделювання для Java є (мій) веб-сайт GitUML . Створюйте діаграми UML з коду Java або Python, що зберігається у сховищах GitHub.

Однією з ключових ідей GitUML є вирішення однієї з проблем із "документацією": діаграми завжди застаріли. За допомогою GitUML діаграми автоматично оновлюються, коли ви натискаєте код за допомогою git.

Перегляньте діаграми UML спільноти, там є деякі схеми дизайну Java. Перегляньте популярні сховища GitHub та візуалізуйте архітектури та шаблони в них.

браузер діаграм

Створіть діаграми за допомогою точки та клацання. Немає редактора перетягування, просто клацніть на класи в дереві репозиторію, які ви хочете візуалізувати:

виберіть класи Java, які ви хочете візуалізувати

Базова технологія, заснована на PlantUML, означає, що ви можете вдосконалити діаграми за допомогою додаткової розмітки PlantUML.


0

Існує Безкоштовний інструмент на ім'я binarydoc, який може генерувати UML Sequence Diagramабо Control Flow Graph( CFG) з bytecode(замість вихідного коду) методу Java.

Ось зразкова діаграма binarydoc, сформована для методу java java.net.Ab абстрактPlainSocketImpl.getInputStream :

  • Схема потоку управління методом java.net.AbstractPlainSocketImpl.getInputStream:

Графік потоку управління

  • Схема послідовності UML методу java.net.AbstractPlainSocketImpl.getInputStream:

Діаграма послідовності UML

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.