Seite 1 von 2

UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 24. August 2018, 17:09
von Atalanttore
Hallo

Verwendet hier jemand ein (kostenloses) UML-Werkzeug zur Generierung von Python-Code und umgekehrt?

Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 24. August 2018, 17:23
von __blackjack__
Ich nicht. Zumal nur UML zu Python wirklich funktioniert. Allgemein Python zu UML wird schwierig weil UML nicht gut für dynamisch typisierte Programmiersprachen geeignet ist. Was auf der anderen Seite bedeutet, das aus UML generiertes Python ist nicht unbedingt idiomatisch.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 24. August 2018, 17:59
von Atalanttore
Meinst du mit "idiomatisch" professionell programmiert?

PS: PyCharm soll UML-Klassendiagramme aus Python-Code erstellen können, aber leider nicht in der kostenlosen Community Edition.

Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 24. August 2018, 18:23
von __blackjack__
@Atalanttore: Nein, mit nicht idiomatisch meine ich nicht wie man das in Python üblicherweise schreiben würde.

Wozu brauchst Du das denn?

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 24. August 2018, 18:37
von Atalanttore
Ich würde gerne eigene UML-Klassendiagramme mit einem aus Python-Code erstellten und korrekten Klassendiagramm vergleichen und so Fehlern auf die Spur kommen. Ich kenne einigermaßen die Grundlagen von UML, aber mehr auch nicht. Ob meine UML-Diagramme tatsächlich richtig sind, hat mehr von raten als von wissen.

Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 24. August 2018, 20:06
von __deets__
Das geht nicht. Schon mit einer statisch typisierten Sprache ist die Abstraktion von UML zu echtem Code eigentlich zu gross. Bei Python kommt kein Code-Analyse-Tool hinterher, da eine korrekte Abhaengigkeitstruktur abzuleiten.

UML ist als Modellierungshilfe fuer den ein oder anderen gut, aber die feuchten Fantasien von Rational Rose, dass man damit einfach per Bildchen-malen die vermaledeiten Programmierer durch BWL-Master-geschulte Businessanalysten ersetzen kann hat sich zumindest bis dato noch nicht erfuellt. Wenn dein Code Bugs hat, dann ist es unwahrscheinlich, dass UML dir da einen AHA-Moment beschert.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Freitag 31. August 2018, 19:56
von Atalanttore
Welche Diagramme und Werkzeuge nimmt man üblicherweise für Python?

Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Samstag 1. September 2018, 00:57
von __deets__
Keine. Für keine Sprache funktioniert UML wie beworben. Aber für statische Programmiersprachen deutlich besser. Wenn dir das wichtig ist, nimm Java.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Samstag 1. September 2018, 12:01
von __blackjack__
Also ich habe UML auch schon für Python verwendet um jemand anderem etwas komplexere Zusammenhänge zwischen Klassen in einem Programm zu vermitteln. Allerdings habe ich da nichts aus dem Code generiert und zum Teil waren die Werkzeuge ein Whiteboard und die dazugehörigen Stifte. :-)

Für Sphinx gibt es ein Plugin um SQLAlchemy-ORM-Klassen in einem UML-Diagramm darzustellen, das verwende ich um eine Übersicht der Tabellenbeziehungen in der Dokumentation zu erzeugen. Das Plugin verwendet PlantUML um das Bild zu erstellen. PlantUML habe ich auch schon ”manuell” verwendet um UML-Diagramme zu erstellen. Zum Beispiel Deployment-Diagramme um eine grobe Übersicht über Systeme zu erstellen die nicht aus einer einzelnen Anwendung und einer Datenbank bestehen, sondern aus vielen verschiedenen Systemen und Diensten, die auf viele Rechner verteilt sind.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 16. September 2018, 17:50
von Atalanttore
Was verwenden erfahrene Python-Entwickler dann, um ein neues Softwareprojekt zu planen?

Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 16. September 2018, 18:31
von __blackjack__
@Atalanttore: Erfahrung, gesunden Menschenverstand, Papier und Stift(e), Texteditor, … :-)

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 16. September 2018, 19:00
von DasIch
Der Großteil der Planung geht bei uns in die API und da gibt es Swagger. Ansonsten sieht man Level 1-2 C4 Diagramme, welche als Dokumentation schon nützlich sind, vorausgesetzt man nutzt Microservices.

Das betrifft auch nicht nur Python sondern auch viele andere Sprachen, meiner Erfahrung nach auch Java.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 16. September 2018, 19:22
von __deets__
@DasIch das ist natuerlich schon speziell fuer uServices und REST-APIs. Aber Swagger sieht cool aus, falls das jemals wieder mein Bereich wird.

