PySource2UML -> Umfrage!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.

Besteht Interesse zu so einem Programm?

Ja
17
63%
Nein
10
37%
 
Abstimmungen insgesamt: 27
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

PySource2UML -> Umfrage!

Beitragvon sape » Mittwoch 3. Januar 2007, 07:08

Topic: http://www.python-forum.de/topic-8629.h ... hlight=24h

Besteht Interesse zu so einem Programm?

lg

EDIT: Genaue Beschreibung im Post 4 von diesem Thread.
Zuletzt geändert von sape am Mittwoch 3. Januar 2007, 09:34, insgesamt 1-mal geändert.
cracki
User
Beiträge: 72
Registriert: Montag 25. Dezember 2006, 05:01

Beitragvon cracki » Mittwoch 3. Januar 2007, 08:17

UML den datenbankdesignern und javanern.

fuer *beliebige sprachen* koennte man etwas gebrauchen, was die grobe struktur visualisiert, als schnelluebersicht. aber ob das unbedingt in *UML* sein muss (denn tool-intern ist das wurscht, ob du s-expressions oder binaerstrukturen benutzt)

na ich weiss ja nicht...
...meh...
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 08:40

@cracki:
0o -> http://de.wikipedia.org/wiki/Klassendiagramm


Code: Alles auswählen

class foo(object):
    pass
class bar(foo):
    pass


UML:
Bild
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 09:29

BTW: Erstmal ist nur die Umsetzung von Klassendiagrammen geplant als UML. Dort wird es möglich sein, neben den Klassenvererbungen (wie auf dem Bild) auch Attribute der Klassen anzuzeigen, und auch Docstrings der Klassen bzw. Attribut Beschreibungen die in reSTR (-> #: Diese Atribut...)geschrieben sind. Selbstverständlich lassen sich Docstrings und Attribute ausblenden, damit es nicht überladen aussieht ;) Das ist vorerst geplant.

Hier mal eine Übersicht was für ein Klassendiagram alles nacher anzeigbar sein wird.

Übersicht:
  • Anzeigbare Attribute und Methoden jeder Klasse. Per Knopfdruck lassen sich die wenn gewünscht auch ausblenden und wider einblenden.
  • Es wird eine Sichtbarkeitskenzeichnung von Methoden und Attributen geben.
    "+" für public
    "#" für protected
    "-" für private
    Auch das lässt sich ein und ausblenden.
  • Zu jeder angezeigten Klasse lassen sich Docstrings ein- und ausblenden (das ist erst später geplant. Vorerst wird es das nicht geben).
  • Atrtributs und Methodenbeschreibungen lassen sich ein- und ausblenden (das ist erst später geplant. Vorerst wird es das nicht geben).


So, alle Klassen wie im Bild zu sehen werden sich dann auch wie in Dia 0.95 bewegen lassen können. {EDIT: Ein Export als Bild wird möglich sein und wird es schon in der ersten Version geben.}

Paketdiagramm sind in Späteren Versionen auch geplant: http://de.wikipedia.org/wiki/Paketdiagramm

Alle anderen Diagramtypen von UML wird es wahrscheinlich nicht geben, da die Realisierung wohl ein wenig schwierig wird und mMn auch unnötig ist.

...

Wie dem Titel zu entnehmen soll also eine Python-Quellendatei geladen werden aus dem das Programm dann selbständig ein Klassendiagramm erzeugt :)

lg

P.S.: Bevor ich mich aber an die Arbeit mache, will ich erstmal die Ergebnisse dieser Umfrage abwarten. Schließlich soll das ein Projekt werden an dem mehrere Leute interessiert sind.
cracki
User
Beiträge: 72
Registriert: Montag 25. Dezember 2006, 05:01

Beitragvon cracki » Mittwoch 3. Januar 2007, 10:55

hast du nach bestehenden projekten gesucht?
anstatt dein eigenes sueppchen zu kochen, schmeiss deine ressourcen hinter ein bestehendes projekt. dann zerfliesst die sache wenigstens nicht im sande.
...meh...
BlackJack

Beitragvon BlackJack » Mittwoch 3. Januar 2007, 11:06

