paint-brush
ChatGPT: Ihr zeitsparender Begleiter für die Erstellung von UML-Diagrammenvon@nastyakostina
5,366 Lesungen
5,366 Lesungen

ChatGPT: Ihr zeitsparender Begleiter für die Erstellung von UML-Diagrammen

von Anastasiia Kostina9m2024/02/07
Read on Terminal Reader

Zu lang; Lesen

Erstellen und verbessern Sie mühelos UML-Diagramme mit ChatGPT mithilfe der PlantUML-Codegenerierung. Sparen Sie Zeit, rationalisieren Sie Prozesse und optimieren Sie Ihre Arbeit, sodass die Diagrammerstellung effizienter und angenehmer wird.
featured image - ChatGPT: Ihr zeitsparender Begleiter für die Erstellung von UML-Diagrammen
Anastasiia Kostina HackerNoon profile picture

Meine erste Begegnung mit ChatGPT war von purer Neugier getrieben, als es veröffentlicht wurde. Ich war besonders von Artikeln angetan, in denen es um die Codegenerierung ging, auch wenn ich selbst keinen Code schreibe. Und ich glaubte zunächst, dass diese Funktion für mich nicht relevant wäre.


Es kam jedoch der Moment, in dem ich an einem UML-Diagramm arbeitete, das ich nicht unbedingt erstellen wollte.


In meinem Bestreben, den Prozess zu vereinfachen oder zu beschleunigen, habe ich auf verschiedene Methoden zurückgegriffen. Normalerweise erstelle ich UML-Diagramme mit PlantUML-Code ... hier wurde mir klar: Dies ist eine Form von Code, und Code kann generiert werden.


Dadurch hat sich ChatGPT zu einem wertvollen Werkzeug für meine Diagrammerstellung entwickelt und ich freue mich nun, meine Erfahrungen mit Ihnen zu teilen.

Ein paar Worte zu UML

UML steht für Unified Modeling Language und dient als Sprache zum Spezifizieren, Visualisieren, Konstruieren und Dokumentieren von Artefakten von Softwaresystemen. UML basiert auf Konzepten objektorientierter Programmiersprachen. Entwicklungskenntnisse sind für die UML-Modellierung von Vorteil, aber nicht zwingend erforderlich.


Es soll in erster Linie Aspekte des Softwaredesigns beschreiben, bietet aber auch eine Reihe von Verhaltensdiagrammen zur Modellierung von Geschäfts- oder Benutzeranforderungen.


In meiner Rolle beschäftige ich mich mit IT-Geschäftsprozessen und konzentriere mich insbesondere darauf, sie zur Analyse und Optimierung zu modellieren und in ein klares Format zu übersetzen, damit Entwickler sie implementieren können.

Bei der Modellierung verwende ich verschiedene Ansätze und Werkzeuge, eines davon ist UML.


Das Schöne daran ist, dass Sie kein Softwareentwickler sein müssen, um UML nutzen zu können. Ich verwende es, um durch mit Software implementierte Geschäftsprozesse zu navigieren, aber es geht darüber hinaus – es ist bemerkenswert vielseitig und kann von verschiedenen Rollen in unterschiedlichen Entwicklungsstadien angewendet werden. Alles in allem, probieren Sie es aus; Es könnte sein, dass Sie es einfach lieben.

Zeichnen vs. Code

Wie jedes Diagramm können Sie es ganz einfach zeichnen – es ist einfach, bequem, schnell und bietet einen klaren Überblick über den Prozess und das Ergebnis. Dafür stehen zahlreiche Grafiktools zur Verfügung, die ich auch nutze. Dank PlantUML wähle ich jedoch meistens den „Code“-Ansatz.


Mit PlantUML , einer Open-Source-Modellierungssprache und einem Open-Source-Tool, können Sie Diagramme basierend auf Klartextsprache erstellen. Vereinfacht ausgedrückt können Sie in PlantUML Code schreiben, um Diagramme zu erstellen.


