Создать диаграмму классов UML из проекта Java

Есть ли хороший инструмент, который может помочь преобразовать классы Java в UML, который покажет обзор того, как мои классы связаны друг с другом? Его не нужно декомпилировать из файла JAR, потому что у меня есть исходники. Я знаю, что их довольно много, но большинство из них могут генерировать только отдельные классы. Я надеюсь, что есть инструмент, который может генерировать диаграмму классов, которая показывает обзор того, как все мои текущие классы и пакеты работают вместе, чтобы я мог проанализировать свою текущую архитектуру. Конечно, анализировать - это одно. Другой предназначен для документации.

Я знаю несколько пока. Но они не могут составить обзорную диаграмму классов. Вот список инструментов Java UML, которые я пробовал и которые могут выполнять обратный инжиниринг, но не могут сделать обзорную диаграмму классов всего моего проекта:

  • StarUML (действительно хороший инструмент Opensource UML, но не может создать диаграмму классов, не являющуюся обзором)
  • ArgoUML (он медленный и вялый, и он постоянно дает сбой)
  • UModel (это коммерческое программное обеспечение. Некоторое время назад я использовал его раньше, но мне было трудно его использовать)
  • MS Visio (не поддерживает обратный инжиниринг Java UML. Только для VB)

Есть ли еще какие-то рекомендации, которые можно добавить к этому списку? И, надеюсь, сможет сгенерировать обзорную диаграмму классов Java. Кстати, я использую Eclipse.


person Carven    schedule 29.05.2011    source источник
comment
Просто чтобы добавить еще несколько возможностей, в Eclipse есть Papyrus. Но плагин генерации кода, к сожалению, у меня не сработал. У него слишком много зависимостей для установки. В конце концов, я использовал eUML2.   -  person Carven    schedule 29.05.2011
comment
Вы можете проверить UML Lab - она ​​коммерческая, но в ней есть очень сложная и настраиваемая обратная инженерия (и туда и обратно).   -  person Christian    schedule 14.09.2012
comment
Есть бесплатный инструмент под названием JGrasp, который может помочь.   -  person HRJ    schedule 09.05.2014
comment
Я использовал этот метод: только youtube.com/watch?v=HwBep8DmBVw Обратной стороной является то, что это не бесплатно, но вы можете получить 30-дневную пробную версию, чего в моем случае было достаточно. ПРИМЕЧАНИЕ: Это не мое видео, я только что нашел его в гугле.   -  person dazito    schedule 23.09.2014
comment
@Carven, дайте мне знать, какой плагин вы использовали? В настоящее время я ищу автоматическое создание диаграмм последовательности при выполнении junit / test.   -  person User27854    schedule 18.04.2015
comment
@ user2900314 Вам следует обратиться к моим предыдущим комментариям.   -  person Carven    schedule 20.04.2015
comment
Мне отлично подходит objectaid.com.   -  person Mr. AJ    schedule 13.05.2015
comment
IntelliJ IDEA Ultimate имеет эту функцию в последних версиях.   -  person Elrond_EGLDer    schedule 14.01.2016
comment
Я ответил на аналогичный вопрос здесь stackoverflow.com/a/39018106/711855 с помощью разработанного мной плагина mvn   -  person juanmf    schedule 21.08.2016
comment
UMlet также может это сделать: umlet.com   -  person Martin Meeser    schedule 06.01.2017
comment
zenuml.com не создает диаграммы UML напрямую из кода Java, но его DSL подобен Java. Кстати, я создал zenuml :) Это бесплатно.   -  person Devs love ZenUML    schedule 21.07.2017
comment
binarydoc - это бесплатный инструмент, который может создавать диаграммы из Java bytecode напрямую, он может генерировать UML hierarchy diagrams, UML class diagram, Class Cross-reference diagram, код Java Control flow diagram, код Java UML sequence diagrams и т. Д. Существует образец диаграммы UML для класса java.net.DatagramSocket   -  person Happy    schedule 08.03.2020
comment
для использования ea - youtube.com/watch?v=cJwB5qxYDuU   -  person Amruth A    schedule 14.04.2020


Ответы (4)


Я использую плагин eUML2 от Soyatec под Eclipse, и он отлично работает для генерация UML с исходным кодом. Этот инструмент полезен до Eclipse 4.4.x

person Heisenbug    schedule 29.05.2011
comment
Есть ли эта функция в бесплатной версии? - person Carven; 29.05.2011
comment
да. Я использую бесплатную версию. - person Heisenbug; 29.05.2011
comment
Спасибо! ;) Я не пробовал, потому что всегда думал, что в бесплатной версии нет кода для генерации UML. - person Carven; 29.05.2011
comment
Работает ли eUML2 с Android и генерирует ли он диаграммы последовательности? - person Quasaur; 07.03.2013
comment
eUML2 работает с eclipse и java в целом (возможно, и с другими языками). Так что да, он должен работать, если вы тоже разрабатываете приложение для Android. Я не помню точно о диаграмме последовательности, много времени я больше не кодирую на java. Думаю, да, но почему бы вам не проверить это самостоятельно;) - person Heisenbug; 07.03.2013
comment
Это отстой. Жесткий. Инструкции требуют, чтобы пользователи добавляли ко всем свойствам префикс символа «f», чтобы их обнюхать. Это тоже деструктивно и добавляет кучу собственных комментариев ко ВСЕМ файлам классов. Кроме того, инструкции не интуитивно понятны. Если кто-то может опровергнуть мой опыт (на основе текущей версии в Kepler), сделайте это. И всего три недели судебного разбирательства. Удаление сейчас. - person ingyhere; 17.05.2014
comment
для текущих версий eclipse больше нет бесплатных выпусков. облом. - person rfreytag; 03.09.2015
comment
Этот инструмент нельзя использовать с Eclipse версии Mars (пока?). - person Christian St.; 09.01.2016
comment
мне это не понравилось. Это несовместимая последняя версия затмения / кислорода. - person Tayfun Yaşar; 11.01.2018

