Como gerar diagramas UML (especialmente diagramas de sequência) a partir do código Java?

434

Como posso gerar diagramas UML (especialmente diagramas de sequência) a partir do código Java existente?

Jonathan
fonte
3
É improvável que isso aconteça. O código Java real não está estruturado para parecer bonito como diagramas UML.
Stephan Eggermont
1
Tantas respostas que não abordam diagramas de sequência. Hmph
Bill K
@ BillK, minha resposta aborda diagramas de sequência. É um plugin do Intellij Idea - stackoverflow.com/a/45239269/529187 .
Xiao Peng - ZenUML.com
1
Esta pergunta é mais apropriada para o site da irmã Recomendações de software Stack Exchange .
Basil Bourque

Respostas:

257

ObjectAid UML Explorer

É o que eu usei. É facilmente instalado a partir do repositório:

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

E produz diagramas UML bastante agradáveis:

Captura de tela

Descrição do site:

O ObjectAid UML Explorer é diferente de outras ferramentas UML. Ele usa a notação UML para mostrar uma representação gráfica do código existente que é tão preciso e atualizado quanto o seu editor de texto, além de ser muito fácil de usar. Vários recursos exclusivos tornam isso possível:

  • Seu código-fonte e bibliotecas são o modelo exibido; eles não são projetados de forma reversa em um formato diferente.
  • Se você atualizar seu código no Eclipse, seu diagrama também será atualizado; não há necessidade de fazer engenharia reversa do código fonte.
  • A refatoração atualiza seu diagrama e seu código-fonte. Quando você renomeia um campo ou move uma classe, seu diagrama simplesmente reflete as alterações sem sair da sincronia.
  • Todos os diagramas na área de trabalho do Eclipse são atualizados com as alterações de refatoração, conforme apropriado. Se necessário, eles são retirados do seu sistema de controle de versão.
  • Os diagramas são totalmente integrados ao Eclipse IDE. Você pode arrastar classes Java de qualquer outra visualização para o diagrama, e as informações relacionadas ao diagrama são mostradas em outras visualizações, sempre que aplicável.
Thomas Ahle
fonte
Mais fácil que o Papyrus, mas com menos opções para criar diagramas.
Lcardosobr
No ObjectAid, existe uma maneira de organizar automaticamente o diagrama de classes?
reutilizável
4
HowTo >>> Crie uma conta aqui: objectaid.com/login (o email de ativação foi enviado em 10 minutos), clique em Diagrama de complemento , a licença será enviada para o seu email. Siga este objectaid.com/installation para instalar o ObjectAid e, em seguida, instale o GEF em download.eclipse.org/tools/gef/updates/releases Agora copie e cole a licença do email em Janela-> Preferências-> ObjectAid Como criar um diagrama? objectaid.com/class-diagram
rluks
Não é possível instalar no 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.
23813 Gunaseelan
1
A versão comercial do ObjectAid pode se sair melhor quando se trata de geração de diagrama de sequência vs grátis, que só pode ser usada para gerar diagramas de classes!
whoami
63

EDIT: Se você é um designer, o Papyrus é sua melhor escolha, é muito avançado e cheio de recursos, mas se você quiser apenas esboçar alguns diagramas UML e fácil instalação, o ObjectAid é bem legal e não requer plugins. acabou de instalar no Eclipse-Java EE e funciona muito bem!


ATUALIZAÇÃO 11 de outubro de 2013

Meu post original foi em junho de 2012, muitas coisas mudaram, muitas ferramentas cresceram e outras não. Como estou voltando a fazer modelagem e também obtendo algumas respostas para o post, decidi instalar o papiro novamente e investigarei outras possíveis soluções de modelagem UML novamente. A geração de UML (com recurso de sincronização) é realmente importante não para o designer de software, mas para o desenvolvedor médio.

Eu gostaria que o papiro tivesse uma maneira direta de rever as classes de engenheiro reverso no diagrama de classes UML e seria super legal se essa engenharia reversa tivesse um recurso de sincronização, mas infelizmente o projeto do papiro está cheio de recursos e acho que os desenvolvedores já têm muito em mãos, já que também muitos as ações que você realiza sobre o papiro podem não fornecer nenhuma resposta e simplesmente nada acontece, mas isso está fora do escopo da questão.

