»ChatGPT in der Industrie« – Teil 6
Unterstützung bei Architektur und Konzeption
Das Erzeugen und Verarbeiten natürlicher Sprache ist die Paradedisziplin von KI in Form von Large Language Models (LLMs). Wie geeignet sind LLMs aber für das generative Erzeugen nützlicher Ergebnisse in der Architektur- und Konzeptionsphase?
Eine der wesentlichen Herausforderungen beim Architekturentwurf besteht darin, komplexe Systeme in Abhängigkeit der funktionalen und nicht funktionalen Anforderungen in klar definierte, modulare Komponenten zu zerlegen. Allgemein gesprochen können LLMs hierbei als intelligente Assistenten fungieren, indem sie textuelle Beschreibungen analysieren helfen, Anforderungen strukturieren und Vorschläge für die Modularisierung und Strukturierung der Architektur liefern. So können LLMs unterstützen, die initiale Architektur zu skizzieren und Architekturdokumente effizient zu erstellen.
>> Lesen Sie Teil 1 bis 5 der Artikelserie »ChatGPT in der Industrie«
Eine besondere Herausforderung ist, dass neben der textuellen Beschreibung auch meist Diagramme für die Architekturdarstellung und für die Dokumentation zum Einsatz kommen. Da die heute verfügbaren LLMs diese jedoch nicht direkt erzeugen können und auch von den bisherigen KI-Bildgeneratoren außer hübschen Bildern keine verwertbaren Ergebnisse zu erwarten sind, muss ein kleiner Trick helfen: Durch die Verwendung von textbasierten Diagrammen wie ‚PlantUML‘, ‚Mermaid‘ oder ähnliche sind LLMs in der Lage, auch in dieser Hinsicht zu unterstützen. Sie sind somit nicht nur auf reine Textinformationen angewiesen.
Generelle Prompt Engineering Regeln
Damit der Einsatz generativer KI für die Konzeption und den Architekturentwurf erfolgreich sein kann, gelten auch hier die in den vorherigen Artikeln beschriebenen Regeln für das Prompt Engineering. Zusammengefasst:
- Verwenden von allgemein guten Prompt Formulierungen: klare und spezifische Anweisungen, Trennzeichen und strukturierte Ausgabeformate.
- Einsetzen von Prompt-Techniken, die helfen die »Denktiefe« und »Schlussfolgerung« von LLMs zu erhöhen: Beispielsweise Chain-of-Thought, Tree-of-Thought oder Step-Back-Prompt-Techniken.
- Einsetzen von Prompt-Techniken mit Format-Templates und inhaltlichen Beispielen wie der Few-Shot-Prompt-Technik.
- Zusammenstellen der entscheidenden lokalen Kontexte entweder manuell oder mit der Unterstützung eines intelligenten lokalen Suchsystems genannt RAG (Retrieval Augmented Generation), was auch bei Chatbots häufig zum Einsatz kommt.
Bewährte Prozesse des Architekturentwurfs
Es gibt viele Wege, um zu einer guten Software-Architektur zu kommen. Zwei bekannte und bewährte Ansätze sind die Methoden ‚arc42‘ und ‚C4‘ zur Dokumentation und Visualisierung von Softwarearchitekturen, die wir uns auch für die Unterstützung mit generativen KIs zunutze machen können.
arc42 ist ein frei verfügbares, sehr gut strukturiertes Template und damit im eigentlichen Sinn keine reine Methode. Dieses Template ist ein Rahmenwerk zur Dokumentation von Software-Architekturen, das in zwölf Abschnitte unterteilt ist, um möglichst alle architekturrelevanten Aspekte abzudecken. Es beginnt mit einer Einführung und Zielen, gefolgt von Randbedingungen und einer Kontextabgrenzung. Die Abschnitte wie Bausteinsicht, Laufzeitsicht und Verteilungssicht ermöglichen es den Entwicklern, die Architektur umfassend zu beschreiben und nachvollziehbar zu machen. Die Perspektive auf die Risiken und technischen Schulden sowie ein Glossar, schließen das Template ab.
>> Lesen Sie Teil 1 bis 5 der Artikelserie »ChatGPT in der Industrie«
Durch die gute Gliederung und die unterschiedlichen gut beschriebenen vorgegebenen Sichten bietet das arc42 einen hervorragenden Ausgangspunkt, um mit generativer KI die einzelnen Abschnitte in Verbindung mit den eigenen gegebenen Informationen und Absichten vorformulieren zu lassen.
Im Gegensatz zu arc42 ist die C4-Modellierungsmethode kein Dokumenten-Template, sondern ein Ansatz zur Darstellung der Architektur von Software-Systemen, der auf der Visualisierung verschiedener Abstraktionsebenen basiert. Sie umfasst vier Ebenen, die jeweils einen spezifischen Aspekt der Softwarearchitektur detaillierter betrachten: Context, Container, Components und Code. Beginnend auf der höchsten Ebene (Context) wird das System im Verhältnis zu externen Systemen und Nutzern gezeigt, gefolgt von einer detaillierteren Darstellung der Hauptanwendungen und Datenspeicher im Containers-Diagramm. Die dritte Ebene (Components) zerlegt die Container weiter in ihre Hauptkomponenten und deren Interaktionen, während die Code-Ebene schließlich die Implementierungsdetails aufzeigt, beispielsweise Klassen oder Schnittstellen.
Bild 1. Die ChatGPT-Aufgabe: Ein Retrofit-fähiges IIoT-Kit für die Temperaturüberwachung von Produktionsanlagen soll entstehen. Dabei sind zusätzliche Sensoren, Datenlogger, eine Übertragungseinheit und ein SPS-fähiges unabhängiges Dashboard mit im Spiel.
© talsen teamDie systematische Zerlegung größerer Probleme in die jeweiligen unterschiedlichen Abstraktionsebenen ist eine bewährte Taktik, um produktiv mit generativen KIs zu arbeiten. Das Prinzip vom „Groben zum Feinen“ hat sich – wie im vorherigen Artikel beschrieben – auch schon bei der Unterstützung der Formulierung von Anforderungen gemäß der Abstraktionsebenen aus der verhaltensgetriebenen Software-Entwicklung (BDD) als sehr nützlich erwiesen. Damit ist die erforderliche Denktiefe der LLMs gut zu regulieren. Wenn die Ergebnisse zu unscharf werden und die Formulierungen der LLMs nicht mehr nützlich sind, ist das ein starker Hinweis auf entweder den fehlenden relevanten Kontext oder einen zu großen Sprung zwischen den Abstraktionsebenen, der zu viele unsichtbare und unbekannte Annahmen auf LLM-Seite zur Folge hat. Dies wiederum hat sehr wahrscheinlich einen höheren manuellen Korrekturaufwand der LLM-Antworten zur Folge.
Wie nützlich die Taktik vom „Groben zum Feinen“ oder „Teile und Herrsche“ für den Einsatz generativer KI ist, betrachten wir konkret am Beispiel das aktuellen Topmodells gpt-4o von OpenAI (erreichbar über den kostenpflichtigen Account von ChatGPT) anhand der Architekturbeschreibung eines einfachen IIoT-Beispiels (Bild 1):
Das Beispiel der verketteten Produktionsanlagen lässt sich mit zwei Architekturbeschreibungen angehen:
- Variante 1: Die Erstellung eines Architekturbildes oder -diagramms anhand einer einfachen Text- und Bildbeschreibung.
- Variante 2: Die systematische Erstellung mit C4 anhand einer einfachen Text- und Bildbeschreibung.
Variante 1 – eine zu einfache Methode
Der Anwendungsfall demonstriert, dass LLMs je nach Prompt ganz unterschiedliche Ergebnisqualitäten erzeugen können. Verwenden wir das Bild des IIoT-Beispiels – kann per Drag&Drop oder Copy&Paste eingefügt werden – mit dem Prompt »Erstelle basierend auf der gegebenen Beschreibung das Komponenten-Diagramm der erforderlichen Applikation«, ist das für das LLM im wahrsten Sinne des Wortes zu kurz gesprungen. Die Ergebnisse werden ohne weitere Angaben in den meisten Fällen enttäuschend und unbrauchbar sein.
Variante 2 mit der C4-Methode
Bild 2: Robuste IIoT-Anwendung - System Context Diagram. Das C4-System und das Kontextdiagramm.
© talsen teamVerwenden wir im Gegensatz dazu einen etwas aufwendigeren Prompt und die C4-Methode als roten Faden für einen Architekturentwurf, können wir mit deutlich nützlicheren Ergebnissen rechnen. Für das folgende Beispiel arbeiten wir in einem einzigen Chat, um die Inhalte der vorhergehenden Antwort gleich für den nächsten Prompt verwenden zu können. Im Rahmen einer produktiven Arbeit würde jedes Ergebnis einem gesonderten Review-Prozess standhalten müssen, korrigiert und dann erst die nächste Stufe mit dem verbesserten Kontext in einem frischen Chat angefragt werden. Unser verkürztes Prompt-Rezept für das Beispiel lautet wie folgt:
Prompt 1 – erste Analyse und Extraktion der im Bild enthaltenen Informationen:
IIoT Bild + Text: »Analysiere die Skizze. Erstelle mir eine Liste an funktionalen Anforderungen, die du aus dem Bild ableiten kannst. Erstelle mir eine Liste aus nicht funktionalen Anforderungen die du aus dem Bild ableiten kannst. Erstelle mir basierend auf den funktionalen und nicht funktionalen Anforderungen einen Architekturvorschlag für eine modulare, erweiterbare und gut wartbare Softwareanwendung.«
Ergebnis: Enthält die Beschreibung der angefragten inhaltlichen Punkte. Auflistung entfällt aus Platzgründen.
Prompt 2 – Darstellung der höchsten Abstraktionsebene; C4-System und Kontext-Diagramm (Bild 2):
»Bitte erstelle mir basierend auf den Analyseergebnissen ein C4 System Context Diagram. Bitte generiere das C4 Context Diagram mit PlantUML.«
Das Ergebnis ist ein erstaunlich gut und detailliert ausgearbeiteter Vorschlag. Man beachte: es wurden initial die selben Informationen verwendet wie in unserem einfachen Prompt. Wer das Experiment nachvollziehen will, kann die in der LLM Antwort enthaltenen PlantUML-Anweisungen anhand eines kostenfreien PlantUML-Servers online selbst visualisieren und überprüfen.
Bild 3. Robuste IIOT-Anwendung – Backend API Komponentendiagramm. Die Komponentenansicht der Backend API der IIoT-Anwendung.
© talsen teamPrompt 3 – erste Detaillierung in C4 als Container-Diagramm:
»Bitte erstelle nun basierend auf den bisherigen Ergebnissen das C4 Container Diagram für die IIoT Applikation.«
Ergebnis: Darstellung der großen technischen Bausteine der Applikation (entfällt aus Platzgründen). Ist in der praktischen Architekturbeschreibung aber ein wichtiger Schritt, der nicht entfallen darf.
Prompt 4 – zweite Detaillierung in C4 als Komponentendiagramm (Bild 3):
Wichtig ist, spätestens ab dieser Ebene immer einen speziellen Fokus zu setzen, damit die Ergebnisse nicht verwässern. Hier mit Fokus auf das Backend der IIoT-Anwendung.
»Bitte erstelle nun basierend auf den bisherigen Ergebnissen das C4 Component Diagram des Backend API Containers.«
Ergebnis: Durch die gut gesteuerte Schrittweite zwischen den Abstraktionsebnen ist auch dieses Ergebnis ein erstaunlich gut und detailliert ausgearbeiteter Vorschlag. Die durch das LLM getroffenen technischen Entscheidungen sind ungestützte Annahmen. Hätten wir in den Prompt technische Randbedingungen als Kontext eingebracht, würden diese im Komponentendiagramm Berücksichtigung finden.
Prompt 5 – dritte Detaillierung in C4 als Code-Diagramm (Bild 4):
Wichtig ist auch bei diesem Schritt einen Fokus zu setzen.
»Bitte erstelle nun basierend auf den bisherigen Ergebnissen das C4 Code Diagram. Wähle für das Diagramm die Alert Service-Komponente des Backend API-Containers, um ein Beispiel für eine tiefere Code-Ebene zu generieren.«
Ergebnis: Wie auch bei den vorangegangenen Schritten ist zu beachten, dass dieses Ergebnis ohne weitere Information von außen erzeugt werden konnte. Die einzige inhaltliche Vorgabe ist nach wie vor die initiale Skizze, die durch die gezielte Zerlegung nützliche Ergebnisse sogar bis auf die Code-Ebene ermöglicht.
Die Quintessenz
Die Nutzung generativer KI-Methoden im vorwärts gerichteten Architekturentwurf und der Konzeption von Software bietet interessante Vorteile. An dem hier gezeigten Beispiel kann durch den Einsatz vergleichsweise einfacher Prompts in Kombination mit der bewährten C4-Methode und zudem mit relativ wenig Eingangsinformationen ein erster Architekturentwurf abgeleitet werden.
In unserem nächsten Beitrag werden wir betrachten, wie LLMs bei bestehender Software helfen können, Architekturmuster zu erkennen und rückwärtsgerichtet Architekturen zu dokumentieren und zu verbessern.




















