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

Softwaremodernisierung mit GenAI – The Good, th...

Softwaremodernisierung mit GenAI – The Good, the Bad, the Unexpected

Neuen Code mit Large Language Models zu erzeugen, ist für uns längst keine Neuheit mehr. Doch der Traum, alte Softwaresysteme per Knopfdruck mithilfe künstlicher Intelligenz zu modernisieren, ist noch weit entfernt. Alte Softwaresysteme sind – sagen wir – doch etwas spezieller. In diesem Vortrag zeige ich, wie generative KI (GenAI) in diesem Bereich dennoch schon heute sinnvoll eingesetzt werden kann, wo wir (noch) an Grenzen stoßen und wo bei der Zusammenarbeit mit unseren modernen KI-Kollegen ganz andere, unerwartete Effekte auftreten.

Avatar for Markus Harrer

Markus Harrer

May 27, 2025
Tweet

More Decks by Markus Harrer

Other Decks in Technology

Transcript

  1. Softwaremodernisierung mit GenAI The Good The Bad The SIBB //

    Digitalverband Berlin-Brandenburg, 27.05.2025, Berlin Markus Harrer Software Evolutionist Unexpected
  2. 2 Softwaremodernisierung mit GenAI The Good, the Bad, the Unexpected

    ✓ GenAI um Software ✗ GenAI in Software
  3. back in 2014 … Code- Analyse Statische/ dynamische Analyse-Tools Legacy-

    Modernisierung Migration, Refactoring, Ersatz, ... Mein Einstieg in das Thema 3 Architektur- Reviews Data Science Strukturierte Vorgehen Automa- tisierte Analysen Software Analytics , Automatisierung Saubere Analyse, Reproduzierbarkeit
  4. Eine neue Hoffnung 5 ab 2019 Deep Learning Program Generator

    CLGen https://github.com/ChrisCummins/clgen (von 2017)
  5. Totale Euphorie 7 seit 2023 Artificial Intelligence Machine Learning Data

    Science , Automatisierung Saubere Analyse, Reproduzierbarkeit Deep Learning GenAI LLM Legacy- Modernisierung Migration, Refactoring, Ersatz, ... GPTs AI-assisted Modernization
  6. 10 Übernommen, korrigiert und ergänzt nach einer Idee von Bilgin

    Ibryam https://generativeprogrammer.com/p/ai-coding-assistants-landscape/ generisch agentisch assistierend spezialisiert Mit Tools von morgen Systeme von gestern heute verbessern Codex CLI
  7. Softwarearchäologie 12 mit Claude Code auf Basis der Git-Historie •

    Die wichtigsten Entwicklungen der Scheduling-Komponente: - März 2013: Mike startete das Feature mit grundlegenden Implementierungen - Juli 2013: REST-Schnittstelle wurde von Mike entwickelt - Dezember 2013: Umfassende Überarbeitung mit AddSchedulingUser/Date und Voting - Januar 2014: AWS-Backend-Integration durch Mike und Charlie - Februar 2014: Refactoring mit Enum für YES/NO/MAYBE und XSS-Schutz - Februar/März 2014: Implementierung der Löschfunktionen - Juli 2016: Finale Verbesserungen mit "final date" und "event Date" Funktionen Mike war hauptverantwortlich für die Grundarchitektur, während Charlie und Matthew später wichtige Verbesserungen beitrugen. „Fasse mir die wichtigsten vergangenen Entwicklungen der Scheduling-Komponente zusammen.“
  8. /* * OpenClinica is distributed under the * GNU Lesser

    General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * copyright 2003-2011 Akaza Research */ package org.akaza.openclinica.control.submit; import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.TreeSet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.sql.DataSource; import org.apache.commons.beanutils.BeanUtils; import org.akaza.openclinica.bean.admin.AuditBean; import org.akaza.openclinica.bean.admin.CRFBean; import org.akaza.openclinica.bean.core.AuditableEntityBean; import org.akaza.openclinica.bean.core.DataEntryStage; import org.akaza.openclinica.bean.core.EntityBean; import org.akaza.openclinica.bean.core.ItemDataType; import org.akaza.openclinica.bean.core.NullValue; import org.akaza.openclinica.bean.core.NumericComparisonOperator; import org.akaza.openclinica.bean.core.ResolutionStatus; import org.akaza.openclinica.bean.core.Role; import org.akaza.openclinica.bean.core.Status; import org.akaza.openclinica.bean.core.SubjectEventStatus; Code-Zusammenfassungen … als Podcast-Episode mit Googles NotebookLM
  9. 19

  10. Was Foundation Models sahen und lernten 21 Zeichnung von Daniel

    Storii {turnoff.us}, Thanks to Michael Tharrington
  11. Was LLMs jetzt sehen (müssen?) 22 Zeichnung von Daniel Storii

    {turnoff.us}, Thanks to Michael Tharrington
  12. Modellen die Hausregeln beibringen 25 Visualisierung von OpenAI, ziemlich sicher

    generiert mit ChatGPT https://platform.openai.com/docs/guides/model-optimization RAG Externes Wissen in Anfragen integrieren Instruction Tuning Befolgen der Anweisungen verbessern RLHF Durch menschliche Rückmeldung verbessern Fine-Tuning Auf bestimmte Aufgaben feinabstimmen Alignment Auf ethische Werte abstimmen Aufwand Retrieval Augmented Generation Reinforcement Learning from Human Feedback
  13. Ganz „spezielle“ Korrekturen 28 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
  14. Ganz „spezielle“ Korrekturen 29 Teil II: Ermitteln der Probleme Hier

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

    Hier sind Fake- Kommentare, korrigiere diese! Erledigt! Improve LLM Entwickly Korrigierte Kommentare Fake- Kommentare Rezept
  16. Maker Innovation und Ideen Schnell zum Markt Feature-fokussiert Rapid Prototyping

    Idee zum MVP 80% Lösung Kick bei Go Live Endlich mehr Care-Arbeit https://unsplash.com/photos/1lGeOg6IULc 34
  17. Mender Probleme lösen Technische Schulden angehen Produkt stabilisieren Bugfixing und

    Integration Stetige Verbesserung Beharrlich und kontinuierlich https://unsplash.com/photos/D6cgenSS5NY 35 Endlich mehr Care-Arbeit
  18. Mender Probleme lösen Technische Schulden angehen Produkt stabilisieren Bugfixing und

    Integration Stetige Verbesserung Beharrlich und kontinuierlich https://unsplash.com/photos/D6cgenSS5NY 36 Endlich mehr Care-Arbeit
  19. Das große Revival der Dev-Doku! 37 LLMs benötigen Vorgaben wie

    Code-Konventionen, Architekturstandards, Programmierstile, unsere „Spezalitäten“ etc. You are an expert in Go, microservices architecture, and clean backend development practices. Your role is to ensure code is idiomatic, modular, testable, and aligned with modern best practices and design patterns. ### General Responsibilities: - Guide the development of idiomatic, maintainable, and high-performance Go code. - Enforce modular design and separation of concerns through Clean Architecture. - Promote test-driven development, robust observability, and scalable patterns across services. ### Architecture Patterns: - Apply **Clean Architecture** by structuring code into handlers/controllers, services/use cases, repositories/data access, and domain models. - Use **domain-driven design** principles where applicable. - Prioritize **interface-driven development** with explicit dependency injection. - Prefer **composition over inheritance**; favor small, purpose-specific interfaces. - Ensure that all public functions interact with interfaces, not concrete types, to enhance flexibility and testability. ### Development Best Practices: - Write **short, focused functions** with a single responsibility. - Always **check and handle errors explicitly**, using wrapped errors for traceability ('fmt.Errorf("context: %w", err)'). - Avoid **global state**; use constructor functions to inject dependencies. - Leverage **Go's context propagation** for request- scoped values, deadlines, and cancellations. ... Auszug aus Cursor Rules von https://cursor.directory/go-microservices →
  20. Modernisierung mit GenAI gibt Hoffnung 39 Legacy Systeme werden uns

    nämlich noch länger beschäftigen… Intelligenz Zeit Wir alle müssen uns nicht mehr mit Legacy Systemen herumärgern
  21. Meine persönliche Hoffnung 40 Die größte Chance von GenAI ist

    nicht, dass sie Legacy-Systeme verändern, sondern unsere Einstellung zu ihnen.