A resposta (11 de outubro de 2013)

Ferramentas

  1. Baixar Papyrus
  2. Vá para Ajuda -> Instalar novo software ...
  3. No menu suspenso Trabalhar com :, selecione --Todos os sites disponíveis--
  4. No filtro, digite Papyrus
  5. Após a conclusão da instalação, reinicie o Eclipse
  6. Repita as etapas 1 a 3 e, desta vez, instale o Modisco

Passos

  1. No seu projeto java (suponha que seja chamado MyProject) crie uma pasta, por exemplo, UML
  2. Clique com o botão direito do mouse no nome do projeto -> Discovery -> Discoverer -> Discover Java e modelo de inventário do projeto java, um arquivo chamado MyProject_kdm.xmi será gerado. insira a descrição da imagem aqui
  3. Clique com o botão direito do mouse em arquivo de nome do projeto -> novo -> modelo de papiro -> e chame-o de MyProject.
  4. Mova os três arquivos gerados MyProject.di, MyProject.notation, MyProject.uml para a pasta UML
  5. Clique com o botão direito do mouse em MyProject_kdm.xmi -> Descoberta -> Discoverer -> Descubra o modelo UML a partir do código KDM novamente. Você verá uma caixa de diálogo de propriedades. Defina o prop de serialização como TRUE para gerar um arquivo chamado MyProject.uml insira a descrição da imagem aqui

  6. Mova MyProject.uml gerado, que foi gerado na raiz, para a pasta UML, o Eclipse perguntará se você deseja substituí-lo, clique em sim. O que fizemos aqui foi que substituímos um modelo vazio por um gerado.

  7. ALT + W -> exibir visualização -> papiro -> model explorer

  8. Nessa visão, você encontrará suas aulas como na figura insira a descrição da imagem aqui

  9. Na visualização Clique com o botão direito do mouse em modelo raiz -> Novo diagrama insira a descrição da imagem aqui

  10. Em seguida, comece a pegar classes no diagrama a partir da visualização

Algumas funcionalidades

  • Para mostrar os elementos da classe (variáveis, funções, etc.) Clique com o botão direito do mouse em qualquer classe -> Filtros -> mostrar / ocultar o conteúdo Voila !!

  • Você pode ter configurações de cores amigáveis ​​padrão em Janela -> pereferências -> papiro -> diagrama de classes

  • uma configuração muito importante é Organizar quando você solta as classes, elas clicam com o botão direito do mouse em qualquer espaço vazio no diagrama de classes e clique em Organizar tudo

  • As setas na visualização do explorador de modelos podem ser agarradas ao diagrama para mostrar generalização, realização, etc.

  • Depois de tudo isso, suas configurações mostrarão diagramas como insira a descrição da imagem aqui

  • A sincronização não está disponível, tanto quanto sei que você precisará importar manualmente novas classes.

Isso é tudo, e não compre produtos comerciais, a menos que você realmente precise, o papiro é realmente ótimo e sofisticado, em vez de doar ou algo assim.

Isenção de responsabilidade: eu não tenho nenhuma relação com o pessoal do papiro, na verdade, eu não gostei do papiro no começo até fazer muita pesquisa e experimentar com alguma paciência. E voltarei a este post novamente quando eu experimentar outras ferramentas gratuitas.

Ismail Marmoush
fonte
Eu procurei por Modisco no eclipse. apareceu com 0 intallable. Este projeto está vivo ou foi retirado? Tornou-se ferramenta paga. Papyrus não será executado sem isso?
R-JANA 24/07
Usado STS e sem êxito.
R-JANA 24/07
@ R-JANA Não sei qual é o status atual do Modisco, mas voltarei a este post o mais rápido possível, pois estou prestes a instalar o papiro em breve e precisarei atualizá-lo. Eu aconselho você a tentar instalar o papiro, pensando no meu post atual; Acho que muita mudança aconteceu desde que publiquei esta resposta.
Ismail Marmoush
Há um plug-in opcional para o Papyrus, que adiciona a funcionalidade de engenharia reversa do Java: wiki.eclipse.org/Java_reverse_engineering . Com isso, é muito mais fácil adicionar elementos de diagrama da fonte, você pode até arrastar classes para um diagrama.
Markus Ende
42

