Digital Future Congress (DFC) 2023, September 2023, München, Andreas Zitzelsberger (Business Unit Director bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Alt-Systeme in die Cloud migrieren – mit sechs Leitplanken geht das effizient und sicher. Neu: Künstliche Intelligenz kann jetzt zum Turbo werden! Wir nutzen KI bei der Cloud-Migration und zeigen in diesem Vortrag, was geht und was nicht.
2. Agenda
● Einführung: Wie Cloud-Migration geht und wie KI
dabei helfen kann
● Case Studies: Ausgewählte Beispiele aus dem
echten Leben zeigen, was KI kann
● Ausblick: Zukünftige Entwicklungen, die sich auf
den Einsatz von KI für Migration und
Modernisierung auswirken
● Fazit: Chancen, Grenzen und Risiken des Einsatzes
von KI für Migration und Modernisierung
Illustration: Dall-E
4. Sprachmodelle haben eine lange Historie –
sind aber erst seit kurzem vielseitig praktisch nutzbar
4
QAware
1967
Eliza
1997
LSTM
2010
Stanford
Core NLP
2011
Google
Brain
2017
Google
Transformer
Architecture
2020
GPT-3
2021
GitHub
Copilot
2022
ChatGPT
5. Wir benutzen im folgenden GPT als Stellvertreter für Large
Language Models (LLMs)
5
QAware
● GPT 3.5/4 ist aktuell das beste Modell zur
Verarbeitung von Source Code.
● ChatGPT lässt sich leicht automatisieren und auf
große Codebasen anwenden:
○ OpenAI API
○ OpenAI Python Bindings
○ CLI-Werkzeuge wie Chatblade
● Einschränkungen:
○ Die Anzahl der Eingangs-Token ist begrenzt.
Code-Files vernünftiger Größe können am
Stück verarbeitet werden, ganze Code-Basen
müssen Stück für Stück verarbeitet werden.
○ Serverseitige Verarbeitung erfordert
Vertrauen.
Generated with Stable Diffusion
7. Case Study: Analyse und Acceleration von COBOL
● Ziel: Code-Verständnis schaffen
● Methode: Analyse und Übersetzung mit ChatGPT
● Ergebnis: Sehr hilfreich für Analysen und vorbereitende
Handlungen
○ ✅ Analyse funktioniert sehr gut (Demo)
○ ✅ 1:1-Übersetzung von Code und Struktur
○ ⚠️ Ein echter Rebuild mit semantischer
Reduktion ist so aber nicht möglich.
○ ✅ Stiftet Nutzen für Analysen und zur
Vorbereitung von Rebuilds
○ ✅ Funktioniert genauso für andere Sprachen,
für die es ausreichend publizierten Code und
Dokumente gibt (PL/1, Java, C#, …).
7
QAware
Megatherium von Heinrich Harder
9. LLMs können KPIs berechnen und maschinenlesbar ausgeben
9
QAware
❯ chatblade -o -e "Count the number of selected files in this COBOL program."
"Provide JSON output in the following form: {"selected-files": <count>}."
"Only provide the JSON output."
< fxsort.cbl
{"selected-files": 5}
⚠️ Dabei ist ChatGPT leider nicht zuverlässig: AI doing AI things.
➜ Akzeptabel, wenn man mit einer gewissen Unschärfe leben kann.
10. Leider ist ChatGPT ein Teil der #NoEstimates-Bewegung
10
QAware
“Das Schätzen der Entwicklerstunden für einen neuen Codeabschnitt kann schwierig sein, da es
von Faktoren abhängt wie der Vertrautheit des Entwicklers mit der Programmiersprache, seiner
Erfahrung, der Komplexität des Codes und den spezifischen Anforderungen des Projekts.
Zusätzlich kann das Nachbilden von Code mehr beinhalten als nur das Übersetzen des Codes in
eine andere Sprache, da Optimierungen, Verbesserungen oder Fehlerbehebungen erforderlich
sein könnten.”
Übersetzung: ChatGPT
12. ● Die Eingriffe sind notwendig, um
hochwertige Ergebnisse zu liefern.
● Aber: Die Eingriffe werden auch genutzt,
um Kontroversen zu vermeiden.
● ⚠️ Sprachmodelle haben menschliche
Schlagseiten und Vorurteile.
12
QAware
… ist das Ergebnis eines komplexen Trainingsprozesses mit
menschlichen Eingriffen
Quelle: Twitter @anthrupad
13. KI-gestützte Framework-Migration in Java
● Ziel: Migration von Legacy J2EE zu Spring
● Methode: Code-Transformation mit ChatGPT
● Ergebnis: Erleichtert die Migration im kleinen
deutlich
✅ Sterotype Transformationen, “Boilerplate”
✅ Transpilierung (Z.B. Python → JavaScript)
⚠️ Begrenzte Zahl an Input-Token.
Funktioniert nur Stück-für-Stück
➜ keine semantische Transformation einer ganzen
Architektur
❌ Technologien mit beschränkter öffentlicher
Datenbasis funktionieren schlecht.
13
QAware
Es gibt erste FOSS-Unterstützung für die AI-gestützte Migration.
Case Study
14. Der Report Program Generator (RPG) ist “Die
Brücke von der Stecktafel zur Datenbank”.
Analyse von IBM RPG
● Ziel: Code-Verständnis schaffen und Abhängig-
keiten ermitteln
● Methode: Analyse und Transpilierung mit ChatGPT
● Ergebnis: ❌ Nicht brauchbar
● Ursachen:
○ RPG ist heutzutage zu exotisch. Es gibt kaum
öffentliche Quellen, von denen ein Modell
lernen könnte
○ RPG ist eine kontext-behaftete Sprache
● Alternative Lösung: Parsing mittels eines
kommerziellen Parsers, non-AI Auswertungen auf
dem Syntaxbaum
14
QAware
C MOVEL'HELLO' HELLO 11
C MOVE 'WORLD' HELLO
C HELLO DSPLY WAIT 1
C SETON
LR
Hello World in RPG III
Quelle: Die Geschichte der maschinellen Datenverarbeitung. Band 1, Untertitel IBM
Enzyklopädie der Informationsverarbeitung, - IBM Form D 12-0028 (3/91), Überschrift Seite 140
Case Study
15. Fehlersuche und Qualitätshub in Java
● Ziel: Bestandscode in Java modernisieren
● Methode: Analyse mit ChatGPT
● Ergebnis: Brauchbare Ergänzung zu bekannten
Werkzeugen
✅ Findet viele Probleme im Kleinen
⚠️ Aber nicht alle und auch nicht zuverlässig
⚠️ Semantische Probleme werden oft erkannt –
oft aber auch nicht
⚠️ Die Ergebnisse können auch mal Fehler
enthalten. Es braucht Experten, um die
Ergebnisse zu verwerten
15
QAware
Foto von James Wainscoat auf
Unsplash
Case Study
16. You are a an expert software engineer proficient in source code
analysis. Explain potential issues with the following Java code:
Wer findet alle Probleme im Code?
16
QAware
String input = "{" +
""consumerId": "_$CONSUMER_ID$_"," +
""transactionId": "_$TRANSACTION_ID$_"," +
""targetId": "_$TARGET_ID$_"," +
""docId": "_$DOC_ID$_"" +
"}";
input = input.replaceAll("_$CONSUMER_ID$_", consumerId);
input = input.replaceAll("_$TRANSACTION_ID$_", transactionId);
input = input.replaceAll("_$TARGET_ID$_", targetId);
input = input.replaceAll("_$DOC_ID$_", docId);
17. Wer findet alle Probleme im Code?
➜ ChatGPT leider nicht
17
QAware
String input = "{" +
""consumerId": "_$CONSUMER_ID$_"," +
""transactionId": "_$TRANSACTION_ID$_"," +
""targetId": "_$TARGET_ID$_"," +
""docId": "_$DOC_ID$_"" +
"}";
input = input.replaceAll("_$CONSUMER_ID$_", consumerId);
input = input.replaceAll("_$TRANSACTION_ID$_", transactionId);
input = input.replaceAll("_$TARGET_ID$_", targetId);
input = input.replaceAll("_$DOC_ID$_", docId);
ChatGPT findet 5 potenzielle Probleme auf der Grasnarbe
und liefert ein Code-Beispiel, um diese zu verbessern:
1. Keine Fehlerbehandlung
2. Performance-Probleme durch String.replaceAll
3. Wiederholte Erzeugung des input-String
4. Keine JSON-Validierung
5. Die Platzhalter können Verwirrung stiften
⚠️ Erkennt dabei aber nicht den Elefanten im Raum:
Der Code sollte so nicht existieren!
JSON sollte allein schon aus Sicherheitsgründen nicht von
Hand erzeugt werden.
18. Wir setzen GitHub Copilot breit ein,
nicht nur für Migrationen
GitHub Copilot bietet Code-Generierung direkt in der IDE
● Beschleunigt Programmieraufgaben.
● Hilft Entwicklern sich in neuen Technologien schneller
zurecht zu finden.
Vergleichbar mit einem Junior Pair Programmer
● Kann Bugs, Sicherheitslücken oder schlechten Code
produzieren.
● Entwickler müssen in der Lage sein, Probleme zu
erkennen und die generierten Lösungen passend
umzuarbeiten,
18
QAware
Zweischneidiges Schwert:
● ✅ Macht gute und erfahrene
Entwickler spürbar produktiver.
● ⚠️ Für alle anderen: Hohes Potential
sich in den Fuß zu schießen.
19. Small LLMs am Beispiel: LMSYS Vicuna
● verspricht 90% ChatGPT-Qualität
● in ~66GB Größe
● zu ~300$ Trainingskosten
● Viele Modelle sind mit Quellcode als Open
Source verfügbar
● Der Betrieb auf einem PC ist sinnvoll möglich
Eigenständig nutzbare Modelle werden
völlig neue Anwendungen ermöglichen
LLaMA / LLaMA 2 von Meta
● Large Language Model Meta AI
● Großes, hochqualitatives, mit GPT vergleichbares
Datenmodell
● Die LLaMA 2-Gewichte sind offiziell offen verfügbar
● Kann in vielen Fälle kommerziell genutzt werden
19
QAware
Ausblick
20. Das Forschungsprojekt DeepQuali bewertet
Softwarequalität mit KI
Thema: Software-Qualität mit KI bewerten
■ fachliche/technische Schulden
■ Beurteilung der Qualität mit KI-Modellen
■ Beurteilung der Qualität mit konventionellen
Methoden
■ Kombination mit Machine Learning Ops für
Produktionsreife Modellentwicklung
BMBF Forschungsprojekt im Programm KI4KMU
Laufzeit: 1.6.23 - 30.11.25
20
QAware
Foto von Tima Miroshnichenko auf Pexels
Ausblick
21. Fazit: Moderne KI bietet bei Migration und Modernisierung
handfeste Vorteile, braucht aber Experten
21
QAware
■ Code-Analysen, sowohl explorativ als auch
autmatisierbar
■ Fehlersuche, Performance- und Qualitäts-
verbesserungen
■ Übersetzungen von einer Programmiersprache
in eine andere
■ Unterstützung von Framework- und Tool-
Migrationen
■ Beschleunigung von Programmieraufgaben
Chancen
■ Die begrenzte Anzahl an Input Token macht eine
Stück-für-Stück-Verarbeitung notwendig.
■ Blockchain-Syndrom:Viele Probleme lassen sich
mit klassischen Ansätzen besser lösen.
■ Falsche und unzureichende Ausgaben, die aber
plausibel aussehen können, verursacht durch
Halluzinationen, d.h. falsche, vom Modell
erzeugte Ausgaben, sowie Lücken, Fehler und
falsche Daten in den Trainingsdaten
■ Das Urheberrecht. Generierter Code und Daten
sollten nicht 1:1 verwendet werden.
Grenzen und Risiken