Um colega está procurando gerar diagramas de classe UML a partir de pilhas de código-fonte Python. Ele está interessado principalmente nos relacionamentos de herança e levemente interessado nos relacionamentos de composição, e não se importa muito com os atributos de classe que são apenas primitivos do Python.
O código fonte é bem direto e não é tremendamente mau - ele não faz nenhuma mágica metaclasse, por exemplo. (É principalmente dos dias do Python 1.5.2, com algumas aspersões de coisas 2.3ish "modernas".)
Qual é a melhor solução existente para recomendar?
Respostas:
Você já deve ter ouvido falar do Pylint, que ajuda a verificar estaticamente o código Python. Poucas pessoas sabem que ele vem com uma ferramenta chamada Pyreverse que desenha diagramas UML a partir do código python que lê. O Pyreverse usa o graphviz como back-end.
fonte
O Epydoc é uma ferramenta para gerar documentação da API a partir do código fonte do Python. Ele também gera diagramas de classes UML, usando o Graphviz de maneiras sofisticadas. Aqui está um exemplo de diagrama gerado a partir do código fonte do Epydoc.
Como o Epydoc realiza a introspecção de objetos e a análise de fontes, ele pode reunir mais informações sobre analisadores de código estático, como o Doxygen: ele pode inspecionar uma quantidade razoável de classes e funções geradas dinamicamente, mas também pode usar comentários ou seqüências de caracteres não atribuídas como fonte de documentação, por exemplo para variáveis e atributos públicos de classe.
fonte
epydoc
parece incapaz de gerar gráficos. Confira este relatório de bug .Verifique esta lista de sete ferramentas uml para python
fonte
Certas classes de programas bem comportados podem ser esquematizadas, mas no caso geral, isso não pode ser feito. Objetos Python podem ser estendidos em tempo de execução e objetos de qualquer tipo podem ser atribuídos a qualquer variável de instância. Descobrir para quais classes um objeto pode conter ponteiros (composição) exigiria uma compreensão completa do comportamento em tempo de execução do programa.
Os recursos de metaclasse do Python significam que o raciocínio sobre a estrutura de herança também exigiria uma compreensão completa do comportamento em tempo de execução do programa.
Para provar que isso é impossível, você argumenta que, se esse diagramador da UML existisse, você poderia usar um programa arbitrário, converter instruções "halt" em declarações que impactariam o diagrama da UML e usar o diagramador da UML para resolver o problema da parada, o que, como sabemos, é impossível.
fonte
Se você usa eclipse, talvez PyUML . Ainda não usei.
fonte
.zip
archive.Vale mencionar Gaphor . Uma ferramenta de modelagem / UML em Python.
fonte
Umbrello também faz isso. no menu, vá para Código -> importar projeto e aponte para o diretório principal do seu projeto. então ele reverte o código para você ...
fonte
O vipera é um pequeno designer de aplicativos e uml está incluído. Você pode vê-lo em:
vipera
Cumprimentos.
fonte
A SPE IDE do possui um criador UML integrado. Basta abrir os arquivos no SPE e clicar na guia UML.
Não sei o quão abrangente é para suas necessidades, mas não requer downloads ou configurações adicionais para usar.
fonte
O Enterprise Architect da Sparx realiza uma ida e volta do código Python. Eles têm uma edição de teste gratuita por tempo limitado.
fonte