Fuer meine Echtzeit-Linux-Umgebung mit C++ sind es hauptsaechlich Entwurfsdokumente und persoenliche Diskussionen, und dann testgetriebene Entwicklung plus Code-Reviews.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Mittwoch 19. September 2018, 21:40
von Atalanttore
__blackjack__ hat geschrieben: Sonntag 16. September 2018, 18:31 @Atalanttore: Erfahrung, gesunden Menschenverstand, Papier und Stift(e), Texteditor, … :-)
Meinst du mit "gesunder Menschenverstand" aussagekräftige Bezeichnernamen und hilfreiche Kommentare im Quellcode?

__deets__ hat geschrieben: Sonntag 16. September 2018, 19:22 Fuer meine Echtzeit-Linux-Umgebung mit C++ sind es hauptsaechlich Entwurfsdokumente und persoenliche Diskussionen, und dann testgetriebene Entwicklung plus Code-Reviews.
Schreibst du die Entwurfsdokumente selbst und setzt sie anschließend in Software um?
Bei einem Vortrag auf YouTube (34C3) wurde aber der Eindruck erweckt, dass testgetriebene Entwicklung in der Praxis nicht vorkommt. :roll:


Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Mittwoch 19. September 2018, 21:54
von __deets__
Wir sind ja ein freies Land, in dem jeder sagen darf, was er will. Unabhängig davon, ob es nun wahr ist oder nicht. Ich habe schon viel Code Test getrieben entwickelt. Und das “in der Praxis”. Natürlich ist TDD in einem Kernel-Modul nicht möglich. Aber für bestimmte Units, die zB die Übersetzung von rohen Bytes in einen Anwedungsspezifischen Typen erlauben, habe ich genau das vor einigen Tagen gemacht. Und in Python, bei dem sowas viel einfacher geht, ganze Teilprojekte. Die Aussage aus dem Video ist also in allgemeiner Form Bullshit.

Und ja, die Dokumente schreiben wir selbst, kommentieren, klären Fragen, und setzen dann um. Wobei es die Dokumente nur gibt, wenn man den Input verschiedener Entwickler die ggf auch nicht im eigenen Team sind braucht, oder zu anderen Kommunikationszwecken. Viel öfter sind Pair-Programming, Whiteboard und Codereviews das Mittel der Wahl.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Mittwoch 19. September 2018, 22:53
von __blackjack__
@Atalanttore: Mit gesundem Menschenverstand meinte ich das man nachdenkt was man da macht und nicht blind irgendwelche Werkzeuge oder Glaubensrichtungen einsetzt, sondern schaut was im konkreten Fall Sinn macht.

Es kommt denke ich auch immer darauf an was und in welchem Umfeld man umsetzt. Bei mir ist das in der Regel firmenintern verwendete Software die eher organisch wächst und wo ich einen sehr kurzen Draht zu den Endanwendern habe. Da kann man sich weniger und vor allem weniger starre Planung erlauben. Die Entwicklung ist hauptsächlich durch die Bedürfnisse der Anwender getrieben. Manchmal gibt es Sachen die zeitnah umgesetzt werden müssen, ansonsten gibt es immer einen Vorrat von Tickets mit Aufgaben. Teilweise neue Features, teilweise kleinere Änderungen/Verbesserungen, und dann auch regelmässige Wartungsarbeiten, wie regelmässig schauen ob es von eingesetzten Bibliotheken neue Versionen gibt, oder jetzt auch mittel- bis langfristig ein Umstieg auf Python 3 bei den Projekten wo das Sinn macht.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 23. September 2018, 18:34
von Atalanttore
Kommen Entwurfsmuster bei Python-Projekten in der Praxis häufiger zum Einsatz, also lohnt es sich damit zu beschäftigen oder eher nicht?

Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 23. September 2018, 19:33
von __blackjack__
@Atalanttore: Entwurfsmuster kommen eigentlich überall zum Einsatz. Man muss allerdings vorsichtig sein ob sie zur Sprache passen. Das was den ”Hype” ausgelöst hat, sind ja Entwurfsmuster für statisch typisierte, objektorientierte Programmiersprachen. Also immer dran denken das Python kein Java oder C++ ist und nicht jedes Muster in jeder Sprache Sinn macht, oder so aussehen muss wie in Java oder C++ & Co.

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 23. September 2018, 19:57
von Atalanttore
@__blackjack__: Dazu habe ich mehrere Fragen:
  • Wie erkennt man, ob ein Entwurfsmuster zur Sprache passt?
  • Was unterscheidet die objektorientierte Programmierung in Python von objektorientierten Programmiersprachen?
  • Reichen Typinformationen in Python nicht aus, um die Vorteile von statischer Typisierung über Umwege auch in Python zu bekommen?
Gruß
Atalanttore

Re: UML-Werkzeug zur Generierung von Python-Code und umgekehrt

Verfasst: Sonntag 23. September 2018, 20:10
von Sirius3
Die Frage ist, ob es Dir hilft, ein bestimmtes Tool zu benutzen. Von welchen "objektorientierten Programmiersprachen" redest Du? Es gibt etliche Umsetzungen von Objektorientierung.
Welche Vorteile soll denn statische Typisierung überhaupt haben? Wenn Du das willst, warum willst Du dann Python benutzen?