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

Agentic Software Modernization: Back to the Roo...

Agentic Software Modernization: Back to the Roots (Java Forum Stuttgart 2026)

Legacy-Modernisierung mit AI Agents verantwortbar machen

Mittlerweile dringen AI Agents auch in Enterprises in Code-Galaxien vor, die nie ein Large Language Model zuvor gesehen hat. Die Versuchung ist daher groß, auch die eigene Java-Legacy-Codebase von AI Agents über Nacht umbauen zu lassen. Aber nach tausend angepassten Klassen durch Hunderte von Agents (und zehn automatisch erhöhten LLM-Nutzungslimits später) stellt sich dann oft nur eines heraus: Nichts funktioniert mehr. Null. Nada.

In diesem Vortrag zeige ich, was AI Agents sind, warum diese im Brownfield so schlecht abschneiden und was Sprachbarrieren und Todo-Listen-Apps damit zu tun haben. Aber auch, was gut funktioniert: Mit Seams, Slicing und Sprouting vorab potenzielles Chaos begrenzen, AI Agents mit Ankern und Strukturen zielsicher navigieren und mit Fitness Functions bei Bedarf wieder auf Kurs bringen.

Die Mission: Mit AI Agents in Warp Speed sicher in fernen Galaxien ans Ziel kommen. Denn am Ende zählt nicht, wie viel sich an Code bewegt, sondern ob das Legacy System wirklich vorankommt.

Avatar for Markus Harrer

Markus Harrer

July 09, 2026

More Decks by Markus Harrer

Other Decks in Technology