Я написал Class Visualizer, который это делает. Это бесплатный инструмент, который имеет все упомянутые функции - я лично использую его для тех же целей, что описаны в этом посте. Для каждого просматриваемого класса отображаются две мгновенно сгенерированные диаграммы классов: отношения классов и представление класса UML. Диаграмма отношений классов позволяет перемещаться по всей структуре. Он имеет полную поддержку аннотаций и обобщений, а также специальную поддержку сущностей JPA. Отлично работает с большими проектами (тысячи классов).

person Jonatan Kaźmierczak    schedule 14.09.2012
comment
Программа действительно хороша. Спасибо за его создание и за ссылку. - person Igor Rodriguez; 08.09.2014
comment
+1 за то, что он бесплатный, автономный, кроссплатформенный (просто программа на Java), активно поддерживается. Дополнительное примечание: программа не может читать исходный код напрямую, но работает с файлами классов / jar. Таким образом, требуется компиляция. - person bluenote10; 20.09.2014
comment
Джонатан, в качестве акта вежливости можно / нужно добавить отказ от ответственности к ответу, предлагая продукты, услуги и т. Д., В которых он участвует. - person dbm; 15.10.2014
comment
Я скачал этот инструмент. Укажите, пожалуйста, как пользоваться этим инструментом. Как создать ассоциации между классами. - person AndroidDev; 24.12.2014
comment
@ 256, где вы можете использовать инструмент Визуализатор классов. если да, то помогите пожалуйста .. - person User27854; 18.04.2015
comment
Показывает ли диаграмма классов агрегирование и состав? - person DesirePRG; 27.04.2015
comment
Я должен упомянуть, что на сегодняшний день eUML2 не предлагает бесплатную версию для Eclipse Mars. Поэтому я выбрал Class Visualizer. Он выполняет свою работу, но не достигает совершенства (не слишком много опций, никаких настроек, показывает все примитивы, хотя я бы хотел, чтобы они игнорировались и т. Д.) - person Aditya K; 14.03.2016
comment
Это серьезно круто. Учитывая наш очень сложный проект, которому уже несколько десятков лет - большая часть кода написана в винтажном стиле JDK 1.1 - это дает отличный обзор того, как все взаимосвязано. В качестве дополнения к исходному коду и документации Javadoc он предоставляет огромную ценность по отличной цене. - person gerardw; 21.03.2016
comment
Визуализатор классов - выдающийся полезный инструмент с расширяемыми возможностями? ДА, ЭТО. Как мы за это платим? Его можно скачать бесплатно! Как мы научимся им пользоваться? Потратил 10 минут на просмотр видео! - person Martin Meeser; 06.01.2017
comment
У меня есть класс, который вызывает метод другого класса в том же проекте / папке, но этот другой класс не отображается. Я добавил все возможные зависимости, включая все jdk8 jar-файлы. я что-то пропустил? - person Aquarius Power; 29.03.2017
comment
Очень хороший инструмент. Спасибо, что ответили на этот вопрос. - person virusrocks; 28.04.2017
comment
Исправлен ваш ответ, чтобы он больше не был спамом. В дальнейшем делайте это самостоятельно. - person Fund Monica's Lawsuit; 05.12.2018
comment
Я не могу использовать этот инструмент - всегда выдает ошибку - 2019-07-03 18: 25: 06.404 ПРЕДУПРЕЖДЕНИЕ Проблема при импорте класса: org.springframework.aop.aspectj.TypePatternClassFilter java.lang.ClassNotFoundException: org.aspectj.weaver .tools.TypePatternMatcher 2019-07-03 18: 25: 06.41 ПРЕДУПРЕЖДЕНИЕ Проблема при импорте класса: org.springframework.aop.aspectj.AspectJMethodBeforeAdvice java.lang.ClassNotFoundException: org.aspectj.lang.JoinPoint - person Matt Jerry; 03.07.2019
comment
У меня есть образец приложения и несколько файлов классов. Даже если я дам точный файл класса с полным квалифицированным путем - он говорит, что класс не найден. Я видел демонстрацию, но не смог ее взломать. может кто-нибудь помочь - person Matt Jerry; 03.07.2019
comment
Позволяет ли это выбрать каталог с исходными файлами и сгенерировать диаграмму классов из полного источника? - person Vivek; 27.10.2020

Как насчет подключаемого модуля Omondo для Eclipse. Я использовал его и считаю очень полезным. Хотя, если вы создаете диаграммы для больших источников, вам может потребоваться запустить Eclipse с большим объемом памяти.

person Swaranga Sarma    schedule 29.05.2011
comment
Ссылка не работает - person Blip; 08.08.2017

Я бы сказал, что MoDisco, безусловно, самый мощный (хотя, вероятно, не самый простой для работы с ).

MoDisco - это общая структура обратного проектирования (чтобы вы могли настроить свой проект обратного проектирования, с помощью MoDisco вы можете даже реконструировать поведение методов java, а не только структуру и сигнатуры), но также включает некоторые предопределенные функции, такие как создание класса диаграммы из кода Java, которые вам нужны.

person Jordi Cabot    schedule 23.05.2012