Ich genieße es, Diagramme in meinem „Kreativmodus“ zu skizzieren, aber meistens konvertiere ich sie anschließend entweder in Code oder schreibe den Code direkt. Dafür gibt es zwei Hauptgründe:

  1. Sie können Blöcke viel effizienter in Ihre Diagramme einfügen, verschieben und löschen

    Das Ändern der Reihenfolge von Blöcken in gezeichneten Diagrammen führt häufig zu Änderungen im gesamten Diagramm, die sich auf andere Blöcke und Verknüpfungen auswirken. Wenn Sie mit Code arbeiten, müssen Sie sich nicht um den visuellen Aspekt kümmern; Sie haben es mit einem Text zu tun und PlantUML übernimmt die grafische Darstellung für Sie.


  2. Sie können mit einfachen Textdateien arbeiten und diese speichern, anstatt sich mit Bildern zu befassen

    Dies ist insbesondere dann von Vorteil, wenn Sie in der Dokumentation auf Abbildungen von Diagrammen stoßen. Die Qualität kann beeinträchtigt sein. Mit solchen Diagrammen kann nicht weitergearbeitet werden, sie können nur neu gezeichnet, nicht aber bearbeitet oder erweitert werden.


Ein weiterer wesentlicher Vorteil besteht darin, dass ChatGPT PlantUML versteht und Code generieren kann , sodass Sie die Vorteile der Codegenerierung nutzen und diese nahtlos in UML integrieren können. Im Folgenden werde ich einige Beispiele aus meiner persönlichen Erfahrung nennen.


Sie können beliebige Code-Editoren für PluntUML verwenden. Ich persönlich bevorzuge darin Visual Studio Code und die PlantUML-Erweiterung. Eine andere Möglichkeit besteht darin, Online-Redakteure wie https://plantuml.com oder andere zu verwenden.

ChatGPT, schreibe PluntUML-Code für mich

Beispiel 1 – Ich möchte nicht mit einer leeren Tafel beginnen

Lassen Sie uns ein Anwendungsfalldiagramm für eine Taxianwendung erstellen.


Zuerst verwende ich eine Eingabeaufforderung:

Verwenden Sie die Syntax von https://plantuml.com/ru/use-case-diagram und erstellen Sie ein Anwendungsfalldiagramm für eine Taxi-App


ChatGPT generiert einen Code:

 @startuml left to right direction actor "Passenger" as passenger actor "Driver" as driver rectangle "Taxi App" { usecase "Request Ride" as request usecase "Cancel Ride" as cancel usecase "Track Ride" as track usecase "Payment" as payment passenger -- (request) passenger -- (cancel) passenger -- (track) passenger -- (payment) driver -- (track) driver -- (payment) (request) --> (cancel) (request) --> (track) (track) --> (payment) } @enduml

Visuelle Ansicht:


Die Idee ist in Ordnung, aber nur vier Fälle zu haben, scheint unzureichend. Ich bitte darum, zusätzliche Fälle hinzuzufügen und es mit einigen Syntaxbeispielen zu erweitern, da es in PlantUML keine ähnlichen gibt. Prompt:

Wenn Sie weitere Fälle hinzufügen, können Sie verschiedene Arten von Links verwenden, z. B. „include“, „extends“ und „generalization“, Syntax:

(case1) .> (case2_includes_case1) : <<include>>

(Elternteil) <|-- (Kind)

(case1 erweitert case 2) .> (case2) : <<extends>>


Dann frage ich mehrmals danach

weitere Fälle hinzufügen


noch einmal und stellen Sie einige konkrete Anfragen zur Behebung von Fehlern.


