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

Entwicklertag FFM 2018: Software nachhaltig sanieren

Silas
February 21, 2018

Entwicklertag FFM 2018: Software nachhaltig sanieren

Es ist nichts beständiger als der Wandel. IT Systeme müssen deshalb ebenfalls laufend geändert werden, oft genug ist das ein Problem. Egal ob der Auslöser eine Firmenübernahme ist, der Legacy-Stack auf die neueste unterstützte Version migriert werden soll oder ob sich das unter Zeitdruck erstellte Greenfield-Projekt als strukturloser "Big Ball of Mud" entpuppt - ein Sanierungsfall liegt vor.

Diese Vorstellung ist für viele Entwickler mindestens abschreckend. Ein Großteil der massiven Codebasis muss angepasst werden. Wo fängt man an? Und wie geht man vor, ohne sich in einem Netz unvollständiger Änderungen zu verstricken?

Angefangen bei kurzfristigen Stabilisierungsmaßnahmen über organisatorische Aspekte bis hin zu sozialen Themen teilen wir in dieser Session unsere Erfahrungen, die wir zu den drei Säulen "Infrastruktur", "Techniken" und "Vorgehen" für eine nachhaltige Sanierung verdichtet haben. Steht zu Beginn mit Messen und Erste-Hilfe-Maßnahmen bei der (Entwicklungs-)Infrastruktur vor allem kurzfristig Erreichbares auf der Agenda, folgen Techniken mit dem Ziel des testbar Machens von Bestandscode, kontinuierlichen Refactorings von Code und Architektur in kleinen Schritten und schließlich langfristigee Maßnahmen für nachhaltig mehr Qualität in Form eines gemeinsamen Managements technischer Schulden, Qualitäts- und Verantwortungskultur im Team.

Ziel ist der systematische Abbau von technischen Schulden als kontinuierlicher Prozess und dadurch nachhaltig bessere Software.

Silas

February 21, 2018
Tweet

More Decks by Silas

Other Decks in Technology

Transcript

  1. IT-Consulting, Software Engineering & Test Management SBB CFS FFS 24

    Mio. Umsatz * 350 Mitarbeiter 8 Jahre in Folge 3 Tage F&E pro MA/Jahr Berlin Frank- furt München 22 Natio- nalitäten * Zahlen für 2017 geschätzt
  2. Wie entsteht Legacy Software? Wie wird man Legacy Software los?

    - Unsere Prinzipien für eine nachhaltige Sanierung - Die drei Säulen Fazit und Literatur Agenda 1. 2. 3.
  3. Wie entsteht „Tech Debt“? Fahrlässig Mit Bedacht Mit Absicht Ohne

    Absicht „Für Qualität haben wir keine Zeit“ „Um den Termin zu halten, schieben wir Aufräumarbeiten auf“ Was ist eine Race Condition? Jetzt wissen wir besser wie es geht https://martinfowler.com/bliki/TechnicalDebtQuadrant.htm
  4. Klar kommunizieren, Tracken, Zeit zum Abbau fordern Kontinuierlich und inkrementell

    abbauen Wie entsteht „Tech Debt“? Fahrlässig Mit Bedacht Mit Absicht Ohne Absicht https://martinfowler.com/bliki/TechnicalDebtQuadrant.htm Mehr Mut! Weiterbildung
  5. Wie wird man Legacy Software los? - Unsere Prinzipien für

    eine nachhaltige Sanierung Agenda 2.
  6. Prinzipien 1. Inkrementell 2. Mutig 3. Kollaborativ - Besser planbar

    - Geringeres Risiko - Leicht rückgängig zu machen - Früheres Lernen, direktes Profitieren - Zeitdruck und Furcht sind Garant für hohe Zeitverschwendung - Unbedingt ganzes Team involvieren
  7. Die Drei Säulen Infrastruktur Techniken Vorgehen - Erste Hilfe leisten

    - Metriken erfassen - Testing Legacy - Parallel Change - Branch by Abstraction - Strangler Application - Schulden bewerten - Schulden überwachen - Qualitätskultur - Kollektiv Entscheidungen verantworten Nachhaltige Sanierung Kurzfristig erreichbar Langfristig erreichbar
  8. Die Drei Säulen Infrastruktur Techniken Vorgehen - Erste Hilfe leisten

    - Metriken erfassen - Testing Legacy - Parallel Change - Branch by Abstraction - Strangler Application - Schulden bewerten - Schulden überwachen - Qualitätskultur - Kollektiv Entscheidungen verantworten Nachhaltige Sanierung Kurzfristig erreichbar Langfristig erreichbar
  9. Erste Hilfe leisten - VCS einführen - Builds automatisieren -

    CI Server aufsetzen - Automatische Tests ermöglichen
  10. Metriken erfassen - Linter - Coverage Tools - Profiler -

    Structure 101 http://structure101.com/ - SonarQube https://www.sonarqube.org/ - Source Monitor http://www.campwoodsw.com/ sourcemonitor.html - Code Charta https://github.com/ MaibornWolff/codecharta
  11. Die Drei Säulen Infrastruktur Techniken Vorgehen - Erste Hilfe leisten

    - Metriken erfassen - Testing Legacy - Parallel Change - Branch by Abstraction - Strangler Application - Schulden bewerten - Schulden überwachen - Qualitätskultur - Kollektiv Entscheidungen verantworten Nachhaltige Sanierung Kurzfristig erreichbar Langfristig erreichbar
  12. Testing Legacy Code - Wir brauchen Tests! - Techniken, die

    Legacy testbar machen - Langfristiges Ziel: Testpyramide
  13. Golden Master Technik Aufgezeichneter Input (Datei) Aufgezeichneter Output (Datei) Legacy

    Applikation Sanierte Applikation Input für UI/API Input für UI/API Output Vergleich des Output
  14. Die Drei Säulen Infrastruktur Techniken Vorgehen - Erste Hilfe leisten

    - Metriken erfassen - Testing Legacy - Parallel Change - Branch by Abstraction - Strangler Application - Schulden bewerten - Schulden überwachen - Qualitätskultur - Kollektiv Entscheidungen verantworten Nachhaltige Sanierung Kurzfristig erreichbar Langfristig erreichbar
  15. Schulden bewerten - „Pain Points“ sammeln - Priorisieren à wie

    sehr behindert die Schuld uns? - Gemeinsam entscheiden: Was sofort angehen? Pain Effort
  16. Schulden überwachen - Metriken regelmäßig reviewen - Im Team transparent

    machen à Motivation - Wenn möglich versehentlichen Neuaufbau per Tooling ver- hindern
  17. Qualitätskultur & kontinuierliche Verbesserung Quality Fridays If it hurts, do

    it more often: Continuous Integration Unnötige Komplexität vermeiden und abbauen Test-driven Development Boy Scout Rule Pair Programming Code Reviews
  18. Kollektiv Entscheidungen verantworten Automated GUI Tests - Gemeinsames Zielbild durch

    gemeinsame Entscheidungen - Architektur und Design - Verantwortung für den Prozess
  19. Vielen Dank für die Aufmerksamkeit! Fragen und Diskussionen jederzeit gern

    W e‘re hiring! In München, Frankfurt, Berlin und Augsburg