Como posso gerar diagramas UML (especialmente diagramas de sequência) a partir do código Java existente?
java
uml
reverse-engineering
diagram
Jonathan
fonte
fonte
Respostas:
ObjectAid UML Explorer
É o que eu usei. É facilmente instalado a partir do repositório:
E produz diagramas UML bastante agradáveis:
Descrição do site:
fonte
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.
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
Passos
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
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.
ALT + W -> exibir visualização -> papiro -> model explorer
Nessa visão, você encontrará suas aulas como na figura
Na visualização Clique com o botão direito do mouse em modelo raiz -> Novo diagrama
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
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.
fonte
Qual é a sua base de código? Java ou C ++?
fonte
No Intellij IDEA, o ZenUML pode gerar um diagrama de sequência a partir do código Java.
Confira em https://plugins.jetbrains.com/plugin/12437-zenuml-support
Código fonte: https://github.com/ZenUml/jetbrains-zenuml
fonte
E o PlantUML ? Não é para engenharia reversa !!! É para engenharia antes de você codificar.
fonte
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:
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
fonte
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.
fonte
jSonde
não está disponível no URL mostrado acima. Você pode encontrar um site e o código fonte no Github: github.com/bedrin/jsonde .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.
fonte
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. ;-)
fonte
Usando o IntelliJ IDEA. Para gerar o diagrama de classes, selecione o pacote e pressione Ctrl+ Alt+ U:
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:
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:
O resultado:
Também é possível gerar outros diagramas. Veja a documentação .
fonte
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.
fonte
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.
fonte
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
fonte
Notei que o plugin SequenceDiagram para Intellij também é uma boa opção.
fonte
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.
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:
A tecnologia subjacente é baseada no PlantUML, o que significa que você pode refinar seus diagramas com a marcação adicional do PlantUML.
fonte
Existe uma ferramenta gratuita chamada binarydoc que pode gerar
UML Sequence Diagram
ouControl Flow Graph
(CFG
) a partir dobytecode
(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 :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
:fonte