Softwarearchitekten und KI-Systeme:

Herausforderungen und Möglichkeiten

„A good software architect is like a werewolf: Afraid of silver bullets.“

(frei nach Jochen Mader (codepitbull)

Seit 2023 gibt es einen regelrechten Hype um Large Language Models (LLMs) und KI-Chatbots, wie z. B. ChatGPT. Mit solchen Tools können Anwender aus einem Textprompt nicht nur hochwertige Texte, Zusammenfassungen, fotorealistische Bilder oder Musik erzeugen. Auch das Erzeugen von Quellcode und Dokumentationen ist möglich. Dies wird unserer Ansicht nach große Auswirkungen auf die Softwareentwicklung haben und die IT nachhaltig beeinflussen. In diesem Artikel untersuchen wir, wie ein KI-Tool die Arbeit eines Softwarearchitekten unterstützen kann und ob Künstliche Intelligenz ein Silver Bullet sein könnte.

1. Was macht eigentlich ein Softwarearchitekt?

Ein Softwarearchitekt ist eine Rolle in enger Zusammenarbeit mit dem Softwareentwicklungsteam und den Stakeholdern. Ein Softwarearchitekt entwirft den Aufbau von Softwaresystemen und trifft grundlegende Entscheidungen über das Zusammenspiel der Komponenten. Er ist für die konzeptionelle Entwicklung von Softwareanwendungen zuständig. Seine Aufgaben beginnen beim Entwurf und reichen über die Umsetzung der Systeme bis hin zum Deployment. Er ist dabei insbesondere für die technologische Umsetzung, die Priorisierung und Einhaltung der Qualitätskriterien (z. B. nach ISO25010) und Randbedingungen (Constraints) verantwortlich. Er ist somit das „technische“ Gegenstück zum Product Owner (PO), der die fachlichen Anforderungen verantwortet.

Das International Software Architecture Qualification Board (iSAQB) hat sich zum Ziel gesetzt, die Ausbildung von Softwarearchitekten im europäischen Raum zu standardisieren. Das iSAQB betreut und entwickelt als Non-Profit-Organisation die Zertifizierungsschemata für die iSAQB-Foundation/Advanced/Expert-Level.
Das iSAQB definiert sechs Kernaktivitäten für Softwarearchitekten:

1. Klärung von Anforderungen und Randbedingungen (Constraints)
2. Entwurf von Strukturen
3. Entwurf querschnittlicher Konzepte
4. Bewertung von Architekturen
5. Kommunikation von Architekturen
6. Begleitung der Umsetzung

Diese Kernaktivitäten stehen nicht einzeln für sich, sondern sind eng miteinander verbunden. Im Rahmen der Digitalisierung und der Einführung der KI in den Entwicklungsprozess zeichnen sich verschiedene Möglichkeiten der Toolunterstützung der Architekten durch KI ab. Die KI-Tools müssen allerdings eine Reihe von gesetzlichen Vorgaben erfüllen.

2. KI in Aktion: Anwendungsmöglichkeiten von KI für Softwarearchitekten

KI-Systeme wie ChatGPT können heute erstaunliche Dinge vollbringen. Zum Beispiel können sie lauffähigen Code erzeugen, den Sie im Dialog mit ChatGPT an Ihre Bedürfnisse anpassen können. Das ist eine große Entwicklung, aber sollte nicht einfach kritiklos von Ihnen akzeptiert werden. Machen Sie es so, wie Sie es von Ihrem Kollegen gewohnt sind, der Ihnen einen Pull-Request schickt: machen sie ein kritisches Code Review.

Mit den KI-Tools bekommen Sie einen Kollegen an die Seite gestellt, der sie gerne bei Ihrer Architekturarbeit unterstützt. Er kann Ihnen zum Beispiel beim Erstellen eines Proof-of-Concepts (POC) oder einer Dokumentation in plantUML helfen. Sie können mit ihm aber auch auf die Suche nach architekturrelevanten Anforderungen in Anforderungsdokumenten gehen oder bei einer lästigen Nachdokumentation bei einer Klasse mit 200 Zeilen einfach mal fragen, was der Code eigentlich macht. Das kann Ihnen gut weiterhelfen.

Werfen wir einen Blick auf sechs Standardaktivitäten der Softwarearchitekten, dann können wir eine Einschätzung für jede Kategorie abgeben:

  1. Klärung von Anforderungen und Randbedingungen (Constraints): Hier kann der KI-Assistent bei der Sichtung der Anforderungsdokumente unterstützen und Randbedingungen identifizieren. Daneben wäre auch eine Suche nach architekturrelevanten Anforderungen möglich.
  2. Entwurf von Strukturen: Hier kann der KI-Assistent bei der Initiierung und Durchführung von POCs, wie auch für die endgültigen Strukturen, unterstützen und Quelltext und Dokumentationen erzeugen.
  3. Entwurf querschnittlicher Konzepte: Hier kann der KI-Assistent bei der Erstellung von Konzepten und Dokumentationen (einschließlich Diagrammerstellung) unterstützen.
  4. Bewertung von Architekturen: Hier kann der KI-Assistent bei der Erstellung von Checklisten und anderen Dokumenten unterstützen.
  5. Kommunikation von Architekturen: Hier könnte der KI-Assistent beispielsweise in eine allgegenwärtige Sprache übersetzten (Ubiquitous Language).
  6. Begleitung der Umsetzung: Hier sehe ich aktuell die Möglichkeit zur Generierung von Quellcode und die Generierung von Schnittstellenverträgen mittels Open-API durch den KI-Assistenten.

Die Analysefähigkeiten und Kommunikationsmöglichkeiten der KI-Systeme sind aktuell noch begrenzt. Daher wird sich der Fokus des Softwarearchitekten zwar ändern, aber der Beruf wird erhalten bleiben. Softwarearchitekt und Künstliche Intelligenz können aber voneinander lernen und gegenseitig profitieren.

Insgesamt kann der KI-Assistent aktuell also bei fünf von sechs Kernaktivitäten eines Softwarearchitekten unterstützen. Es geht dabei aber rein um Unterstützungsmöglichkeiten – eine KI nimmt einem Architekten nicht das kritische Denken und das Überprüfen der Ergebnisse ab. Wir dürfen nämlich eine Sache nicht vergessen: Eine KI arbeitet mit statistischen Wahrscheinlichkeiten und hat kein tieferes Verständnis von dem, was sie tut. Das ist zumindest heute noch so, könnte sich aber in der Zukunft gegebenenfalls noch ändern. Eine KI ist also heute so etwas wie ein Lehrling, der vor dem Einsatz aktiv trainiert werden muss.

Wie können wir unseren KI-Assistenten aktuell am besten zur Unterstützung unserer Architekturarbeit einsetzen? Die Koexistenz von Menschen und KI wird oft als „Human in the loop“ (HITL) bezeichnet. Dabei soll der Mensch dafür sorgen, dass die KI nur hochwertige Daten und Zwischenergebnisse zum Aufbau des KI-Modells nutzt. Eine besondere Form dieser Zusammenarbeit ist der Sokratische Dialog, eine philosophische Diskursmethode, die zur Reflexion, Selbstbesinnung und Überprüfung eigener Normen und Vorurteile anleiten soll und eigenverantwortliches Denken fördern will. Ähnlich wie der Philosoph Sokrates um 450 vor Christus durch gezieltes Fragen Erkenntnisse gewann, stellt auch ein Softwarearchitekt Fragen an die KI und beurteilt sowie verifiziert die Antworten des KI-Systems.  Wie in einem Sokratischen Dialog wird die Anfrage immer weiter verfeinert, bis der Architekt mit den Ergebnissen zufrieden ist oder abbricht. Die nachfolgend betrachteten Formen der Zusammenarbeit orientieren sich oft an dieser Form von Dialog.

Bei der Arbeit mit KI-Assistenten haben sich bisher folgende Praktiken bewährt:

  • KI als Sparringspartner bei der Architekturarbeitum große Probleme in kleinere, handhabbare Probleme zu zerlegen und dann aufzulösen.
  • KI als Unterstützung bei der Sichtung, Erstellung und Vollständigkeitsprüfung der Softwarearchitekturdokumentation.
  • KI als Unterstützung beim Erfassen und Zusammenfassen von Dokumenten.
  • KI als Unterstützung bei der Vorbereitung und Nachbearbeitung von Architekturreviews.
  • KI als Unterstützung bei der Nachdokumentation von bestehenden Systemen.
  • KI als Unterstützung bei der Klassifizierung von Anforderungen und als Spürhund für architekturrelevante Anforderungen.
  • KI als Unterstützung bei der Ableitung von Modellen aus Anforderungen (z. B. MDA/ MDSE).
  • KI als Unterstützung bei der Identifikation schwacher Anforderungen (d. h. unvollständige, interpretierbare oder widersprüchliche AFOs).
  • KI als Unterstützung bei der Überprüfung, ob Patterns korrekt umgesetzt oder DDD-Anforderungen korrekt eingehalten werden (z. B. die korrekte Ubiquitous Language im Bounded Context).
  • KI als Unterstützung für Vorschlägewelche der betrachteten Optionen für einen POC verwendet werden könnten.

Fazit

Künstliche Intelligenz ist ein ganzes Bündel an wertvollen Werkzeugen, die uns als Architekten den Arbeitsalltag vereinfach können. Es gibt viele Möglichkeiten, es gibt aber auch gute Gründe, kritisch zu sein. Wir müssen neu abwägen, womit wir unsere Zeit verbringen. Was bedeutet es, ein Softwarearchitekt, ein Entwickler, ein Scrum Master, ein Product Owner, ein Tester oder ein Requirements-Engineer zu sein? Das beginnt mit der Selbstreflexion. Womit verbringen wir unsere Zeit? Was sind unsere Rituale, Rollen, Artefakte? Was muss in Frage gestellt, verändert oder neu bewertet werden, wenn wir in das Zeitalter der KI eintreten?

Bleiben wir also vorsichtig und sehen Künstliche Intelligenz (KI) als das, was sie ist: ein gutes Hilfsmittel, das einem eine Menge Arbeit abnehmen kann, was aber das kritische Denken nicht ersetzt und auch kein Silver Bullet ist. Im nächsten Beitrag unserer Serie geht es dann um ein weiteres KI-Thema: Künstliche Intelligenz und Ethik – digitale Ethik.

Quellen

Der perfekte Leitfaden für KI Chatbots in Unternehmen

https://www.youtube.com/watch?v=SjoXy9RDyiw

Generative AI in a Nutshell – how to survive and thrive in the age of AI (Henrik Kniberg)

https://www.youtube.com/watch?v=2IK3DFHRFfw

What Is an AI Anyway? | Mustafa Suleyman | TED

https://www.youtube.com/watch?v=KKNCiRWd_j0