111 votes

Bon outil pour générer un diagramme de dépendance ?

Un bon outil pour générer un diagramme de dépendance ?

Entrée : tout format simple (pas toujours le code source) pour décrire la relation de dépendance de plusieurs éléments. Par exemple : A dépend de B, C ; C dépend de D, E ...

Résultat : un diagramme de dépendances bien organisé.

55voto

PW. Points 3052

Graphviz est ce dont vous avez besoin. ( exemples (cliquez sur chaque image pour voir le code en grammaire DOT qui a été utilisé pour générer le graphique). Il peut traiter des graphes dirigés et non dirigés.

(BTW : doxygen utilise graphiz pour générer ses sorties graphiques)

51voto

Annika Backstrom Points 8138

Dernièrement, j'ai utilisé yuml.me qui présente des caractéristiques intéressantes, notamment plusieurs types de diagrammes et des URL courtes.

Par exemple, cette URL : http://yuml.me/diagram/scruffy/class/[A]->[B], [B]->[C]

alt text

9voto

NDepend est livré avec un graphique de dépendance couplé à une matrice de dépendances. Vous pouvez essayer NDepend directement sur votre code grâce à une Version d'essai gratuite . Voir les captures d'écran extraites de la documentation : Graphique NDepend

Dependency GraphCycle GraphCall Graph

NDepend est également livré avec un Matrice de la structure des dépendances très utile lorsque le graphique devient trop grand :

enter image description here

8voto

Jeffrey04 Points 1647

Vous voudrez probablement essayer graphviz comme ce que d'autres ont dit. Pour tester graphviz, vous pouvez visiter ce site Ajax/Graphviz .

Vous pouvez copier et coller ce simple code sur le site et voir le graphique généré

digraph {
    a->b;
    b->c;
    c->d;
    c->e;
}

Il y a plus de choses qui peuvent être jouées autour, essayez de chercher un tutoriel, j'ai eu le mien en format pdf titré Dessiner des graphiques avec des points (Emden Gansner et Eleftherios Koutsofios et Stephen North) daté du 26 janvier 2006 qui est très détaillé.

C'est juste un autre exemple pour montrer une variante du FSM.

digraph {
    rankdir=TD;
    node [shape=ellipse style=filled fillcolor=skyblue];

    // States
    0 [ label = "NEW", peripheries = 2 ];
    00 [ label = "DELETED", peripheries = 2 ];
    draft [ label = "draft (1)\n(authenticated user, editor)" ];
    submitted [ label = "submitted (2)\n(authenticated user, editor)" ];
    published [ label = "published (3)\n(authenticated user, editor)", peripheries=2 ];
    rejected [ label = "rejected (4)\n(authenticated user, editor)" ];

    // Transitions
    0 -> draft [ label = "write_draft (write draft) (1)\n(authenticated user)" ];
    draft -> submitted [ label = "submit_draft (submit draft) (2)\n(authenticated user)" ];
    submitted -> published [ label = "publish_submission (published submitted) (3)\n(editor)" ];
    submitted -> rejected [ label = "reject_submission (reject_submission) (4)\n(editor)" ];
    rejected -> 00 [ label = "delete (Delete the article) (5)\n(editor)" ];

}

5voto

Danny Tuppeny Points 9856

J'avais besoin de quelque chose de similaire, mais je ne voulais pas payer (ou installer) un outil pour le faire. I créé un rapide PowerShell script qui passe en revue les références du projet et les recrache dans un yuml.me friendly-format à la place :

Function Get-ProjectReferences ($rootFolder)
{
    $projectFiles = Get-ChildItem $rootFolder -Filter *.csproj -Recurse
    $ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

    $projectFiles | ForEach-Object {
        $projectFile = $_ | Select-Object -ExpandProperty FullName
        $projectName = $_ | Select-Object -ExpandProperty BaseName
        $projectXml = [xml](Get-Content $projectFile)

        $projectReferences = $projectXml | Select-Xml '//defaultNamespace:ProjectReference/defaultNamespace:Name' -Namespace $ns | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty "#text"

        $projectReferences | ForEach-Object {
            "[" + $projectName + "] -> [" + $_ + "]"
        }
    }
}

Get-ProjectReferences "C:\Users\DanTup\Documents\MyProject" | Out-File "C:\Users\DanTup\Documents\MyProject\References.txt"

Sample Graph

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X