Ich finde UML in Verbindung mit Python auch nicht so toll. Sollte man wirklich den Javaianern überlassen. Das ist ein überspezifiziertes "Monster". UML 1.0 hat schon keiner so wirklich verstanden und richtig angewendet.

Ausserdem ist alles so typisch klassenzentriert auf Java zugeschnitten. So etwas wie Module oder Funktionen, die auch Objekte sind, sind nicht wirklich vorgesehen. Und wie man Metaklassen in UML unterbringt, ist mir auch nicht so ganz klar.

Bestehende Projekte wären wohl diverse Python-IDEs, PyUT und Gaphor. Man könnte auch einen Python-Quelltext nach XMI Konverter schreiben und jedes UML-Tool benutzen das XMI lesen kann. Zur Analyse von Python-Quellen gibt's sicher einiges in den Quelltexten von PyLint.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 11:23

cracki hat geschrieben:hast du nach bestehenden projekten gesucht?
Auf UML bezogen oder generell Projekte? Wenn ich was zu "Python-Quellendatei zu UML-Klassendiagram" gefunden hätte würde ich sicherlich nicht so ein Projekt starten. So ein Programm gibt es aber nicht.

BlackJack hat geschrieben:[...]Das ist ein überspezifiziertes "Monster". UML 1.0 hat schon keiner so wirklich verstanden und richtig angewendet.
Jack, es geht doch nicht darum das ganze UML umzusetzen. Es geht doch nur um simple Klassendiagramme und um mehr nicht :)

BlackJack hat geschrieben:[...]So etwas wie Module oder Funktionen, die auch Objekte sind, sind nicht wirklich vorgesehen. Und wie man Metaklassen in UML unterbringt, ist mir auch nicht so ganz klar.
ja das ist mir auch schon aufgefallen, das man Funktionen nicht abbilden kann bzw. nicht in den specs sind. Aber Module sind kein Problem -> Packages. Ob das Package ein Modul oder eben ein Python "Package", ist irrelevant.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 11:25

BTW: Interessantes Ergebnis bis her: 7 = Ja; 4 = Nein!

Hmm, was soll ich da sagen? Halbe-Halbe :D
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 11:29

BlackJack hat geschrieben:Man könnte auch einen Python-Quelltext nach XMI Konverter schreiben und jedes UML-Tool benutzen das XMI lesen kann.
XMI? Was ist das? Meinst du das hier -> http://de.wikipedia.org/wiki/XMI

BlackJack hat geschrieben:Zur Analyse von Python-Quellen gibt's sicher einiges in den Quelltexten von PyLint.
Dafür habe ich doch schon meinen Parser der rudimentäre alles in nem AST abbildet :) Mehr als Klassenname, Attribute und Methoden und die Vererbung muss man ja nicht auswerten und das ist ziemlich simple :D EDIT: selbst import statements sind kein Problem. Auswerten, Laden und "anfügen".
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 11:40

sape hat geschrieben:
BlackJack hat geschrieben:[...]So etwas wie Module oder Funktionen, die auch Objekte sind, sind nicht wirklich vorgesehen. Und wie man Metaklassen in UML unterbringt, ist mir auch nicht so ganz klar.
ja das ist mir auch schon aufgefallen, das man Funktionen nicht abbilden kann bzw. nicht in den specs sind. Aber Module sind kein Problem -> Packages. Ob das Package ein Modul oder eben ein Python "Package", ist irrelevant.

*eineböseideehab* :twisted: Warum erfinden wir nciht einfah selber was das zu Python passt? Das Klassendiagramm Schema kann man schon zu ca. 60% Übernehmen (Dies ganze Datentyp Sache kann man ehe weglassen). Dann noch irgendwas überlegen für Objekte und Funktionen :D Dann was ausdenken um die Beziehungen zwischen den Elementen darzustellen. Blöde Idee?
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 12:10

So wie ich sehe unterstützt Dia aber kein XMI. Das Dia Format ist XML. Umbrello kann XMI aber das gibt es nicht für Linux. Gaphor, werde ich mir ansehen.
BlackJack

Beitragvon BlackJack » Mittwoch 3. Januar 2007, 12:54

sape hat geschrieben:
BlackJack hat geschrieben:Man könnte auch einen Python-Quelltext nach XMI Konverter schreiben und jedes UML-Tool benutzen das XMI lesen kann.
XMI? Was ist das? Meinst du das hier -> http://de.wikipedia.org/wiki/XMI


