PHP UML Generator [fechado]

110

Como faço para gerar diagrama UML com base em classes existentes em PHP?

Jeffrey04
fonte
2
Eu não trabalho mais com PHP, então não tenho código para testar. Quando postei isso, nenhuma das respostas iniciais estava fazendo o suficiente, mas muita coisa mudou desde então. Eu estava trabalhando com o PHP 5.2, e agora é PHP7 atualmente.
Jeffrey04

Respostas:

42

Também existe a ferramenta PHP UML disponível na pear .

PHP_UML:

  • Pode gerar arquivos UML / XMI na versão 1.4 ou na versão 2.1 (visualizações lógicas, de componentes e de implantação)
  • Pode gerar uma documentação de API em formato HTML
  • Pode gerar código PHP (esqueleto de código) a partir de um determinado arquivo XMI
  • Pode converter conteúdo UML / XMI da versão 1.4 para a versão 2.1

Instale-o na linha de comando via:

$ pear install pear/php_uml

(Isso costumava ser, $ pear install pear/php_uml-alphamas o pacote se tornou estável.)

Gere seu xmi:

$ phpuml -o project.xmi

kguest
fonte
2
por algum motivo, a pear.com não gosta desse link sem uma barra: pear.php.net/package/PHP_UML
Stephen Fuhry
1
@Stephen, sim, eu também percebi! Se você clicar no link, receberá um 404, mas se você selecionar a barra de endereço e pressionar Enter, funciona.
nickf
1
Alguns anos depois, o comando é agora pear install PHP_UML-1.6.1(consulte pear.php.net/package/PHP_UML/download/All ou pear.php.net/package/PHP_UML )
Ben
1
Esta deve ser a resposta aceita. A ferramenta é espetacular.
Xofo de
3
não funciona com php 7
DevWL
41

Eu recomendo fortemente BOUML que:

  • é extremamente rápido (ferramenta UML mais rápida já criada, verifique benchmarks ),
  • tem uma rocha sólida suporte importação e exportação de PHP (também suporta C ++, Java, Python)
  • é multiplataforma (Linux, Windows, outros sistemas operacionais),
  • é cheio de recursos, desenvolvido de forma impressionante e intensiva (veja a história do desenvolvimento , é difícil acreditar que um progresso tão rápido seja possível).
  • suporta plug-ins, tem arquitetura modular (isso permite contribuições do usuário , parece que a comunidade BOUML está se formando)
Daniel Gelling
fonte
Os benchmarks parecem realmente impressionantes. Eu amo arquiteto corporativo, mas não tem suporte a PHP. Vou passar essa ferramenta adiante, obrigado.
Paul Dragoonis de
1
@ Paulo Dragoonis Sparx Sistemas Enterprise Architect faz tem suporte PHP - e não o pior .
machado.
5
A página da web do BOUML agora afirma: "CUIDADO: Devido às contínuas violações de licença, ataques e insultos de pessoas da wikipedia [...], decidi parar de trabalhar no Bouml, exceto para corrigir bugs."
MPV
1
"[18 de dezembro de 2011] Os downloads estão suspensos até novo aviso" em seu site oficial. http://bouml.free.fr/download.html - isso porque eu precisava de uma versão para Win7. Imagino que ainda possa estar disponível nos repositórios do Ubuntu - é preciso verificar
Val Redchenko
4
Versão 6.1 lançada em 23 de setembro de 2012 . Parece que o desenvolvimento foi retomado. Nenhum aviso sobre desaceleração, parada etc. bouml.fr/historic.html
Andrew Ensley
24

phUML

phUML é um gerador de diagrama de classes UML totalmente automático escrito em PHP, licenciado sob a licença BSD. Ele é capaz de analisar qualquer código-fonte orientado a objetos PHP5 e criar uma representação de imagem apropriada da estrutura oo baseada na especificação UML.

Exemplo UML

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

Guia passo a passo

Anthony Hatzopoulos
fonte
requer SVN / subversion para fazer o download e realmente não diz qual é a licença do código-fonte, mas parece bom! sim, eu teria cuidado ao olhar o código-fonte, não há absolutamente nenhuma licença nele e o único readme está no site, eu acho
A licença está vinculada ali mesmo na barra lateral do site do projeto, sob o autor, Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos
essa é a licença para o conteúdo do site, a LICENÇA do projeto deve estar incluída no próprio projeto.
3
Enviei um e-mail para o autor, Jakob, e ele respondeu com uma atualização do repositório com uma licença bsd de 3 cláusulas
Anthony Hatzopoulos
Eu baixei isso e comecei a trabalhar depois de alguns ajustes. Foi muito bom, exceto que não consigo fazer as associações funcionarem, mas tenho certeza que vou descobrir. Legal, simples. No entanto, não há interface gráfica, mas não é grande coisa.
Impulss
19

o melhor software (Windows) que encontrei para fazer PHP e UML é o Sparx Systems Enterprise Architect . além de uma infinidade de recursos , ele suporta o seguinte para PHP:

  • Fazer engenharia reversa de PHP orientado a objetos em diagramas de classes UML
  • Gerar definições de classe PHP a partir de diagramas de classe UML
  • Sincronizar as alterações feitas em uma classe UML na definição de classe PHP correspondente
  • Sincronize as alterações feitas em uma definição de classe PHP na classe UML correspondente
  • Crie diagramas de sequência UML para mostrar o que as classes PHP usam e como são usadas
  • Produza documentação detalhada de seu código PHP em formato RTF e HTML padrão
  • Execute a engenharia de código em modelos para gerar páginas PHP de base.

não grátis ($ 199), mas definitivamente vale o dinheiro gasto.

machado.
fonte
1
Uau, esse é um programa realmente útil e profissional, obrigado pela dica !! Acabei de experimentar a geração do diagrama de classes UML com o método de engenharia reversa do Sparx EA a partir do código-fonte do PHP e funcionou perfeitamente. Fiquei chocado como funcionou bem. : D Como nossos projetos estão ficando cada vez maiores, e nós criamos mais e mais objetos, está ficando mais difícil ficar de olho em nosso próprio código, mas é uma grande ajuda nisso, pois gera os diagramas UML da maneira certa (de claro, talvez exceções possam ocorrer) DEPOIS de terminarmos o código. Isso até ajuda a simplificar as relações entre os objetos.
Sk8erPeter
@ax - Sou um novato e me perco um pouco na lista de recursos deles (em "comparar edições"). Qual seria o nome do recurso que me permite inserir o código PHP (ou link para arquivos PHP) e obter um diagrama em troca? Tentando descobrir qual versão eu preciso.
JDelage
7

Você já experimentou o Autodia ? A última vez que tentei não era perfeito, mas era bom o suficiente.

Vinko Vrsalovic
fonte
Eu tentei o Autodia, mas de alguma forma não consigo gerar um diagrama de classes preciso (php5)
Jeffrey04
7

Há também php2xmi . Você tem que fazer um pouco de trabalho manual, mas ele gera todas as classes, então tudo que você precisa fazer é arrastá-las para um diagrama de classes no Umbrello .

Caso contrário, gerar um diagrama com o uso de reflexão e graphviz é bastante simples. Eu tenho um trecho aqui , que você pode usar como ponto de partida.

Troelskn
fonte
7

Veja como fiz isso (diretamente do código para o desenho em PDF, sem desenho manual de nada):

  1. Use BOUML para "engenharia reversa de código PHP" [sic] para extrair o modelo de classe (BOUML está disponível no repositório "universe" do Ubuntu). Eu recomendo seriamente o BOUML para esta etapa porque é muito rápido em comparação com muitos outros programas que experimentei. Além disso, parece que BOUML parece extrair o modelo corretamente (para as partes que BOUML até tenta extrair).
  2. Use o BOUML para exportar o modelo como arquivo XMI 1.4
  3. Use ArgoUML para importar o referido arquivo XMI (você pode usar a versão webstart para esta etapa)
  4. Exportar XMI do ArgoUML (não sei qual versão / variante do XMI é a saída, mas não é o mesmo resultado da saída do BOUML. O argouml-graphviz não pode lidar com o arquivo XMI diretamente do BOUML).
  5. Use o argouml- graphviz para converter o arquivo XMI exportado do ArgoUML para o formato de ponto (pode ser necessário usar o saxon vez de xsltproc para fazê-lo funcionar devido ao uso de XSLT2)
  6. Use dot ou fdp ou sfdp para renderizar o diagrama de classe.

Aqui está um exemplo de linha de comando adequada para usar fdp para gerar o diagrama PDF (assumindo que o arquivo dot gerado pelo processamento XLST argouml-graphviz seja salvo como xmi-model.dot):

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

Como alternativa, você pode tentar PHP_UML ou php2xmi em vez de BOUML para fazer a parte da "engenharia reversa". Eu ainda não tentei isso.

(Estou usando a frase "engenharia reversa" porque parece que o pessoal da UML está usando essas palavras quando significam extrair informações de classe e método do código-fonte . Eu pessoalmente interpretaria essas palavras como extração de informações de um arquivo binário executável ou captura bruta dados da rede.)

