UML-Werkzeug zur Generierung von Python-Code und umgekehrt

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.
Atalanttore
User
Beiträge: 99
Registriert: Freitag 6. August 2010, 17:03

Freitag 24. August 2018, 17:09

Hallo

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

Gruß
Atalanttore
Benutzeravatar
__blackjack__
User
Beiträge: 1229
Registriert: Samstag 2. Juni 2018, 10:21

Freitag 24. August 2018, 17:23

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.
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
Atalanttore
User
Beiträge: 99
Registriert: Freitag 6. August 2010, 17:03

Freitag 24. August 2018, 17:59

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
Benutzeravatar
__blackjack__
User
Beiträge: 1229
Registriert: Samstag 2. Juni 2018, 10:21

Freitag 24. August 2018, 18:23

@Atalanttore: Nein, mit nicht idiomatisch meine ich nicht wie man das in Python üblicherweise schreiben würde.

Wozu brauchst Du das denn?
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
Atalanttore
User
Beiträge: 99
Registriert: Freitag 6. August 2010, 17:03

Freitag 24. August 2018, 18:37

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
__deets__
User
Beiträge: 3490
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 24. August 2018, 20:06

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.
Atalanttore
User
Beiträge: 99
Registriert: Freitag 6. August 2010, 17:03

Freitag 31. August 2018, 19:56

Welche Diagramme und Werkzeuge nimmt man üblicherweise für Python?

Gruß
Atalanttore
__deets__
User
Beiträge: 3490
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 1. September 2018, 00:57

Keine. Für keine Sprache funktioniert UML wie beworben. Aber für statische Programmiersprachen deutlich besser. Wenn dir das wichtig ist, nimm Java.
Benutzeravatar
__blackjack__
User
Beiträge: 1229
Registriert: Samstag 2. Juni 2018, 10:21

Samstag 1. September 2018, 12:01

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.
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
Atalanttore
User
Beiträge: 99
Registriert: Freitag 6. August 2010, 17:03

Sonntag 16. September 2018, 17:50

Was verwenden erfahrene Python-Entwickler dann, um ein neues Softwareprojekt zu planen?

Gruß
Atalanttore
Benutzeravatar
__blackjack__
User
Beiträge: 1229
Registriert: Samstag 2. Juni 2018, 10:21

Sonntag 16. September 2018, 18:31

@Atalanttore: Erfahrung, gesunden Menschenverstand, Papier und Stift(e), Texteditor, … :-)
“Pets are always a great help in times of stress. And in times of starvation too, o'course.” — Terry Pratchett, Small Gods
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Sonntag 16. September 2018, 19:00

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.
__deets__
User
Beiträge: 3490
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 16. September 2018, 19:22

@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.
Atalanttore
User
Beiträge: 99
Registriert: Freitag 6. August 2010, 17:03

Mittwoch 19. September 2018, 21:40

__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
__deets__
User
Beiträge: 3490
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 19. September 2018, 21:54

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.
Antworten