Systems Engineering Trends

Jede Woche Neuigkeiten aus der Welt des Systems Engineering

Künstliche IntelligenzWerkzeuge

Der Erfolg von Copilot: Wie gitHub und OpenAI zusammenarbeiten

Wie kann KI uns effektiv in der Produktentwicklung unterstützen? In der Softwareentwicklung haben wir schon einen ersten Eindruck davon. gitHub ist eine Plattform für teambasierte Softwareentwicklung. Bereits Mitte 2021 veröffentlichte die Plattform Copilot, ein KI-basiertes Tool, das Softwarecode für Entwickler beim Programmieren vervollständigt. Inzwischen hat Copilot über eine Million zahlender Nutzer. Was können wir daraus für das Systems Engineering lernen?

Microsoft, gitHub und OpenAI

Im Jahre 2018 berichtete ich hier von der Akquisition von gitHub durch Microsoft, die ich positiv bewertete, auch für die Open Source-Communities, die dort ihr zu Hause hatten. Doch schon ein Jahr später, Mitte 2019, investierte Microsoft eine Milliarde Dollar (US) in OpenAI. Wir können davon ausgehen, dass der Konzern diese zwei Schritte von Anfang an strategisch geplant hatte. Denn Copilot basiert auf einer Variante von GPT-3 (Codex). Ohne die gigantischen Datenmengen von gitHub, mit denen das Sprachmodell trainiert wurde, wäre Codex nicht möglich gewesen.

Microsoft hat gitHub 2018 akquiriert, um Copilot mit der Technologie von OpenAI zu ermöglichen.

Entwickler können Copilot auch ohne gitHub einsetzen. Sie installieren Copilot in der IDE (Entwicklungsumgebung) ihrer Wahl. In letzter Zeit ist dies immer öfter Visual Studio Code (kurz Code genannt). Code gibt es für viele Betriebssysteme, einschließlich Linux. Das wäre zu Zeiten von Steve Balmer undenkbar gewesen!

Wie funktioniert Copilot?

Copilot generiert Code basierend auf natürlicher Sprache. Dies kann man übrigens auch ohne Copilot in ChatGPT ausprobieren, welches bei Programmierfragen ebenfalls Softwarecode generiert. Doch was Copilot besonders macht ist die gute Integration in die IDE. Insbesondere geht die natürliche Sprache, welche die Aufgabe des Codes beschreibt, nicht verloren. Denn der Entwickler gibt diese in der Form von einem Kommentar vor, der dann im Code erhalten bleibt.

Das beschreibt auch grob die Nutzung von Copilot: Die Entwicklerin formuliert das zu lösende Problem. Das ist typischerweise das Ergebnis einer Funktion oder eines Codfragmentes. Schon beim Schreiben des Kommentars macht Copilot Vorschläge für den Kommentartext und erlaubt das Anpassen des Codes, der das Beschriebene umsetzt.

Ein (bewegtes) Bild sagt mehr als tausend Worte. Das folgende Video zeigt dies in 90 Sekunden:

Warum funktioniert Copilot so gut?

Diese Frage ist nicht technisch gemeint, sondern inhaltlich: Warum erzeugt Copilot einen so hohen Nutzen? Nun, es gibt mehrere.

Zunächst ist der Kontext, in dem der Nutzer arbeitet nicht nur genau bekannt, sondern auch formal definiert. Die IDE weiß, welche Programmiersprache verwendet wird, welche Bibliotheken eingesetzt werden, kennt den Scope das Projekts und weiß sogar, welche Dateien im Editor offen sind. Dieser Kontext schränkt die möglichen Antworten stark ein, was die Relevanz des Ergebnisses erhöht.

Ein weiterer Grund ist, dass auf dieser Ebene (mehrere Zeilen Code) keine Innovation stattfindet. Statt dessen geht es hier um Best Practices und Entwicklungsmuster. Best Practices und Design Patterns sind nicht schützenswert. Doch sie sorgen für hohe Codequalität und Wartbarkeit.

Copilot funktioniert, weil es sowohl den Kontext versteht, als auch „Best Practices“ und Entwicklungsmuster (Design Patterns) unterstützt.

Das Ergebnis: Anfang 2023 überschritt Copilot die Millionenmarke an Nutzern — und ist immer kostenpflichtig.

Copilot für Systems Engineering?

Leider haben wir im Systems Engineering keine mit gitHub vergleichbare Plattform. Die Aktivitäten im Systems Engineering sind auch bei weitem nicht so homogen wie in der Programmierung. Aus diesen beiden Punkten ergibt sich, dass ein Copilot für Systems Engineering noch Jahre auf sich warten lassen wird.

Im Moment dreht sich der Hype um Large Language Models (LLMs). Dafür gibt es einen guten Grund: Sprach ist extrem flexibel und basiert gleichzeitig auf vergleichbaren Strukturen, egal, ob es sich um menschliche Sprache oder Programmiersprache handelt. Daher erwarte ich, dass KI-Technologien dort Einzug halten, wo mit Text gearbeitet wird. Das sind Anforderungen.

Doch Kommentare in Softwarecode enthalten in der Regel kein geistiges Eigentum, Anforderungen hingegen schon. Auf Kommentare können wir mit Entwicklungsmustern reagieren, die nicht produktspezifisch sind. Im Systems Engineering bewegen wir uns normalerweise im Kontext von einem bestimmten Produkt und müssen auch auf Wissen der Organisation zurückgreifen.

Daher denke ich, dass wir lange Zeit lediglich unternehmensspezifische „Copiloten“ sehen werden, die für das Unternehmen angelernt werden müssen. Diese werden sich Anfangs auf textuelle Anforderungen fokussieren, bzw. auf Traceability. Sicher werden wir hier auch Anwendungen sehen, die externes aber generisches Material mit einbeziehen, wie bspw. Standards und Vorschriften.

Fazit

Wir müssen sicher noch eine Weile warten, bis wir im Systems Engineering vergleichbares sehen. In der Zwischenzeit können wir versuchen, das Verhältnis von Hardware zu Software in unseren Produkten zu Gunsten von Software zu verschieben. Denn dort können wir heute schon Copilot einsetzen.

Photo by Arif Riyanto on Unsplash

Michael Jastram

Creator and Author of SE-Trends