Transcript

  1. J a v a F o r u m S

    t u t t g a r t 2 0 2 6 , 0 9 . 0 7 . 2 0 2 6 Agentic Software Modernization Back to the Roots Markus Harrer
  2. Grobe Agenda Agentic Software Modernization Was ist das ? Wie

    ändern, ohne sich dabei ins eigene Knie zu schießen? Warum schwierig zu ändern? Legacy Fragen und Antworten 2 1 2 3
  3. Frage an euch 4 Wer nutzt AI Coding Agents /

    Coding Harnesses? Claude Code GitHub Copilot Naja ok, von mir aus auch OpenCode OpenHands Devin Codex CLI Pi Antigravity Windsurf dann aber auch Cursor und noch Cline = Kilo Code Aider ob das noch wer kennt… Gemini CLI
  4. Agentic: typische Assoziationen handelt ohne Schritt-für-Schritt-Anweisung Skynet kann sich selber

    helfen ersetzt den Menschen trifft Entscheidungen Slo(t|p) Machine wird nie müde schläft nie ein ist immer vor dem Chef im Geschäft Bedenken Autonomie Leistungs- bereitschaft Geschwin- digkeit kein Mensch kann mehr mithalten erzeugt sehr viel auf einmal liefert schnell Ergebnisse 5 Magic
  5. Was sind Legacy Systeme? • Alte Technologien und Programmiermethoden •

    Niemand mehr da, der sich damit wirklich auskennt • Mehr Rätselraten statt Wissen • Keine oder unzuverlässige Tests • usw. Mehrere Jahre lang gelaufene Systeme, die noch gebraucht werden, aber an die man sich nicht mehr einfach so herantraut. 7
  6. Frage an euch 8 Wer hat hier im Raum KEIN

    Legacy System? Legacy System
  7. Frage an euch 12 Wer glaubt, dass das so einfach

    geht? It works on my machine!
  8. 20 Unterschiedliche Situationen Zusammengefasste Daten aus der 100k Devs Study,

    Yegor Denisov-Blanch, Stanford, mehr unter https://www.innoq.com/de/blog/2026/03/ueber- ai-einsatz-in-verschiedenen-coding-situationen/ Extrem kniffelige Legacy-Systeme Vibecoding-Demos auf YouTube Schach-Engine in LaTeX Ex-Startup-YOLO- Anwendungen
  9. Zwei Ansätze zur Veränderung von Systemen 22 Edit‘n‘Pray Cover‘n‘Modify Braucht

    hohe Aufmerksamkeit Sehr invasiv und zerstörend Viel zu kontrollieren Viel zu lesen und zu studieren Nutzt Tests als Sicherheitsnetz Schützt andere Codeteile Gibt schnelles Feedback Erlaubt präzise Eingriffe Hinweis: Einer dieser Ansätze ist nicht sooooo gut bei der Verwendung von Coding Agents …
  10. Agentic Software Modernization 23 Agentic AI mit klassischen Analyse- und

    Validierungsmethoden sowie bewährten Modernisierungsvorgehen geschickt kombinieren, um Legacy-Systeme Schritt für Schritt, nachvollziehbar und verantwortbar weiterzuentwickeln. Ein mit einer Leine geführter Agent
  11. Context Overload 25 Image by https://www.philschmid.de/context-engineering Legacy Code Menge an

    Zeichen / Tokens, mit denen Large Language Models (LLMs) arbeiten, ist begrenzt. Große Mengen an Tokens machen LLM langsamer und unzu- verlässiger.
  12. Je weniger Du tust, desto mehr davon kannst Du machen!

    Scott Hanselman Mein Leitprinzip 26
  13. → → 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? 27
  14. Chaos begrenzen, Impact erhöhen 30 Das „Magische Dreieck der Softwaresanierung“*

    *ja, den Begriff habe ich mir selbst ausgedacht Slicing (zum Verstehen) Agenten einen überschaubaren, abgegrenzten Codeausschnitt zum Arbeiten geben. Sprouting (zum Erweitern) Seams (zum Flexibilisieren) Nahtstellen einbauen, damit Agenten neue Implementierungen und Tests sicher einhängen können. Greenfield-Bereich schaffen, in dem neue Features über Agenten unabhängig entstehen können.
  15. 32

  16. 33 Überschau- barer Kontext für den Slice Auch: Bessere Bewertung

    möglich, wie viel Arbeit reingesteckt werden soll
  17. public class Handler { public Handler() { processor = createProcessor();

    ... } protected Processor createProcessor() { return new Processor(); } } Seam für bessere Austauschbarkeit 34 public class Handler { public Handler() { processor = new Processor(); ... } } Seam geschaffen vorher nachher Nun möglich, alternative, parallele Implementierung anzugehen!
  18. 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 35
  19. 37

  20. Beispiel: Vibecoding von Tools 39 Von LLM- geschriebenes und von

    LLM-gestütztes Tool zum Erstellen von Abkürzungs- verzeichnissen
  21. Beispiel: Guided AI mit Agents Durch Scripting geführte KI /

    „LLM in the Loop“ • (KI-erzeugtes) Skript identifiziert deterministisch problematische Stellen in der großen Code-Basis • Agent / LLM analysiert / ändert Fundstellen nicht-deterministisch 40 Jupyter AI mit Claude Code
  22. 41

  23. Beispiel: Transformation Tools mit Agents 42 Durch Agenten erstellte Migrationsskripte

    • Agent erstellt auf Basis von Analysen nicht-deterministisch Anweisungen für vorzunehmende Anpassungen / Rezepte • Transformations-Tools führen Anweisungen deterministisch aus über die komplette Code-Basis AI Assisted Java Modernization: Building OpenRewrite Recipes with Tim te Beek https://www.youtube.com/watch?v=LpGguXsR93A
  24. Coding Agenten im Einsatz ... 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 45
  25. /src ├── BillingTeamsService.py ├── chargeTeamByCard.py ├── create-InvoiceData.py ├── datagatekeeper.PY ├──

    format-date-helpr.py ├── get-usr-prof.py ├── thequerymachine.py └── user_discount_srv.py ✗ Schlechte globability ✓ Gute 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 Strukturelle Navigation verbessern 47
  26. Strukturinformationen einbringen 48 Namenskonventionen in Klassen Namenskonventionen in Modulen Definition

    mittels Annotationen Definition mittels Marker-Interfaces public class CustomerRepository { package org.springframework.samples.petclinic.repository; @interface Repository { @Repository class Customer { public interface Repository { public class CustomerDAO implements Repository {
  27. Inhaltliche Orientierung ausbauen 49 BALR Registers Memory Address Customer Database

    CSTRPO01 LLM erkennt rein technische Details. Hat Schwierigkeiten, die Lücke zur Geschäftslogik zu überbrücken. 1 Extrem stark vereinfacht Customer Database Persistence SQL Account customerRepository LLM erkennt passende Muster zum andocken. Kurze Entfernung zu Geschäftskonzepten. ✗ Schlechte grepability ✓ Gute grepability
  28. Semantische Anker nutzen Präzise definierte Fachbegriffe, Methodiken und Frameworks für

    eine effektive LLM-Kommunikation. […] Dienen als Referenzpunkte bei der Interaktion mit Large Language Models.[…] Fungieren als gemeinsames Vokabular, das spezifische, kontextreiche Wissensdomänen innerhalb der Trainingsdaten eines LLMs gezielt aktiviert. 50 Übernommen und übersetzt von https://llm-coding.github.io/Semantic-Anchors/
  29. 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/ 51
  30. 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 52
  31. Über Harness Input & Feedback einbringen Context Engineering Kontinuierliches Anreichern

    der Wissensbasis in der Codebasis Architectural Constraints Überwachen durch LLM-basierte Agenten und deterministische Tools Garbage Collection Aufspüren von globalen Inkonsistenzen gegen lokale Entropie und schleichendem Verfall inspiriert durch Birgitta Böckeler https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html 56
  32. Language Server Protocol 58 real-time code intelligence while working on

    your codebase. “ https://code.claude.com/docs/en/plugins-reference
  33. Feedback zurück an Agenten liefern 60 Linter Golden Master Testing

    Fitness Functions https://www.innoq.com/de/blog/2026/04/vom-vibe-coder-zum-agentic-engineer/ Drift Detector Code Reviewer
  34. Feedback für den Agenten über ArchUnit 1. Erstellung von Architekturregeln

    mittels einer domänen- spezifischen Sprache (DSL) für strukturelle Checks 2. Prüfung von Architekturverletzungen zur Testzeit über einen Hook für den Agenten, wo Build darüber angestoßen wird. Mehr Informationen unter https://www.archunit.org/ Fitness Functions 62
  35. 3. Interpretation und Rückmeldung von Architekturverletzungen über Subagent an den

    Haupt-Agenten Mehr Informationen unter https://www.archunit.org/ 63
  36. Goldene Regel für Harnesses 64 If you can tool it,

    tool it. If you can’t, prompt it. Torben Keller https://www.innoq.com/de/blog/2026/04/vom-vibe-coder-zum-agentic-engineer/
  37. Kleines Beispiel 66 Zerteile diese Gottklasse. Baue dir hierfür zuerst

    einen Mikado- Graphen auf (1) skill: mikado-graph (2) hook: PostToolUse -> run-approval-test.sh (3) subagent: -> test analysis agent Kleines Beispiel https://github.com/feststelltaste/trivia/tree/ agentic-golden-master/java/.claude
  38. Kleines Beispiel: Mikado-Refactoring 67 (1) skill: mikado-graph --- name: mikado-graph

    description: Plan and track a complex refactoring using the Mikado Method. Trigger when the user mentions "mikado", wants to plan a refactoring or upgrade incrementally, needs to untangle blockers before changing code, or asks to track dependencies visually. --- # Mikado Graph The Mikado Method is an incremental refactoring technique: try a change, note what breaks, revert, then fix the blockers first. This skill tracks that process as a dependency graph — each node is a goal, a blocker, or a leaf task you can act on right now. ## Node types ...
  39. Kleines Beispiel 77 Zerteile diese Gottklasse. Baue dir hierfür zuerst

    einen Mikado- Graphen auf (1) skill: mikado-graph (2) hook: PostToolUse -> run-approval-test.sh (3) subagent: -> test analysis agent
  40. 78

  41. Kleines Beispiel 79 Zerteile diese Gottklasse. Baue dir hierfür zuerst

    einen Mikado- Graphen auf (1) skill: mikado-graph (2) hook: PostToolUse -> run-approval-test.sh (3) subagent: -> test analysis agent
  42. 80

  43. Kleines Beispiel: Mikado-Refactoring 81 Zerteile diese Gottklasse. Baue dir hierfür

    zuerst einen Mikado- Graphen auf (1) skill: mikado-graph (2) hook: PostToolUse -> run-approval-test.sh (3) subagent: -> test analysis agent
  44. 84 … denn es gibt viel Potenzial Pre-Gen Spielraum für

    Fehlinterpretation Post-Gen Gen … und Arbeit.
  45. Damals … 86 Herr Meier, 2005 Herr Meier, seien sie

    sich bewusst, dass sie Ihren Job als COBOL-Entwickler nicht mehr so lange haben. Es gibt ja jetzt Java, wodurch all unsere Probleme gelöst werden!
  46. … wie … 87 Herr Meier, seien sie sich bewusst,

    dass sie Ihren Job als COBOL-Entwickler nicht mehr so lange haben. Es gibt ja jetzt Microservices, wodurch all unsere Probleme gelöst werden! Herr Meier, 2015
  47. … heute. 88 Herr Meier, 2025 Herr Meier, seien sie

    sich bewusst, dass sie Ihren Job als COBOL-Entwickler nicht mehr so lange haben. Es gibt ja jetzt Agentic AI, wodurch all unsere Probleme gelöst werden!
  48. Agentic Software Modernization Cycle 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. Agentic Software Modernization Assessment Agentic Software Modernization Use Cases AI-driven Code Transformation & Ecosystem Enablement Acceptance Workbench, AI Performance Benchmarking Exit Exit Exit 91 Exit
  49. Adhoc Reverse Engineering Scratch Refactoring Sparring Partner Design Speculation Werkzeugbau

    Verbessern von Bezeichnern klein groß Agentic Software Modernization Cycle 94 Transformieren: je nach Use Case umsetzen, z. B.
  50. Beispiel (Prä-KI-Ära): Architektur-Refactoring von “No Architecture” zu “Hexagonal Architecture” Agentic

    Software Modernization Cycle 95 Validieren: Umbauarbeiten über die Zeit hinweg verfolgen https://www.innoq.com/en/blog/visualizing-progress-of- refactoring-into-hexagonal-architecture-using-jqassistant/
  51. 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 97
  52. Grundmechanik – AGENTS.md* 98 Instruktionen und Kontext für den Agenten

    * oder CLAUDE.md bei Anthropic # CLAUDE.md ## 1. Think Before Coding **Don't assume. Don't hide confusion. Surface tradeoffs.** Before implementing: - State your assumptions explicitly. If uncertain, ask. - If multiple interpretations exist, present them - don't pick silently. - If a simpler approach exists, say so. Push back when warranted. - If something is unclear, stop. Name what's confusing. Ask. ... Auszug von https://github.com/multica-ai/andrej-karpathy-skills/blob/main/CLAUDE.md
  53. Grundmechanik – Commands 99 Gespeicherte Anweisungen, die Entwickler als Befehl

    aufrufen --- allowed-tools: Bash(./scripts/gh.sh:*), Bash(./scripts/comment-on-duplicates.sh:*) description: Find duplicate GitHub issues --- Find up to 3 likely duplicate issues for a given GitHub issue. To do this, follow these steps precisely: 1. Use an agent to check if the Github issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed. ... Auszug von https://github.com/anthropics/claude-code/blob/main/.claude/commands/dedupe.md
  54. Grundmechanik – Skills 100 Umfangreichere Aktivitäten, die ein Agent bei

    bestimmten Trigger-Wörter ausführt / nutzt --- name: grill-me description: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me". --- Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. Ask the questions one at a time. ... Auszug von https://github.com/mattpocock/skills/blob/main/skills/productivity/grill-me/SKILL.md
  55. Grundmechanik – Hooks 101 Aktivitäten, welche ein Agent an bestimmten

    Lifecycle-Punkten automatisch auslöst Grafik von https://code.claude.com/docs/en/hooks
  56. Weitere Grundlagen 102 Überblick • Plugins Verteilungsmöglichkeit für die Erweiterung

    von paketierten Agenten-Fähigkeiten • RAG Retrieval-Augmented Generation Anbindung weiterer Infos, um Agenten Zugriff auf spezifische Informationen zu geben • MCP Model Context Protocol externe Tools einbinden, um die Fähigkeiten und das Wissen von Agenten zu erweitern • Sub Agents / Agent Teams Agenten, die miteinander zusammenarbeiten • Sandboxing Geschützte Ausführungsumgebung (Container, Firewall, Workspace) für Agents