Se você preferir desenhar o diagrama de classe à mão (em vez de usar o computador para fazer todo o desenho), pode usar BOUML ou ArgoUML para o desenho. Usar os dados da "engenharia reversa" via BOUML ajudará nesse caso.

Mikko Rantalainen
fonte
5

Se você deseja gerar UML facilmente a partir de suas classes PHP existentes, considere o PHPStorm 3.0 IDE. Ele faz um bom trabalho ao replicar o código existente em UML.

Dê uma olhada na lista de recursos do PHP Storm .

David Lundquist
fonte
2
Não visualiza dependências, apenas herança.
Basil Musa
1

Você pode usar o Visual Paradigm for UML. Este pode não ser o produto mais bem pago (custa US $ 699), apenas como uma opção se alguém quiser experimentar. Ele pode criar diagramas de classes a partir de PHP e vice-versa, e não apenas PHP, há várias linguagens que você pode escolher, como C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, etc. Há também um teste você pode verificar.

Hendra Uzia
fonte
1

Em teoria, você pode usar PhpStorm para visualizar suas classes usando UML. A geração não é muito boa, mas você pode efetivamente refatorar coisas e, novamente, pelo menos visualizar pais, implementações, constantes, atributos, métodos e sua visibilidade de uma maneira agradável.

Situação

Quero visualizar uma comunicação entre componentes já existentes para um colega.

Processo usando PHPStorm

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

Vantagens

  • Nice UI, diagrama final.
  • Capaz de refatorar o código de um diagrama.
  • Capaz de adicionar notas.
  • O diagrama de classes simboliza propriedades privadas / públicas, construtores e métodos.

Desvantagens

  • Sem suporte para PHP 7.
  • Dolorosamente de usar. Não é possível redimensionar as caixas geradas.
  • Ao adicionar uma nova relação, as anteriores são perdidas aleatoriamente: O wtf?
  • Reiniciar o PhpStorm destrói os diagramas
  • Mudei de ideia, relações impossíveis de usar

Resultado

De qualquer forma, após algumas horas dolorosas de trabalho, só fui capaz de gerar caixas não relacionadas e tive que usar um programa adicional para vincular relações. Muito ruim. Mas eu acredito que uma vez que eles façam funcionar corretamente, será um ótimo recurso porque conforme o código muda, os diagramas seriam atualizados automaticamente!

Por enquanto, não use o PhpStorm para diagramas UML.

Lukas Lukac
fonte
Suponho que seja novo (:
Jeffrey04
Corrigir. Atualmente estou na mesma situação. Desenvolvi uma parte complexa de um sistema e quero visualizá-la para meu colega. Eu tentei várias ferramentas, mas elas são horríveis e horríveis :) Vou fazer isso com o PHPStorm e atualizar minha resposta sobre sua aparência e quão poderoso é. Avisarei hoje o resultado @ Jeffrey04
Lukas Lukac
está tudo bem, eu não faço PHP há algum tempo, na verdade
Jeffrey04
0

Bem, para ser honesto, em primeiro lugar você não deve gerar o modelo UML a partir do código, mas o código a partir do modelo UML;).

Mesmo se você estiver em uma situação rara, quando precisar fazer essa engenharia reversa, geralmente é sugerido que você faça isso manualmente ou pelo menos arrume os diagramas, já que a UML gerada automaticamente tem um visual muito pobre (= informações) valor na maioria das vezes.

Se você só precisa gerar os diagramas, provavelmente é uma boa coisa se perguntar por que exatamente? Quem é o público-alvo e qual é o objetivo? O que o diagrama gerado automaticamente tem a oferecer, que código não tem?

Basicamente, aceito apenas uma resposta a essa pergunta. Ficou muito grande e incompreensível.

O que, mais uma vez, é um motivo para começar com UML em primeiro lugar, ao invés de começar a codificação;) É chamado de análise e está em declínio, porque cada segundo cara nos negócios pensa que é um pouco caro demais e não é realmente necessário.

trueanalysis.eu
fonte
7
É verdade, mas a vida é mais complicada do que alguns princípios, que é aconselhável usar. Você pode precisar comparar o código real com o diagrama UML original ou analisar o código de alguém ou algum código, que foi implementado sem diagramas UML.
DAH
3
Discordo. Grande valor obtido com a visualização de um módulo / base de código com um diagrama. O código é como as direções das ruas, mas com muitas direções às vezes pode-se achar um mapa útil.
Basil Musa
1
A maioria dos programas de desenho UML tem uma IU tão ruim que é mais rápido escrever o código e gerar o diagrama UML automaticamente, mesmo se você jogar fora o código que usou para gerar o diagrama ...
Mikko Rantalainen