Qual é a sua base de código? Java ou C ++?

texto alternativo

O eUML2 for Java é um poderoso modelador de UML projetado para o desenvolvedor de Java no Eclipse. A edição gratuita pode ser usada para uso comercial. Ele suporta os seguintes recursos:

  • CVS e Suporte de Equipe
  • Projetado para projetos grandes com vistas de modelo múltiplas e personalizáveis
  • Compatível com Helios
  • Sincronização de código / modelo em tempo real
  • Compatível com UML2.1 e suporte do OMG XMI
  • Suporte para JDK 1.4 e 1.5
  • A edição comercial fornece:

  • Engenharia reversa avançada

  • Poderosas ferramentas de análise de dependência verdadeira
  • Perfil UML e MDD
  • Ferramentas de banco de dados
  • Suporte de modelo personalizável
prakash
fonte
20
Esta é uma ferramenta muito difícil de instalar. Eu tentei por cerca de meia hora sem sucesso. Alguma outra sugestão?
Jonathan
2
Não consigo encontrar o eUML2 é o meu Update Managaer e não quero compactar uma nova instalação do Eclipse apenas por esse recurso. Estou usando o Eclipse "Helios" e vou desta maneira: Ajuda - Instalar novo software - Helios download.eclipse.org/releases/helios - Modelagem
OneWorld
3
Sei que este é um post antigo, mas a maioria dos problemas com a instalação do eUML2 parece ter sido resolvida.
21411 Andy
7
eUML é uma porcaria real. Ele mudou meu formato de código e adicionou tags em todos os lugares. Meu código agora está tão sujo que prefiro desfazer a alteração. O problema é que não há como desfazer e seu código é alterado para sempre. Eu recomendaria fazer backup de seu projeto antes de usar eUML cagar :-)
UML GURU
31
Você já ouviu falar sobre controle de versão?
devorado elysium 17/05
9

Como sou um dos autores, a resposta pode ser tendenciosa. É de código aberto (Apache 2.0), mas o plugin não é gratuito. Você não precisa pagar (obviamente) se clonar e construir localmente.

No Intellij IDEA, o ZenUML pode gerar um diagrama de sequência a partir do código Java. insira a descrição da imagem aqui

Confira em https://plugins.jetbrains.com/plugin/12437-zenuml-support

Código fonte: https://github.com/ZenUml/jetbrains-zenuml

Xiao Peng - ZenUML.com
fonte
1
@hc_dev, obrigado pelo seu lembrete. Adicionada essa nota.
Xiao Peng - ZenUML.com
7

E o PlantUML ? Não é para engenharia reversa !!! É para engenharia antes de você codificar.

Zamel
fonte
4
Não responde à pergunta, que claramente pede uma ferramenta de engenharia reversa.
Jmite
1
Não tenho certeza se isso está completamente correto. O PlantUML também é capaz de descrever código com diagramas. Tente abrir a exibição relevante em um grupo de classe
Erez A. Korn
1
Sim, posso verificar se os diagramas de classes são criados automaticamente a partir de arquivos Java no plug-in do Eclipse.
HRJ
1
Eu tentei isso, mas se o seu código PlantUML ficar muito complexo, você gasta todo o seu tempo tentando descobrir por que o desenho não é renderizado corretamente e apresenta falhas. É bom apenas para pequenos diagramas.
trusktr
Em Intellij, combinando PlantUML com Sketch It! e graphviz pode gerar diagramas de classes a partir do código. Funciona melhor para pacotes pequenos, os pngs não parecem totalmente criados quando os diagramas se tornam muito grandes.
Melissa Loos
6

Desenvolvi um plug-in maven que pode ser executado a partir da CLI como objetivo do plug-in ou importar como dependência e usar programaticamente o analisador, @see Main#main()para ter uma idéia de como.

Ele processa recursivamente o código src do PlantUML src que você pode editar manualmente, se necessário (espero que não). Em seguida, colando o código na página plantUML ou baixando o jar da planta, você pode renderizar o diagrama UML como uma imagem png.

