Seite 1 von 1

PyReverse, wie geht das?

Verfasst: Montag 10. September 2007, 19:15
von ChrisGTJ
Hallo Leute,

ich bin mal wieder zu doof, wie es scheint: Auch ich habe den Wunsch, UML Diagramme aus vorhandenem Code zu bauen. Ein Tool habe ich gefunden, aber damit ließen sich die Bildchen nicht abspeichern...

Also PyReverse, der Versuch, das alles zu installieren hält mich jetzt schon etwas länger auf:

Ich habe mir pyreverse, logilab-common und logilab-astng runtergeladen und nach Anweisung installiert (python setup.py install).

PyXML wollte ich installieren, leider scheiterte das:
- Die Sourceversion klappt nicht, weil ich kein Visual Studio 7.x installiert habe.
- Die Version 2.4 konnte ich nicht installieren, weil das Installationsprogramm schlau ist, es prüft nämlich, ob Python 2.4 installiert ist, wenn nicht, passiert gar nichts. Was machen die Deppen, die 2.5.1 installiert haben???

Ok, ich hoffe, daß auf wundersame Weise die Sachen von PyXML schon in der Standardinstallation drin sind.

Also wollte ich das Tool pyargo starten, einfach so aus der Kommandozeile. Das bricht ab mit der folgenden Fehlermeldung:

Code: Alles auswählen

  File "E:\programs\python\Lib\site-packages\pyreverse\pyargo.py", line 22, in <module>
    from pyreverse.utils import RunHelper
  File "E:\programs\python\lib\site-packages\pyreverse\utils.py", line 24, in <module>
    from logilab.common.astng.utils import is_interface, is_exception, \
ImportError: No module named astng.utils
Das Modul ist tatsächlich nicht da, wo es erwartet wird, sondern parallel zu "common". wenn man es reinkopiert, dann klappt es auch nicht, weil dann der Name "is_interface" fehlt.

Die ganze Sache fing schon schief an, beim setup.py sollte die Zeile

Code: Alles auswählen

from __future__ import nested_scopes
ganz am Dateianfang stehen, was sie nicht tat. Irgendwie paßt hier eines nicht zu anderen.

Was mache ich falsch? Hat irgendjemand diese Hürden schon mal umschifft?

Gruß und Danke,

Christoph

Verfasst: Montag 10. September 2007, 20:58
von BlackJack
Wird PyReverse überhaupt noch entwickelt? Das machte auf mich mal einen relativ toten Eindruck.

Verfasst: Montag 10. September 2007, 21:04
von ChrisGTJ
BlackJack hat geschrieben:Wird PyReverse überhaupt noch entwickelt? Das machte auf mich mal einen relativ toten Eindruck.
Sollte das nicht egal sein? Wenn es mal funktioniert hat, warum sollte es dann nicht weiter funktionieren? Es sei denn wegen irgendwelcher Inkompatibilitäten. Aber das, was ich da sehe, sind Bugs oder Unfähigkeit meinerseits.

Gibt es denn ein anderes brauchbares Tool, das unter Windows läuft?

Gruß und Danke,

Christoph

Verfasst: Montag 10. September 2007, 21:21
von BlackJack
Denke nicht, dass es an Deiner Unfähigkeit liegt. ;-) Es gibt zum Beispiel im aktuellen `logilab.astng.utils` weder `is_interface()` noch `is_exception()`. `astng` ist wichtig für `pylint`, wird aktiv weiterentwickelt und verändert sich anscheinend. PyReverse ist laut Homepage vor ca. einem Jahr in den Status "asleep" versetzt worden.

Verfasst: Dienstag 11. September 2007, 09:44
von ChrisGTJ
BlackJack hat geschrieben:Denke nicht, dass es an Deiner Unfähigkeit liegt. ;-) Es gibt zum Beispiel im aktuellen `logilab.astng.utils` weder `is_interface()` noch `is_exception()`. `astng` ist wichtig für `pylint`, wird aktiv weiterentwickelt und verändert sich anscheinend. PyReverse ist laut Homepage vor ca. einem Jahr in den Status "asleep" versetzt worden.
Danke für Dein Vertrauen ;).

Es ist natürlich schade, daß es nicht weiterentwickelt wird, aber da so wenig Feedback auf die Frage kommt, scheint das Interesse an dem Thema eh nicht so groß zu sein.

Wie aufwendig wäre es wohl, PyReverse auf den neuesten Stand zu bringen? Zu erst müßte man wohl rausfinden, ob es überhaupt das richtige Tool ist, das wollte ich ja gerade tun. Dann wäre interessant, warum es schläft. Und dann? Fröhliches entwanzen...

Gruß,

Christoph

Verfasst: Dienstag 11. September 2007, 13:14
von BlackJack
Bei mir hält sich das Interesse in Grenzen weil UML offenbar hauptsächlich für statische, klassenfixierte Sprachen entworfen wurde. Die grossen Interface- und Vererbungshierarchien bei Sprachen wie Java gibt es in Python nicht, damit auch weniger Bedarf an Übersichtsbildern davon.

Verfasst: Dienstag 11. September 2007, 15:00
von Leonidas
ChrisGTJ hat geschrieben:Es ist natürlich schade, daß es nicht weiterentwickelt wird, aber da so wenig Feedback auf die Frage kommt, scheint das Interesse an dem Thema eh nicht so groß zu sein.

Wie aufwendig wäre es wohl, PyReverse auf den neuesten Stand zu bringen? Zu erst müßte man wohl rausfinden, ob es überhaupt das richtige Tool ist, das wollte ich ja gerade tun. Dann wäre interessant, warum es schläft. Und dann? Fröhliches entwanzen...
Das Interesse von meiner Seite ist ebenso gering, da für mich UML-Diagramme ähnlich langweilig und arbeitsaufwendig wie Struktogramme sind. Sie bringen kaum (wenn überhaupt) Mehrwert aber man verschwendet Zeit wenn man sie generiert und verstehen muss. In Python sind die Klassenstrukturen in der Regel sowieso nicht dermaßen kompliziert.

Verfasst: Mittwoch 12. September 2007, 09:53
von ChrisGTJ
Moin,

ich habe mir mal die Demoversion von Visual Paradigm runtergeladen. Zum Spaß habe ich mal eine Klasse in dem Teil kreiert und finde es reichlich zeitaufwendig und vorallem viel klicki-klacki mit der Maus. Den Code direkt zu schreiben finde ich schon besser.

Allerdings finde ich das reverse engineering einen guten Weg, um mal eben schnell (und tatsächlich, es geht "mal eben schnell" mit dem Tool) einen Überblick über die tatsächlichen Zusammenhänge zu gewinnen. Wie macht Ihr das?

Die Klassenzusammenhänge sind tatsächlich nicht sooo komplex, aber 120 Klassen tummeln sich da doch schon herum, ist das ein Designfehler (jetzt wird's richtig off topic ;) )? Da ist überblick schon mal eine feine Sache.

Gruß,

Christoph

Verfasst: Mittwoch 12. September 2007, 11:54
von BlackJack
Die Anzahl der Klassen sagt ja noch nichts über die Komplexität der Zusammenhänge aus. Und ich nehme mal an, die 120 Klassen sind auch noch einmal in Module und vielleicht Packages unterteilt und dokumentiert!? Dann bekommt man mit `pydoc` oder `epydoc` einen Überblick.

Verfasst: Mittwoch 12. September 2007, 13:01
von ChrisGTJ
Sicher sind sie das. Wir nutzen DoxyGen, was aber leider auch noch ein paar Schwächen hat.

Gruß,

Christoph