Hier ist das Endergebnis von ChatGPT:

 @startuml left to right direction actor "Passenger" as passenger actor "Driver" as driver rectangle "Taxi App" { usecase "Request Ride" as request usecase "Cancel Ride" as cancel usecase "Track Ride" as track usecase "Payment" as payment usecase "Rate Driver" as rate usecase "View Ride History" as history usecase "Select Ride Type" as selectType usecase "Provide Feedback" as feedback usecase "View Driver Information" as driverInfo usecase "Update Profile" as updateProfile usecase "Promo Code" as promoCode usecase "Emergency Assistance" as emergencyAssistance passenger -- (selectType) passenger -- (request) passenger -- (cancel) passenger -- (track) passenger -- (payment) passenger -- (rate) passenger -- (history) passenger -- (feedback) passenger -- (driverInfo) passenger -- (updateProfile) passenger -- (promoCode) passenger -- (emergencyAssistance) driver -- (track) driver -- (payment) driver -- (rate) (request) ---> (cancel) (request) ---> (track) (track) ---> (payment) (track) ---> (rate) (history) --> (payment) (rate) --> (payment) (rate) ---> (track) (cancel) --> (request) (selectType) --> (request) (feedback) --> (rate) (driverInfo) ---> (track) (updateProfile) --> (track) (promoCode) --> (payment) (emergencyAssistance) --> (track) } @enduml 

Ich mag die Fälle, aber nicht die Verbindungen zwischen ihnen. Also bearbeite ich diesen Code ein wenig.


Hier ist das Endergebnis:

 @startuml actor "Passenger" as passenger actor "Driver" as driver rectangle "Taxi App" { usecase "Request Ride" as request usecase "Cancel Ride" as cancel usecase "Track Ride" as track usecase "Payment" as payment usecase "Rate Driver" as rate usecase "View Ride History" as history usecase "Select Ride Type" as selectType usecase "Provide Feedback" as feedback usecase "View Driver Information" as driverInfo usecase "Update Profile" as updateProfile usecase "Promo Code" as promoCode usecase "Emergency Assistance" as emergencyAssistance passenger -- (selectType) passenger - (request) passenger -- (track) passenger -- (payment) passenger -- (history) passenger -- (rate) passenger -- (updateProfile) passenger -- (emergencyAssistance) driver - (request) driver - (payment) driver - (rate) (request) --> (track) (track) --> (payment) (track) --> (rate) (selectType) --> (request) (cancel) .> (request) : <<extends>> (rate) <.. (feedback) : <<include>> (payment) <..(promoCode) : <<include>> (driverInfo) .> (track) : <<extends>> } @enduml 


Selbstverständlich können Sie weitere Szenarien integrieren. Beispielsweise gibt es keine Informationen zur Benutzerregistrierung und -anmeldung. Darüber hinaus können Sie ChatGPT anweisen, ein Diagramm zu Ihren Designs zu erstellen. Der Schlüssel ist, dass Sie eine Grundlage haben, die Sie nutzen können.

Beispiel 2 – Ich muss ein Diagramm überprüfen und verbessern

Ich habe eine einfache Version eines Sequenzdiagramms für eine Bildspeicherlösung mit einem Reverse-Proxy:

 @startuml participant Client boundary "Reverse Proxy" as Proxy participant Back participant FileStorage participant Admin actor Editor Editor -> Admin: Add picture Admin -> FileStorage: Add picture Client -> Proxy: Get picture Proxy -> Proxy: Check cache alt cash is not empty Proxy -->> Client: Return picture else cash is empty Proxy -> FileStorage: Recieve picture FileStorage --> Proxy: Picture Proxy -> Proxy: Save to cache Proxy -->> Client: Return picture end @enduml 


Lasst es uns verbessern. Meine Aufforderung:

Ich entwerfe eine Lösung zum Speichern und Verwenden von Bildern, überprüfe dieses Diagramm und bearbeite es gegebenenfalls