Confira aqui https://github.com/juanmf/Java2PlantUML

Exemplo de diagrama de saída: insira a descrição da imagem aqui

Qualquer contribuição é mais que bem-vinda. Ele possui um conjunto de filtros que personalizam a saída, mas ainda não os expus nos parâmetros de CLI do plugin.

É importante observar que ele não se limita aos arquivos * .java, mas também pode renderizar diagramas UML a partir de suas dependências. Isso é muito útil para entender as bibliotecas das quais você depende. Na verdade, ele inspeciona as classes compiladas com reflexão, para que nenhuma fonte seja necessária

Seja o primeiro a estrelar no GitHub: P

juanmf
fonte
4

Eu recomendaria o EclipseUML do Omondo para uso geral, embora tenha tido alguns problemas alguns meses atrás, com meus projetos da web. Eles tiveram uma edição gratuita em um ponto no tempo, mas isso supostamente não é mais promovido.

Se você realmente gosta de diagramas de seqüência de engenharia reversa a partir do código fonte, eu recomendaria o jTracert .

No que diz respeito aos próprios projetos Eclipse, o projeto Eclipse UML2 Tools pode suportar engenharia reversa, embora eu nunca tenha visto seu uso na prática.

O projeto MoDisco (Model Discovery) Eclipse GMT parece ser mais claro para alcançar seu objetivo. A lista de ferramentas específicas da tecnologia seria um bom lugar para começar.

Vineet Reynolds
fonte
Não foi encontrado esse recurso de engenharia reversa nas Ferramentas UML2; (
OneWorld
2
O jTracert agora está descontinuado. Sucessora do jTracert, uma nova ferramenta chamada jSonde agora está licenciada sob a GPL v3. jsonde.com
Alpine
Omondo é o melhor para java. Integração realmente limpa, sem mistura entre modelo e código. Soberbo, mas muito caro. Conseguimos comprar apenas uma licença, mas somos mais de 20 modeladores usando-a porque a segurança é baseada no login do nome de usuário. Isso significa que, se 10 usuários tiverem o mesmo login, todos poderão usá-lo. Temos uma licença com nome de usuário Admin :-)
UML GURU
O jSondenão está disponível no URL mostrado acima. Você pode encontrar um site e o código fonte no Github: github.com/bedrin/jsonde .
Jaime
3

eu encontrei o plugin Green muito simples de usar e gerar diagrama de classes a partir do código fonte. De uma chance :). Basta copiar o plugin para o diretório do plugin.

pcmind
fonte
2
Verde parece ter potencial. No entanto, no meu trabalho, temos um projeto que tem ~ 700 aulas e ele fica um pouco chocado e depois morre.
Appak 02/02
3

Você também pode experimentar o modelador UML do netbeans. Eu o usei para gerar o javacode que eu usei nos meus projetos eclipse. Você pode até importar projetos eclipse no netbeans e manter as configurações do eclipse sincronizadas com as configurações do projeto netbeans.

Tentei vários modeladores UML para eclipse e não estava satisfeito com eles. Eles eram instáveis, complicados ou simplesmente feios. ;-)

Patrick Cornelissen
fonte
Só queria mencionar que também usei o modelador Netbeans UML e não tive problemas nos meus casos relativamente simples. A interface do usuário não é muito intuitiva, mas é totalmente aceitável. O modelador também possui alguns recursos avançados, como a criação de código de entidade JPA fora de modelo, se bem me lembro.
Tuukka Mustonen
1
Infelizmente, parece que o plug-in UML não é mais suportado. Aparentemente, uma reescrita do plug - in está em andamento, mas isso não ajuda ninguém, pois eles abandonaram o plug-in antigo antes que a reescrita fosse concluída.
Appak
Isso é uma chatice :-( Vamos esperar que a reescrita não demore muito :-)
Patrick Cornelissen
1
A UML para NetBeans estava sendo feita pelo VP. Eles não farão mais isso, apenas seu VP UML está disponível agora, com uma versão gratuita fraca.
Gangnus 15/09/2015
2

