Como posso gerar diagramas UML (especialmente diagramas de sequência) a partir do código Java existente?
Como posso gerar diagramas UML (especialmente diagramas de sequência) a partir do código Java existente?
Respostas:
É 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:
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.
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.
Qual é a sua base de código? Java ou C ++?
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
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.
Confira em https://plugins.jetbrains.com/plugin/12437-zenuml-support
Código fonte: https://github.com/ZenUml/jetbrains-zenuml
E o PlantUML ? Não é para engenharia reversa !!! É para engenharia antes de você codificar.
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
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
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.
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.
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. ;-)
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:
Também é possível gerar outros diagramas. Veja a documentação .
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.
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.
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
Notei que o plugin SequenceDiagram para Intellij também é uma boa opção.
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.
Existe uma ferramenta gratuita chamada binarydoc que pode gerar UML Sequence Diagram
ou 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 :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: