Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Agentic Software Modernization - Back to the Ro...

Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)

Softwaremodernisierung auf Knopfdruck ist im Zeitalter von AI Agents der Traum vieler ITler. Ja, ein Agent kann heute schon eine Legacy Codebase über Nacht komplett neu strukturieren. Aber wer übernimmt ab dem nächsten Morgen die Verantwortung dafür?

In diesem Vortrag zeigt Markus, wo agentische Ansätze in der Modernisierung von Softwaresystemen großen Nutzen stiften, aber auch, was ihnen für den nachhaltigen Erfolg fehlt: Techniken, welche AI Agents an die Leine nehmen. Dazu greifen wir auf bewährte Klassiker der Legacy-Code-Modernisierung zurück, welche agentische Workflows mehr verantwortbar machen wie etwa Seams zur Begrenzung des „Agent Blast Radius“, Characterization Testing zum Absichern des aktuellen Verhaltens und Fitness Functions zum messbaren Nachweis von Qualitätsverbesserungen. Dadurch liefern AI Agents weiterhin ein hohes Tempo, doch sie bleiben dank unserer Leitplanken auf der Spur. Denn am Ende zählt nicht, wie viel sich im Code bewegt, sondern ob das Legacy System wirklich vorankommt.

Avatar for Markus Harrer

Markus Harrer

March 03, 2026
Tweet

More Decks by Markus Harrer

Other Decks in Technology

Transcript

  1. 3 . M ä r z 2 0 2 6

    , Z ü r i c h A g e n t i c C o d i n g a n d A r c h i t e c t u r e s Agentic Software Modernization Back to the Roots Markus Harrer Senior Consultant Legacy System Wisdom Blower LogOmagic SellChef The Central The Sourcerer
  2. " Markus Harrer Senior Consultant / Roth, Deutschland Tools only

    find, people have to find out!" • Softwarearchitektur-Entwicklung und -Bewertung • Software-Modernisierung und -Rightsizing • Datenanalysen in der Softwareentwicklung Foundation & IMPROVE https://softwareanalytics.de https://feststelltaste.de/ Instructor inkl. Lehrplan https://markusharrer.de 2
  3. Grobe Agenda Agentic Software Modernization Was ist das ? Wie

    ändern, ohne sich dabei ins eigene Bein zu schießen? Warum schwierig zu ändern? Legacy Fragen und Antworten 3
  4. Typische Assoziationen zu „agentic“ handelt ohne Schritt-für-Schritt Anweisung Skynet kann

    sich selber helfen ersetzt den Menschen trifft Entscheidungen Magie / Hexenwerk wird nie müde schläft nie ein ist immer vor dem Chef im Geschäft Angst Autonomie Leistungs- bereitschaft Geschwin- digkeit kein Mensch kann mehr mithalten erzeugt sehr viel auf einmal liefert schnell Ergebnisse 6
  5. Dan Shapiro: The Five Levels: from Spicy Autocomplete to the

    Dark Factory ChatGPT Copilot Coding CLI Coding Agent Agentic SE Full Agentic
  6. Agentic – technisch gesehen Tool Use kann externe Werkzeuge verwenden

    Reasoning Loop Reason → Act → Observe Memory kurzfristig (Kontext) und langfristig (externer Speicher) Self-Correction erkennt Fehler und korrigiert den eigenen Kurs Multi-Step Planning zerlegt komplexe Aufgaben selbstständig in Teilschritte Goal-Driven bekommt Ziel / Auffor- derung und legt los bis Zielerreichung Structured Output definierte Strukturen und Formate als Ausgaben 9
  7. Beispiel: Claude Code 10 Grundmechaniken • Commands • gespeicherte Prompts,

    die Entwickler als Befehl aufrufen • Hooks • Aktivitäten, welche ein Agent an bestimmten Lifecycle-Punkten automatisch auslöst • Skills • Umfangreichere Aktivitäten, die ein Agent bei bestimmten Trigger-Wörter ausführt / nutzt
  8. Beispiel: Claude Code 11 Weitere Zutaten für agentisches Verhalten •

    CLAUDE.md* • Instruktionen und Kontext für den Agenten • MCP Model Context Protocol • laufende, externe Tools einbinden, um den Agent-Fähigkeiten zu erweitern • Sub Agents / Agent Teams • Agenten, die miteinander zusammenarbeiten * eigentlich AGENTS.md, aber Anthropic ist „Besonders“
  9. 12

  10. Was sind Legacy Systeme? • Alte Technologien • Niemand mehr

    da, der was weiß drüber • Mehr Rätselraten statt Wissen • Keine oder unzuverlässige Tests • usw. Mehrere Jahre lang gelaufene Systeme, die noch gebraucht werden, aber wo man sich nicht einfach so mehr ran traut. 15
  11. Alle coolen Kids spielen mit KI 17 Drawing by Daniel

    Storii {turnoff.us}, Thanks to Michael Tharrington
  12. Die Welt der Legacy Systeme … Drawing by Daniel Storii

    {turnoff.us}, Thanks to Michael Tharrington 18
  13. … sieht in der Realität anders aus. Drawing by Daniel

    Storii {turnoff.us}, Thanks to Michael Tharrington 19
  14. Unpopuläre Programmiersprachen Aus dem TIOBE-Index - Platz 20: Kotlin -

    Platz 22: COBOL - Platz 32: TypeScript - Platz 39: Scala - Platz 50: PL/I Ohne Platzierung (Auszug) - RPG - F# - Groovy - Hack - Bash https://www.tiobe.com/tiobe-index/ 23
  15. Agentic Modernization Cycle Agentic Software Modernization Assessment Agentic Software Modernization

    Use Cases AI-driven Code Transformation & Ecosystem Enablement Acceptance Workbench, AI Performance Benchmarking Verstehen Modernisierungsbedarfe durch Interviews, System- sichtung und Challengen der bestehenden Strategien ermitteln. Entscheiden Agentische Optionen bewerten und konkrete Modernisierungsschritte festlegen. Transformieren AI-gestützt Code und Doku neu gestalten sowie Umfeld befähigen. Validieren Erfolge durch Tests, Benchmarks und Checks nachweisen. Exit Exit Exit 26
  16. Meine typischen Agenteneinsätze Adhoc Reverse Engineering Scratch Refactoring1 Sparring Partner

    Design Speculation2 Werkzeugbau Verbessern von Bezeichnern klein groß 1https://oorp.github.io/#refactor-to-understand 2https://oorp.github.io/#speculate-about-design 27
  17. Agentic Software Modernization Heute: Typische „spezielle“ Herausforderungen 1. Große Codebasen

    (viel Masse zu bewegen) 2. Komplizierte Codebasen (schwer zu verstehen) 3. Komplexe Codebasen (große Beziehungsgeflechte) 28
  18. Je weniger Du tust, desto mehr davon kannst Du machen!

    Scott Hanselman Mein Leitprinzip 30
  19. → → Code „Wer nur im Code sucht, findet auch

    nur dort Probleme“ - Gernot Starke Vorgehen Idee sub encrypt{my($p)=@_;my$a="s";my$b="x";my$c=rev erse($p.$a.$b.$p);my$d=0;for(split//,$c.$p.$ a.uc($b).reverse($p)){ $d+=ord($_)*3+length($c)%7 }return "MEGA".$d."END"}print encrypt($ARGV[0]); Ach, eigentlich wollten die nur Passwörter hashen Überdenken? Standardisieren? Verbessern? 31
  20. Wer nur den Code verbessern lässt, schafft Modern Legacy, Siehe:

    https://www.innoq.com/de/blog/2025/10/modern-legacy-dank-ki/ Systeme, die dank KI-Unterstützung technisch hochmodern und vorbildlich dokumentiert wirken, deren eigentlicher Zweck aber längst fragwürdig ist. Stolperfalle Nr. 1: 32
  21. Was ist noch da? Inventarisierung! Codebestandteile (am besten fachlich angehaucht)

    durchzählen - Masken / Views - Services - Klassen - Fachliche Module - Tests - Tabellen - Batches - … Sichtbarkeit schaffen! 34
  22. Warum AI-Einsatz gut überlegen? ... using a combination of glob

    and grep. Claude Code is making use of agentic search “ Anthropic: Transform Legacy Systems into Strategic Assets - Code Modernization with AI https://www.youtube.com/watch?v=8qtSeQuNv0o 43
  23. Manual Work Transformation Tools Guided AI AI assistants AI agents

    Developers manually analyze, reason about, and fix issues (based on deep domain and system knowledge) Human-based creation of formal rules and recipes to perform consistent, automated code transformations Human-led detection of issues or anti-patterns, followed by localized AI-generated fixes within defined areas Human-guided AI-based task execution for fixing code in smaller areas / clearly scoped contexts Autonomous systems orchestrate analysis, transformation and validation of modernization workflows General Idea Special issues like redesign of critical parts of business logic or performance optimization Framework migrations, API upgrades, bulk renames, restructurings Identifying systemic issues and using AI to propose or apply localized solutions Summarizing code, generating tests & comments, renaming identifiers, writing code snippets Cleanup ideation, multistep refactoring planning, smaller bug fixing across code bases Possible Use Cases ++ + o - -- Control How much humans can be in the loop -- - - + ++ Risk How likely changes go wrong -- - - o ++ Breadth How wide the method can operate ++ ++ + o o Accuracy How well problematic spots are addressed o ++ ++ o - Traceability How well actions can be tracked ~ - o o o Efforts How much work setup and use need -- ++ o - + Volume How much can be processed Light Version 1.2 Markus Harrer AI for Legacy Modernization: When and How to Use (or not) 45
  24. Guided AI vs. Transformation Tools Guided AI durch Skripts an

    der Leine geführte KI • Skript identifiziert deterministisch anzupassende Stellen • Agent / LLM ändert gezeigte Stellen nicht-deterministisch Transformation Tools mit KI-erstellte Migrationsskripte • Agent identifiziert nicht-deterministisch die anzupassenden Stellen und erstellt Anweisungen für Anpassungen • Transformations-Tools führen Anweisungen deterministisch aus 46
  25. Agents sind toll, aber nicht den Rest der Möglichkeiten vergessen!

    Überblick „Transformation Tools“ https://markusharrer.de/blog/2026/02/10/code-transformation-tools-landscape/
  26. CustomerMapper reloads all contract data when converting CustomerDBO to CustomerBO

    AI feat. Code Transformation Tools descriptive analysis exploratory tracing analysis For every click in the application, there is an average of 250 DB calls and 50 service calls This list of mappers for the following views use already the new (D)BOs Mapping code reloads data via loops and traversing relationships DBO: DataBase Objects BO: Business Objects → inductive analysis recipe-based changes Okay, fixing this now. I’ll create and execute migrations scripts. 1 2 3 4 5 AI HI 48
  27. Ganz „spezielle“ Korrekturen Teil I: Einschränken des Problembereichs z. B.

    Tree-sitter Parsergenerator und Parserbibliothek Analyze oder auch: Semgrep, Acorn, OpenRewrite LST, jQAssistant Knowledge Graphs, Rector, … Entwickly Finde alle Klassen- Kommentare Klassen- kommentare 51
  28. Ganz „spezielle“ Korrekturen Teil II: Ermitteln der Probleme Hier sind

    Kommentare, Finde die Fakes! OK, hier sind sie LLM Evaluate Entwickly Klassen- kommentare Fake- Kommentare 52
  29. Ganz „spezielle“ Korrekturen Teil III: Kochen lassen nach Rezept Hier

    sind Fake- Kommentare, korrigiere diese! Erledigt! Improve LLM Entwickly Korrigierte Kommentare Fake- Kommentare Rezept 53
  30. Verarbeitungszeit reduzieren KI-Agenten an die kurze Leine nehmen / mehr

    Führen (lassen) t Human Agent t Human LLM Scripting ✗ ✓ Möglichkeiten: LLM in the Loop, statische Code-Suche, Aufgabenzerlegung … 56
  31. Was können wissensbasierte Agenten eigentlich „wissen“? Image adapted from Michael

    Scholz, Alfred Holl: Objektorientierung und Poppers Drei-Welten-Modell als Theoriekerne in der Wirtschaftsinformatik I guess XYZ is meant! World 1 Physical World (e.g. company) World 2 Subjective Reality (e.g. developers, business analysts) World 3 Objective knowledge (e.g. docs, code) Externalization Perception Manipulation Interpretation Context Intent Interpretation 60
  32. Poisoning | Context | Clash your old legacy code void

    addCust(String name, String email) { Map c = new HashMap(); c.put("name", name); c.put("email", email); customers.add(c); System.out.println("Added cst: " + name); } your new legacy code void addCust(String name, String email) { customers.add(new Customer( name, email, new Date().toString(), UUID.randomUUID().toString(), null)); System.out.println("cst added: " + name); } LLMs könnten unerwünschte Effekte aufnehmen und hebeln 62
  33. Wie Ergebnisqualität erhöhen? Context is king, intent is ace Möglichkeiten:

    Context Engineering, Absicht / Ziele klar definieren, semantische Anker, … t Human Agent t Human Agent ✗ ✓ ✗ ✗ ✓ 64
  34. Intent Engineering (is ace!) Es braucht Klarheit, was man will!

    Denn: ohne Start und Ziel kann niemand den richtigen Weg gehen! (auch nicht Agentic AI) 66
  35. Semantische Anker Präzise definierte Fachbegriffe, Methodiken und Frameworks für eine

    effektive LLM-Kommunikation. […] Dienen als Referenzpunkte bei der Interaktion mitLarge Language Models.[…] Fungieren als gemeinsames Vokabular, das spezifische, kontextreiche Wissensdomänen innerhalb der Trainingsdaten eines LLMs gezielt aktiviert. 67 Übernommen und übersetzt von https://llm-coding.github.io/Semantic-Anchors/
  36. Semantische Anker - Beispiele ✗ "Write tests“ ✓ “Write test

    according to Behavior-Driven Development" ✗ “review architecture“ ✓ “review my hexagonal architecture style“ ✗ “improve database access” ✓ “migrate all DAOs to JPA repositories" Teils übernommen und übersetzt von https://llm-coding.github.io/Semantic-Anchors/ 68
  37. /src ├── BillingTeamsService.py ├── chargeTeamByCard.py ├── create-InvoiceData.py ├── datagatekeeper.PY ├──

    format-date-helpr.py ├── get-usr-prof.py ├── thequerymachine.py └── user_discount_srv.py ✗ Bad globability ✓ Better globability /src ├── /modules │ └── /billing │ ├── __init__.py │ ├── charge_by_card_use_case.py │ ├── billing_service.py │ ├── invoice_repository.py │ ├── create_invoice_dto.py │ └── format_date_helper.py └── /infra └── db_client.py Interpretationsfähigkeit erhöhen 71
  38. Revival of Basic Design Principles To keep our software design

    simple and changeable, it should reflect the user’s mental model. Urs Enzler User Agent Dev „Email, Letter, Docs“ TextContainer „add subject line“ ??? User 72
  39. 1. Schutzklausel einführen 2. Toten Code löschen 3. Symmetrien herstellen

    4. Neue Schnittstelle zur alten Implementierung hinzufügen 5. Lesereihenfolge verbessern 6. Zusammenhängende Ordnung herstellen 7. Erklärende Variablen hinzufügen Aufräumaktionen nach Kent Beck 8. Erklärende Konstanten hinzufügen 9. Parameter explizit machen 10. Anweisungen konzeptionell gruppieren 11. Helfer extrahieren 12. An einem Haufen arbeiten 13. Erklärende Kommentare hinzufügen 14. Überflüssige Kommentare löschen Quelle: Kent Beck: Tidy First? Agenten-unterstützend 73
  40. Gutes Design zahlt sich aus* Standardized naming conventions and coding

    practices could also reduce vocabulary mismatches and improve search accuracy. Jorge Martinez-Gil, Shaoyi Yin: Evaluation of Code Similarity Search Strategies in Large-Scale Codebases *Nein! Doch! Oh! 74
  41. Manager Entwickler Wir wollen die Codequalität verbessern, damit wir unseren

    Code verstehen können Wir wollen die Codequalität verbessern, damit AI unseren Code versteht 75
  42. Zwei Ansätze zur Veränderung komplexer Systeme Edit‘n‘Pray Cover‘n‘Modify Braucht hohe

    Aufmerksamkeit Sehr invasiv und zerstörend Viel zu kontrollieren Viel zu lesen und zu studieren Nutzt Checks als Sicherheitsnetz Schützt andere Codeteile Gibt schnelles Feedback Erlaubt präzise Eingriffe Hinweis: Einer dieser Ansätze ist nicht so gut! Vibe Coding im Legacy System Agentic Software Modernization 77
  43. Abhängigkeiten auflösen mit Seams Definition „Seam“ (dt. „Naht“) “Ein Seam

    ist eine Stelle, an der Sie Verhalten in Ihrem Programm modifizieren können, ohne es an dieser Stelle zu ändern.“ Michael Feathers 79
  44. Agentisches Arbeiten mit Seams Trenne an identifizierten Nähten auf →

    klar abgegrenzter Umfang zum Ändern → kleine, isolierte Änderungen → überprüfbaren Ergebnissen → sicheres Refaktorieren 80 REPEAT
  45. Beispiel „Methoden-Objekt“ Es entsteht ein neuer Platz für agentische Verbesserungen

    81 5000 Zeilen anderer Code davor 5000 Zeilen anderer Code danach
  46. Sprouting Saubere Erweiterungen unter Zeitdruck und ohne Ballast des Altsystems

    Agentic AI Use Case Auf der grünen Wiese neue Funktionsbereiche agentisch erstellen lassen, ohne zu viel vom Bestandssystem beeinflusst zu werden. Idee von Eric Evans aus “Getting Started with DDD When Surrounded by Legacy Systems” Legacy System Bubble Context Datenbank Code Code Übersetzt Legacy-System-(Denk-) Modell in neues (Denk-)Modell Sprouting im Großen mittels „Bubble Context“ Neuer Bubble Context 82
  47. 87

  48. 88

  49. 89

  50. Wichtig: Handarbeit reduzieren Schnelles, automatisiertes Feedback für schnelle Nachsteuerung Möglichkeiten:

    Critic Agents, Incremental Build / Test Execution, Fitness Functions … t Human Agent t Human Agent Feedback ✗ ✓ 90
  51. Agent | Harness | Engineering Context Engineering: Kontinuierlich angereicherte Wissensbasis

    in der Codebasis, ergänzt durch Agentenzugriff auf dynamischen Kontext wie Observability-Daten und Browser-Navigation Architectural Constraints: Überwacht nicht nur durch LLM-basierte Agenten, sondern auch durch deterministische, eigene Linter und strukturelle Tests „Garbage Collection": Agenten, die regelmäßig laufen, um Inkonsistenzen in der Dokumentation oder Verletzungen von Architekturvorgaben aufzuspüren – gegen Entropie und Verfall Birgitta Böckeler (übersetzt ins Deutsche) https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html 91
  52. ArchUnit: Eine entwicklungsnahe Architekturvalidierung ✓ Erstellung von Architekturregeln mittels eigener

    domänenspezifischer Sprache (DSL) ✓ Prüfung von Entwurfsverletzungen zur Testzeit / über PostToolUse-Hook des Agenten Mehr Informationen unter https://www.archunit.org/ Mesofeedback mit Fitness Functions 93
  53. Makrofeedback mit Golden Master Das aktuelle Verhalten des Codes festhalten

    und prüfen Andere Bezeichnungen: approval testing, characterization test, snapshot-testing Eingabe- daten Bestehender Code Golden Master Eingabe- daten Verbesserter Code Ausgabe- daten Gleiches Ergebnis? Schritt 1 Schritt 2 Schritt 3 94
  54. 96