Como faço para gerar diagrama UML com base em classes existentes em PHP?
Como faço para gerar diagrama UML com base em classes existentes em PHP?
Respostas:
Também existe a ferramenta PHP UML disponível na pear .
PHP_UML:
Instale-o na linha de comando via:
$ pear install pear/php_uml
(Isso costumava ser, $ pear install pear/php_uml-alpha
mas o pacote se tornou estável.)
Gere seu xmi:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(consulte pear.php.net/package/PHP_UML/download/All ou pear.php.net/package/PHP_UML )
Eu recomendo fortemente BOUML que:
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.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
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:
não grátis ($ 199), mas definitivamente vale o dinheiro gasto.
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.
Veja como fiz isso (diretamente do código para o desenho em PDF, sem desenho manual de nada):
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.
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 .
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.
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
Desvantagens
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.
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.