Pergunta

notei que doxygen usa a biblioteca graphviz para criar diagramas. Você já usou graphviz para a geração de documentação? Vale a pena aprender o graphviz para fins de documentação fora do âmbito do doxygen? Ou estou melhor fora de furar com um dado padrão de modelagem pacote como Visio?

Eu entendo os méritos dele como uma biblioteca de gráficos, mas para tentar representar UML mais complexa (ou similar) é ainda vale a pena investigar?

Foi útil?

Solução

O graphviz é muito muito simples idioma / formato para criar gráficos. Se os recursos são suficientes para você eu recomendaria (É tão fácil, que eu iria estimar o tempo para aprender com, no máximo, 1 hora).

Outras dicas

Se você está apenas falando sobre a criação de diagramas de herança / colaboração como Doxygen faz, vale a pena investigar IDEs que vai fazer isso por você automaticamente. Para partir do zero ou a documentação afinado à mão, eu uso OmniGraffle (desde que eu estou em um Mac) que eu recomendo.

No entanto, GraphViz e DOT pode ser realmente útil, não só para a documentação, mas para depuração e compreensão do código, bem como, particularmente para estruturas de dados. Eu geralmente não escrever DOT com a mão, mas gerada automaticamente DOT pode ser bem vale o esforço mínimo.

Um dos lugares que eu encontrei GraphViz extremamente útil é para a compreensão e depuração de binários algoritmos de busca de árvores. Eu desenvolver CHDataStructures.framework , um quadro Objective-C código-fonte aberto, que inclui diversas variedades de BSTs . Eu implementei dois métodos: -(NSString*)dotGraphString na classe pai e -(NSString*)dotGraphStringForNode: em cada classe filha. Em cerca de 30-40 linhas de código (mais do que na parte inferior da CHAbstractBinarySearchTree.m), I adicionado a capacidade de atravessar iterativamente uma árvore binária e criar uma representação DOT do mesmo, incluindo informação de equilíbrio, coloração nós vermelhos ou preto, etc ( com um pouco de cuidado, você pode facilmente representar nulo sentinela nós e exibir a árvore na ordem de classificação adequada.)

No meu código de teste, após cada modificação da árvore, liguei -dotGraphString e salvou o resultado para um arquivo .dot, parado lá com um ponto de interrupção, em seguida, abriu esse arquivo com GraphViz, que é inteligente o suficiente para re-render o DOT gráfico quando o arquivo é atualizado. Esta abordagem tornou muito mais fácil de ver o que estava acontecendo na árvore e local erros na minha implementação de um determinado algoritmo. Esta abordagem pode ser adaptado facilmente para vários tipos de estruturas de dados, e é geralmente muito mais rápido e mais fácil do que criar uma interface de usuário apenas para visualizar a estrutura.

Graphviz não vai dar-lhe uma interface gráfica lisa como Visio. Terá, no entanto, produzir bem definidos gráficos. Acho que é mais útil quando eu estou gerando gráficos automaticamente através de um programa (como no caso de doxygen).

Graphviz é mais útil para gerar gráficos de dependência (via dot) programaticamente. visitantes usa para visualizar visitas ao local; Hadoop / cascata usa para visualizar o plano de execução de Map-Reduce empregos.

Eu uso GraphViz extensivamente para documentação e muitas vezes esboçar relacionamentos ou diagramas de arquitetura usando GraphViz externamente, em seguida, adicioná-los para páginas extras no meu código Doxygen usando o @ dot / @ enddot. Eu também recentemente começou a utilizar @dotfile que tem a dupla vantagem de manter grandes declarações ponto fora dos docs código e permitindo-me a continuar a visualizá-los com o GraphViz GUI.

A outra grande vantagem com GraphViz é que o formato de texto simples funciona muito bem com controle de versão. Você pode ver alterações aos diagramas em seu diff git o que seria impossível com qualquer formato de documentação binário. Como eu usei-o mais uma mais ao longo dos anos, isso está se tornando uma característica mais importante para mim.

No entanto, para UML Eu uso uma ferramenta UML verdadeiro ( Enterprise Architect ) ao invés de encher em torno no Visio.

Sim, graphviz é fácil de aprender e fácil de usar a partir de programas.

Também olhar para yed que é uma boa ferramenta para trabalhar com gráficos. Ao contrário Visio, ele irá carregar e salvar uma variedade de formatos que são fáceis de editar manualmente ou programaticamente-gerar. O material auto-layout é muito bom também.

Eu usei-o ocasionalmente para ilustrar máquinas de estado. graphviz é perfeito para isso.

Concordo com o consenso aqui; Eu recebo um monte de valor fora do Graphviz. É muito bom para a criação de simples, e não é tão simples, diagramas. Os desenvolvedores de software tendem a atrair gráficos, e não apenas em código fonte, mas em outros lugares também.

Por exemplo, agora em outra janela do navegador, não tenho do nosso grupo ramificação e mesclagem estratégia ilustrado através de um diagrama de graphviz (exibido usando o confluência plug-in BTW).

Graphviz é bom para a UML também. Consulte este tutorial ; é uma boa introdução ao Graphviz também.

Nós usamos graphviz para gerar automaticamente diagramas de objetos como feedback da nossa ferramenta de verificação de UML. Estamos muito felizes com os resultados, uma vez que conseguem proporcionar um resultado gráfica sem se preocupar em tudo sobre o layout.

Eu tinha um ir com Graphviz algumas vezes, embora achei muito limitante.

O que achei melhor para diagramas texto-entrada manual é TikZ Usei-o por do FSM

Se Graphviz satisfaz saída às suas necessidades específicas, é provavelmente bem. Se você não está muito feliz com o que faz e ter alguma experiência TeX - ter um olhar para TikZ. Lá muitos pacotes diferentes lá fora, você não necessidade de aprender pura TikZ / PGF (que pode parecer muito pesado).

FYI Microsoft Visio Addin para o diagramas de layout com Graphviz: http://www.calvert.ch/graphvizio/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top