Usando o IntelliJ IDEA. Para gerar o diagrama de classes, selecione o pacote e pressione Ctrl+ Alt+ U:insira a descrição da imagem aqui

Por padrão, ele exibe apenas nomes de classe e nem todas as dependências. Para alterar: clique com o botão direito do mouse -> Mostrar Categorias ... e Mostrar Dependências: insira a descrição da imagem aqui

Para gerar o diagrama de dependências (diagrama de implantação UML) e usar o maven, vá em Exibir -> Ferramentas Windows -> Projetos Maven e pressione Ctrl+ Alt+ U: insira a descrição da imagem aqui

O resultado: insira a descrição da imagem aqui

Também é possível gerar outros diagramas. Veja a documentação .

Igor Rybak
fonte
2

Você pode usar a compilação de avaliação de 30 dias do EclipseUML for Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip Esta não é a versão 3.6 mais recente, mas é muito boa e não exija que você o compre para testes e engenharia reversa.

Engenharia reversa : http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

Demonstração em flash ao vivo: http://www.ejb3.org/reverse.swf

EclipseUML Omondo é a melhor ferramenta do mundo para Java. Apenas o eUML parece competir com ele nesse mercado de sincronização de java ao vivo, mas o eUML adiciona tags de modelo no código, o que é realmente muito, muito ruim e definitivamente não vale para mim.

UML GURU
fonte
1

De longe, a melhor ferramenta que usei para engenharia reversa e java de trip redondo -> UML é o Borland's Together . É baseado no Eclipse (não apenas em um único plugin) e realmente funciona bem.

serg10
fonte
Together agora é Micro Focus Together
Jaime
0

Eu sugiro PlantUML. essas ferramentas são muito úteis e fáceis de usar. O PlantUML possui um plug-in para o Netbeans que você pode criar um diagrama UML a partir do seu código java.

você pode instalar o plugin PlantUML no netbeans por este método:

Menu Netbeans -> Ferramentas -> Plugin

Agora selecione Plugins disponíveis, localize o PlantUML e instale-o.

Para mais informações, acesse o site: www.plantuml.com

Masood
fonte
0

Notei que o plugin SequenceDiagram para Intellij também é uma boa opção.

Quem sou eu
fonte
1
Verifique isto para geração: - quora.com/What-is-the-best-tool-to-generate-UML-diagrams , stackoverflow.com/questions/4449291/… (engenharia reversa) && para Sketching: - guru99.com/ -best-uml tools.html (Lembre-se nem todos os ferramentas gratuitas gera diagramas de sequência, só pode apoiar diagramas de classe, eu tenho SequenceDiagram usado para geração & draw.io para criação manual de diagramas UML)
whoami
0

Outra ferramenta de modelagem para Java é o (meu) site GitUML . Gere diagramas UML a partir do código Java ou Python armazenados nos repositórios do GitHub.

Uma idéia chave do GitUML é resolver um dos problemas da "documentação": que os diagramas estão sempre desatualizados. Com o GitUML, os diagramas são atualizados automaticamente quando você pressiona o código usando o git.

Navegue pelos diagramas UML da comunidade, existem alguns padrões de design Java lá. Navegue pelos repositórios populares do GitHub e visualize as arquiteturas e padrões neles.

navegador de diagrama

Crie diagramas usando apontar e clicar. Não há editor de arrastar e soltar, basta clicar nas classes na árvore do repositório que você deseja visualizar:

selecione as classes java que você deseja visualizar

A tecnologia subjacente é baseada no PlantUML, o que significa que você pode refinar seus diagramas com a marcação adicional do PlantUML.

Abulka
fonte
0

Existe uma ferramenta gratuita chamada binarydoc que pode gerar UML Sequence Diagramou Control Flow Graph( CFG) a partir do bytecode(em vez do código fonte) de um método Java.

Aqui está um diagrama de amostra binarydoc gerado para o método java java.net.AbstractPlainSocketImpl.getInputStream :

  • Gráfico de fluxo de controle do método java.net.AbstractPlainSocketImpl.getInputStream:

Gráfico de fluxo de controle

  • Diagrama de sequência UML do método java.net.AbstractPlainSocketImpl.getInputStream:

Diagrama de sequência UML

Feliz
fonte