ChatGPT-Vorschlag:

 1. **Participant Name Clarification:** - Consider renaming "Back" to something more descriptive, like "Application Server" or a similar term that better represents the functionality. 2. **Actor Placement:** - Move the "Editor" actor to a more standard position, usually at the top. @startuml participant Client actor Editor boundary "Reverse Proxy" as Proxy participant ApplicationServer participant FileStorage participant Admin Editor -> Admin: Add picture Admin -> FileStorage: Add picture Client -> Proxy: Get picture Proxy -> Proxy: Check cache alt cache is not empty Proxy -->> Client: Return picture else cache is empty Proxy -> ApplicationServer: Receive picture ApplicationServer --> Proxy: Picture Proxy -> Proxy: Save to cache Proxy -->> Client: Return picture end @enduml


Der Punkt mit der Platzierung der Schauspieler gefällt mir nicht, deshalb habe ich ihn zurückgestellt. alles andere ist in Ordnung.


Dann wiederholte ich mehrmals eine Eingabeaufforderung:

Überprüfen Sie dieses Diagramm und ergänzen Sie es bei Bedarf


und Eingabeaufforderungen schreiben:

Zeigen Sie, wie ApplicationServer Bilder aus der Datenbank erhält


Fügen Sie den Fokus der Kontrolle hinzu


Fügen Sie einige Eckfälle hinzu


Um es fertigzustellen, passe ich den Fokus der Steuerung an und nehme einige Änderungen an der Benennung vor. Hier ist das Endergebnis:

 @startuml participant Client boundary "Reverse Proxy" as Proxy participant ApplicationServer database FileStorage participant Admin actor Editor Editor -> Admin: Add picture activate Admin deactivate Admin Admin -> FileStorage: Add picture activate FileStorage deactivate FileStorage Admin -> ApplicationServer: Store metadata activate ApplicationServer Client -> Proxy: Get picture activate Proxy Proxy -> Proxy: Check cache alt cache is not empty Proxy -->> Client: Return picture else cache is empty Proxy -> ApplicationServer: Receive picture request activate FileStorage ApplicationServer -> FileStorage: Retrieve picture from database alt picture not found in database FileStorage --> ApplicationServer: Picture not found deactivate FileStorage ApplicationServer -> Proxy: Notify picture not found Proxy -->> Client: Picture not found else FileStorage --> ApplicationServer: Picture data deactivate FileStorage ApplicationServer -> Proxy: Send picture to Proxy Proxy -> Proxy: Save to cache Proxy -->> Client: Return picture end end deactivate Proxy deactivate ApplicationServer deactivate Admin deactivate Editor @enduml 

Nachteile

Zunächst muss man alles überprüfen, denn „ChatGPT kann Fehler machen.“ Es ist nicht als Ersatz für Sie gedacht, sondern vielmehr als Werkzeug zur Rationalisierung und Optimierung Ihrer Arbeit.


Die häufigsten Fehler hängen mit der PlantUML-Syntax zusammen. Manchmal passiert es mitten in einem Gespräch und ich muss es beheben und ChatGPT wieder auf den richtigen Weg bringen.


Zweitens verwende ich eine kostenlose Version von ChatGPT 3.5, und es gibt Höhen und Tiefen. Manchmal funktioniert es schlechter und liefert einige zufällige Antworten für dieselbe Eingabeaufforderung.


Drittens versteht ChatGPT einige Diagramme besser als andere. Beispielsweise funktioniert es mit Sequenzdiagrammen viel besser als mit Anwendungsfalldiagrammen.


Trotz dieser Einschränkungen bleibt ChatGPT jedoch ein wertvolles Werkzeug und ein hervorragender Assistent, der Ihre Effizienz steigern und Ihnen Zeit sparen kann.

Abschluss

Ich nutze ChatGPT dauerhaft bei meiner Arbeit. Wenn Sie Manager, Analyst, Entwickler, Tester oder in einer anderen Rolle sind, können Sie UML nutzen. Wenn das der Fall ist, sollten Sie darüber nachdenken, PlantUML-Code zu schreiben und zu generieren – das spart Ihnen Zeit und steigert Ihre Effizienz.


Ich hoffe, meine Erfahrung wird Ihnen nützlich sein und Sie inspirieren. Danke schön!