Ja das meinte ich.

BlackJack hat geschrieben:Zur Analyse von Python-Quellen gibt's sicher einiges in den Quelltexten von PyLint.
Dafür habe ich doch schon meinen Parser der rudimentäre alles in nem AST abbildet :) Mehr als Klassenname, Attribute und Methoden und die Vererbung muss man ja nicht auswerten und das ist ziemlich simple :D EDIT: selbst import statements sind kein Problem. Auswerten, Laden und "anfügen".


Ziemlich simpel?

Code: Alles auswählen

import sys

if sys.platform.startswith('win'):
    import winspam as spam
else:
    import realspam as spam

eggs = __import__(spam.eggs_name())


class A(object):
    def __init__(self, arg):
        self._attr = arg
   
    def __str__(self):
        return 'A %s' % self.attr
   
    def _get_attr(self):
        return '<%s>' % self._attr
   
    attr = property(_get_attr)
   
    to_string = __str__


def spam(self):
    print 'hello I am of class', self.__class__.__name__


B = type('C', (A,), { 'greet': spam })


class C(object):
    pass

:twisted:

Module würde ich übrigens eher als Klassen modellieren. Sie werden ab und zu ja auch als Singletons benutzt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 3. Januar 2007, 13:01

sape hat geschrieben:*eineböseideehab* :twisted: Warum erfinden wir nciht einfah selber was das zu Python passt? Das Klassendiagramm Schema kann man schon zu ca. 60% Übernehmen (Dies ganze Datentyp Sache kann man ehe weglassen). Dann noch irgendwas überlegen für Objekte und Funktionen :D Dann was ausdenken um die Beziehungen zwischen den Elementen darzustellen. Blöde Idee?

Ich habe für "Nein" gestimmt. Warum? Weil ich den Sinn von so etwas nicht sehe. Schön, da habe ich dann ein Klassendiagramm, welches aber Aufgrund der Dynamik von Python stimmen kann, oder aber auch sehr falsch sein kann. BlackJack hat ja schon angesprochen, dass sich einige Sachen in UML nicht darstellen lassen. Mir ist auch unklar, wie es mit den dynamisch erstellen Attributen aussieht. Zum Beispiel kann man durchaus Klassen haben, deren Attribute erst erstellt werden, wenn auf sie zugegriffen wird und danach wieder verschwinden. __getattr__ und __getattribute__ sind in dieser Hinsicht ein gutes Werkzeug um das Klassendiagramm sinnlos zu machen.

Andererseits ist es sicher lustig ein paar Kästchen zu haben in denen die Klassennamen geschrieben sind und die mit Pfeilen verbunden sind. Aber wie soll mir das beim Programmieren helfen? Ich kann auch in die Deklarationszeile eier Klasse schauen und dann bin ich auch so schlau. Für die Dokumentatiion nehme ich sowieso help() oder IPythons ``??``-Werkzeug.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 13:44

OK Leo und Jack, wenn da kein Interesse besteht, stecke ich da meine Energie auch nicht weiter rein und Schmeiße dann alles in den Papierkorb :D Das entprodukt sollte nacher halt Klassen- und Packagediagramme darstellen und auch eine _vernümftige_ Metrik von einem Quellcode anzeigen, wo nicht nur angezeigt wird wieviel Code, Docstrings, Blanks im ganzen Sourcecode vorhanden sind, sonder angezeigt wird wieviel eine Klasse vom genannte hat deren Methoden, Funktionen...Egal. Der Mülleimer wird sich mal wider freuen :D ^^

BlackJack hat geschrieben:Ziemlich simpel?
Ja ;) Erste Testläufe brachten erwartet Ergebnisse :) Aber egal, Thema erledigt.


lg und danke für das ehrliche Feedback cracki, Jack und Leo :)

sape
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 3. Januar 2007, 13:46

Leonidas hat geschrieben: BlackJack hat ja schon angesprochen, dass sich einige Sachen in UML nicht darstellen lassen.
Daher auch die Frage in meine Zitat, das du Zitiert hast, wegen eines eigenen neuen Format das auf Python zugeschnitten ist.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder