IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Analyse les sources et afficher des graphes d'agrégation


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Analyse les sources et afficher des graphes d'agrégation
    Bonjour,

    Je recherche un outil d'analyse de sources Python capable de produire des graphes d'agrégation/composition.

    J'ai essayé avec Doxygen, c'est nickel pour les graphes d'héritage, mais ça ne marche pas pour les graphes d'agrégation/composition.

    Quelqu'un connaît-il un outil qui fait cela ? Je me demande même si c'est possible en fait, vu que python est plutôt faiblement typé ...

    Merci pour votre aide !

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour,
    peux-tu préciser sur un exemple simple de ce que tu souhaites avoir ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    A partir du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #!/usr/bin/env python
    # -*- coding: latin-1 -*-
    #
     
    class Carosserie :
        def __init__( self,   couleur="rouge" ) : 
            self.couleur = couleur
     
    class Roue :
        def __init__( self,  taille=165 ) : 
            self.taille = taille
     
    class Voiture :
        def __init__( self, modele, carosserie, roues = [] ) :
            self.modele    = modele
            self.roues     = roues
            self.carosserie = carosserie
     
        def addRoues( self, rouesList ) :
            self.roues.extend( rouesList )
     
    uneCarosserie = Carosserie( )
     
    premiereRoue   = Roue ( )
    deuxiemeRoue   = Roue ( )
    troisiemeRoue  = Roue ( ) 
    quatriemeRoue  = Roue ( )
     
    maVoiture = Voiture( "Renault", uneCarosserie )  
     
    maVoiture.addRoues( [ premiereRoue, deuxiemeRoue,  troisiemeRoue, quatriemeRoue] )
    obtenir le graphe d'agrégation :


  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    en effet, à ma connaissance doxygen et epydoc ne gérent que les diagrammes d'héritage, cad les relations "est un" mais pas les compositions ou les relations "a un".

    j'ai fait une recherche google très rapide avec comme mot clé "python uml" et je suis tombé sur ça:

    http://sourceforge.net/projects/pyut/

    de plus, je suis presque sûr que quelqu'un soit passé sur ce forum à propos d'un outil qu'il réalisait pour faire quelque chose de similaire et je n'arrive pas à retrouver la file.

    edit: hmm, en fait la file, c'était le deuxième lien google: http://www.developpez.net/forums/d46...on/python-uml/

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos liens.

    Je connaissais BOUML mais pas PYUT que je n'ai pas réussis à installer sous Unix (il me demande le module py2exe ...).

    BOUML peut produire du code Python à partir de diagrammes UML. Ce que je cherche c'est exactement l'inverse. Doxygen le fait pour les graphes d'héritages, mais je ne trouve aucun outil qui le fasse pour les graphes de composition/agrégation.
    Peut-être est-ce techniquement impossible ...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Je ne sais pas si c'est possible en Python. Ce genre d'outil se base sur une analyse syntaxique. De par le typage dynamique de Python, le type des attributs n'est pas déclaré et n'est pas connu avant l'exécution. Il n'y a donc pas moyen, par exemple, de déterminer que l'attribut roues de Voitures recevra une liste d'instances de Roue sans exécuter le code. Réaliser ce type d'outil demanderait d'interpréter le code Python dans une sandbox, ce qui me semble fort compliqué...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Oui je suis arrivée plus ou moins à la même conclusion.

    Je regarde en ce moment EPYDOC qui présente sur son site des graphes d'agrégation censés être produit à partir des sources.

    http://epydoc.sourceforge.net/api/ep...Doc-class.html

    Il est basé à la fois sur le parsing et sur l'exécution des sources (à travers les possibilités d'introspection de Python).

    Hélas, pour l'instant, j'ai une erreur cryptique à pendant l'exécution de dot
    (l'utilitaire qui dessine les graphes).

    Il y a aussi PYNSOURCE qui annonce pouvoir le faire :

    http://www.andypatterns.com/index.ph...-_screenshots/

    Pour l'instant je n'arrive pas à l'installer ...

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Bonjour,

    SPE (stani's python editor) propose cette fonction. Je te propose donc de jeter un coup d'oeil sur son code source (codé avec wxPython) :

    http://svn.berlios.de/wsvn/python/sp..._spe/sm/uml.py


    A +

Discussions similaires

  1. recherche librairie AS3 open source pour afficher des graphiques
    Par Lorenzo77 dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 07/05/2010, 00h05
  2. Réponses: 0
    Dernier message: 20/04/2010, 18h28
  3. Afficher des graphes sur une page web
    Par zalalus dans le forum C#
    Réponses: 1
    Dernier message: 19/08/2009, 10h55
  4. afficher des graphes (histogrammes) et des tableaux
    Par _pegasus_ dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/05/2009, 22h35
  5. Réponses: 10
    Dernier message: 28/05/2005, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo