SlideShare ist ein Scribd-Unternehmen logo
1 von 25
1 
30 Minuten 
Software-Sanierung: Wie man kranke Systeme wieder gesund macht. 
Dr. Josef Adersberger (josef.adersberger@qaware.de)
2 
Manch Software ist ein Intensivpatient. 
http://www.klinikum.uni-heidelberg.de
Grund 1: Das Ding läuft nicht richtig. 
3 
https://developers.facebook.com/status 
MTTR: ~46 Stunden 
Äußere Qualität
Grund 2: Qualitätsschulden und Software-Bankrott. 
4 
Software von angemessenerQualität 
Änderungskosten in € 
Zeit 
Software von degenerierterQualität 
Budget 
Erste zerbrochene Fensterscheibe 
Software- 
Qualitätsschulden 
Innere Qualität
5 
Doch wie helfen? 
http://www.starflash.de/stars/dr.-house-fanclub-266439.html
6 
1: Anamnese 
Erhebung der Leidensgeschichte des Patienten.
7 
Was ist das Fehlerbildvor Kunde? Wie hoch ist der Schaden? 
Wann wurde der Fehler erstmalig gemeldet und wie häufig tritt er seitdem auf (MTTF)? 
Wie lange dauert es, um das System nach dem Fehler wieder lauffähig zu bekommen (MTTR)? 
Kann der Fehler reproduziert werden? 
Sind Logsoder Monitoring-Daten für vor, während und nach dem Fehler verfügbar? 
Gab es vor dem Fehler ein besonderes Ereignis (z.B. betrieblicher Eingriff, ausgefallenes Nachbarsystem oder Request-Spitze)? 
Welche Ideen gibt es für die Fehlerursachen? 
Wie lange wird die Software bereits entwickelt? 
Wie viele Entwickler haben daran entwickelt und wie hoch war ihre Fluktuation? 
Wie umfangreich ist die Software (z.B. in Lines-of-Code)? 
Was sind die größten Produktivitätshemmnisse bei den Entwicklern? 
Wo drückt der Schuh? 
Gibt es ein Architekturbildder Software? 
Bei Laufzeitproblemen: 
Bei Qualitätsschulden: 
Welche Technologienwerden eingesetzt?
8 
Untersuchung 
Messungen und Inspektionen am Patienten durchführen: 
Vitalfunktionen 
Symptombezogen 
Gesamtheitlich
9 
http://www.siemens.com/press/pool/de/pressebilder/2013/healthcare/imaging-therapy-systems/HIM201311007 
Eine Frage der Werkzeuge
Das Software-EKG + ein guter Profiler. 
10 
Viele Knoten und Prozesse 
Non-invasive Messpunkte: SNMP, WPC, JMX, … 
Hohe Abtastfrequenz 
Integrierte Log-Analyse 
Explorative Analyse-UI
EKGpi: Eine Software-Blackbox. 
11
SonarQube: Ein Vital-Monitor der inneren Softwarequalität. 
12 
Trends! 
Die wichtigsten Metriken 
Alarme 
Anomalien
Structure101: Ein Röntgenapparat für Code. 
13 
Architekturkonsistenz 
Komplexitätsverteilung 
Zyklen 
Refactoring-Simulation
14 
Diagnose 
Symptom: Ein Zeichen, das auf eine Erkrankung hinweist. 
Befund: Ergebnis einer Untersuchung (pathologisch weist auf Erkrankung hin) 
Beschwerde: Aussage des Patienten 
Diagnose: Krankheitsursache erschließen. Dafür sind neben den Symptomen oft weitere Untersuchungen notwendig. 
Ausschluss-Diagnose: Ursachen ausschließen. 
Differenzial-Diagnose: Iterative risiko-und wahrscheinlichkeitsorientierte Eingrenzung. 
Verdachtsdiagnose: Auf Verdacht behandeln.
15 
Diagnostik 
Symptomatik 
Anamnese: Anwendung macht hauptsächlich NW-IO. Kein Reproducer. 
Beschwerde: Java-Web-System stürzt seit letztem Release erratisch nach wenigen Stunden Laufzeit ab. 
Differenzialdiagnose„Systemausfall Web-System“. 
Befund (o.B.): Keine Fehlermeldungen in den Applikations-und Systemlogs. 
Befund (o.B.): Keine Speicherknappheit im Monitoring erkennbar. 
Befund (o.B): Keine Korrelation des Ausfalls mit der Systemlast erkennbar. 
Befund (o.B.): Keine Korrelation des Ausfalls mit einem bestimmten Request. 
Befund (pathologisch): Zu gering gesetzte FileHandles(ulimit) im Betriebssystem. 
Notfalltherapie: Watchdoginstallieren, der Neustart auslöst. 
Therapie: FileHandlesper ulimiterhöht. 
Untersuchung: Log-Level der System-Logs erhöhen und Logs aus anschließendem Produktionslauf monitoren. 
Befund (pathologisch, Leitsymptom): System-Log zeigt weiterhin einen JVM-Exit mitSegmentation Error (ungültige Speicherreferenzierung). 
Eingrenzung: Fehler entsteht nicht durch Java-Code. Er kannentstehen durch: 
1.Einen Bug in einer verwendeten nativen Bibliothek 
2.Einen Bug in der JVM 
3.Eine fehlerhafte Konfiguration der JVM 
4.Eine fehlerhafte Konfiguration des Systems 
Ausschluss-Diagnose: 
•Untersuchung: JVM-Shutdown-Hook ergänzen, der Core- Dumpbei Exit erstellt und in Produktion auf Fehler warten. 
•Untersuchung: Alle JVM-Parameterder Anwendung ermitteln. 
Befund (pathologisch): Segmentation Error im JVM-Codefür Netzwerk-IO. 
Verdachtsdiagnose(nach Internet-Recherche): Bug in JVM 6 mit unpassendem Default-Wert für StackShadowPages. 
Therapie:StackShadowPageserhöht. 
Untersuchung: Produktion überwachen. 
Befund (o.B.): Produktion läuft stabil.
Bei Qualitätsschulden ist die Diagnose einfacher: 90% der Symptome lassen sich auf wenige Ursachen zurückführen. 
16 
■Mangelnde Testüberdeckung. 
■Unüberlegter Einsatz von (Open-Source-) Bibliotheken und Frameworks. 
■Zu viele Code-Anomalien und uneinheitlich formatierter Code. 
■Zu viel duplizierter Code. 
■Zu wenig Kommentare an den wichtigen Stellen. 
■Komplexitätsnester. 
■Keine (vernünftige) Architektur. 
■Fehlende Architekturkonsistenz. 
Die Ursachen für die restlichen 10% lassen sich gut durch eine Woche Pair Programmingmit einem Stamm-Entwickler ermitteln.
17 
Dings 
bums 
Die ewig konsistente Architektur
Natürlich haben wir eine Architektur! 
18
Qualitätsschulden entstehen jedoch insbesondere auch durch 
mangelhafte fachliche Modularisierung. 
19
20 
Therapie 
Therapie: Maßnahmen zur Behandlung von Krankheiten. 
Gezielte Therapie 
Notfalltherapie 
Verdachtstherapie
Der Therapie-Plan: Maßnahmenkatalog. 
21 
■Symptom (Auffälligkeit) 
■(Therapie-) Maßnahme 
■Was passiert, wenn man es nicht macht? 
■Priorität 
■Aufwand 
■Wirkung
Wichtig ist die Nachsorge: Ein Qualitätskontrakt definiert ein verbindliches Qualitätsniveau und Qualitätsziele. 
22 
Tests 
Code 
Duplikate 
Kommentare 
Architektur 
Komplexität 
Funktionalität 
Änderbarkeit 
Metrik 
rot 
gelb 
C1-Testüberdeckung über alle Testebenen 
<60% 
< 65% 
Testerfolg 
< 100% 
Ignorierte Testfälle 
> 0 
Rot: Code-Duplikate (ohne Generate) mit mehr als 10 Anweisungen duplizierter Code-Struktur. 
Metrik 
rot 
gelb 
Dokumentierte API 
<90% 
<100% 
Kommentarquote 
< 10% 
<25% 
Rot: Verletzung gegen eine definierte Soll-Architektur existieren. 
Rot: Abhängigkeitszyklen über Paketgrenzen hinweg. 
Rot: Anteil am Code- Volumen der Methoden mit einer zyklomatischenKomplexität > 10 ist größer als 10%. 
Metrik 
rot 
gelb 
Code-Anomalien mit Schweregrad Blocker oder Critical oder Major. 
> 0 
Code-Anomalien mit Schweregrad Minor, Info 
> 0 
Semantik der Farben: 
Rot: Zu keinem Zeitpunkt akzeptabel. Reißleinen- Prinzip. 
Gelb: Muss vor einem Release blau sein. 
Grau: Wenn nichts gemessen wird. 
Blau: Wenn nicht gelb/rot/grau.
23 
Abweichungen 
Trends 
Attraktoren 
Information Radiatorenmachen Qualität sichtbar
24 
Information Radiatorenmachen Qualität sichtbar 
Featuring: Shake-to-Build
QAwareGmbH, Aschauer Str. 32, 81549 München, GermanyTel +49 89 232315-0, Fax +49 89 232315-129, info@qaware.de, www.qaware.de 
QUANTENSPRUNG DANK ANDERSDENKEN 
Josef Adersberger 
josef.adersberger@qaware.de 
@adersberger

Weitere ähnliche Inhalte

Andere mochten auch

O chocolate quadrado que desce redondo! Por Stella Lenz de Mello
O chocolate quadrado que desce redondo! Por Stella Lenz de Mello O chocolate quadrado que desce redondo! Por Stella Lenz de Mello
O chocolate quadrado que desce redondo! Por Stella Lenz de Mello Sylvia Lenz
 
Anteproyecto final skate
Anteproyecto final skateAnteproyecto final skate
Anteproyecto final skateBryam Cabrera
 
Almacenamiento de informacion
Almacenamiento de informacionAlmacenamiento de informacion
Almacenamiento de informacionBryan Alexander
 
Ik Kil: uno de los cenotes mas famosos de la Riviera Maya
Ik Kil: uno de los cenotes mas famosos de la Riviera MayaIk Kil: uno de los cenotes mas famosos de la Riviera Maya
Ik Kil: uno de los cenotes mas famosos de la Riviera MayaDescubreMexico
 
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der PostprivatsphäreFuchsy Fuchs
 
Manual de Excel
Manual de ExcelManual de Excel
Manual de ExcelGian0796
 
Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)
Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)
Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)Digitised Manuscripts to Europeana
 
Retiro de Yoga-Zen de Semana Santa
Retiro de Yoga-Zen de Semana SantaRetiro de Yoga-Zen de Semana Santa
Retiro de Yoga-Zen de Semana SantaYoga Ashram
 
Joomla! Overrides - Die zu wenig genutzte Vielfalt
Joomla! Overrides - Die zu wenig genutzte VielfaltJoomla! Overrides - Die zu wenig genutzte Vielfalt
Joomla! Overrides - Die zu wenig genutzte VielfaltSven Schultschik
 
Acuerdos y compromisos
Acuerdos y compromisosAcuerdos y compromisos
Acuerdos y compromisosAlina D-Cn
 

Andere mochten auch (16)

O chocolate quadrado que desce redondo! Por Stella Lenz de Mello
O chocolate quadrado que desce redondo! Por Stella Lenz de Mello O chocolate quadrado que desce redondo! Por Stella Lenz de Mello
O chocolate quadrado que desce redondo! Por Stella Lenz de Mello
 
Anteproyecto final skate
Anteproyecto final skateAnteproyecto final skate
Anteproyecto final skate
 
Almacenamiento de informacion
Almacenamiento de informacionAlmacenamiento de informacion
Almacenamiento de informacion
 
Ik Kil: uno de los cenotes mas famosos de la Riviera Maya
Ik Kil: uno de los cenotes mas famosos de la Riviera MayaIk Kil: uno de los cenotes mas famosos de la Riviera Maya
Ik Kil: uno de los cenotes mas famosos de la Riviera Maya
 
Industrial
IndustrialIndustrial
Industrial
 
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
 
Manual de Excel
Manual de ExcelManual de Excel
Manual de Excel
 
Puertas de entrada
Puertas de entradaPuertas de entrada
Puertas de entrada
 
Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)
Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)
Linked Open Data and Libraries by Doron Goldfarb (Austrian National Library)
 
Serenata schubert
Serenata schubertSerenata schubert
Serenata schubert
 
Foros TeresaValdez
Foros TeresaValdezForos TeresaValdez
Foros TeresaValdez
 
Spirit Wings
Spirit WingsSpirit Wings
Spirit Wings
 
Retiro de Yoga-Zen de Semana Santa
Retiro de Yoga-Zen de Semana SantaRetiro de Yoga-Zen de Semana Santa
Retiro de Yoga-Zen de Semana Santa
 
Joomla! Overrides - Die zu wenig genutzte Vielfalt
Joomla! Overrides - Die zu wenig genutzte VielfaltJoomla! Overrides - Die zu wenig genutzte Vielfalt
Joomla! Overrides - Die zu wenig genutzte Vielfalt
 
Ofertas internas linkedin 02-02
Ofertas internas linkedin 02-02Ofertas internas linkedin 02-02
Ofertas internas linkedin 02-02
 
Acuerdos y compromisos
Acuerdos y compromisosAcuerdos y compromisos
Acuerdos y compromisos
 

Ähnlich wie Software-Sanierung: Wie man kranke Systeme wieder gesund macht.

Einführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungEinführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungChristian Baranowski
 
Autonomic Computing - Diagnosis - Pinpoint Summary
Autonomic Computing - Diagnosis - Pinpoint SummaryAutonomic Computing - Diagnosis - Pinpoint Summary
Autonomic Computing - Diagnosis - Pinpoint SummaryOliver Stadie
 
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP InstallationenABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP InstallationenVirtual Forge
 
PROFACTOR Gruppe | Complete Inspect
PROFACTOR Gruppe | Complete InspectPROFACTOR Gruppe | Complete Inspect
PROFACTOR Gruppe | Complete InspectPROFACTOR Group
 
Automatisierter Software-Test unter Java
Automatisierter Software-Test unter JavaAutomatisierter Software-Test unter Java
Automatisierter Software-Test unter JavaGFU Cyrus AG
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenGjero Krsteski
 
Automatisiertes webauftritt testen
Automatisiertes webauftritt testenAutomatisiertes webauftritt testen
Automatisiertes webauftritt testenmradamlacey
 
OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...
OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...
OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...NETWAYS
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaGeorg Knon
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunk
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunk
 
Fehlerbaumanalyse für Energiesysteme
Fehlerbaumanalyse für EnergiesystemeFehlerbaumanalyse für Energiesysteme
Fehlerbaumanalyse für EnergiesystemeE P
 
Erfolgsfaktoren für modellbasiertes Testen
Erfolgsfaktoren für modellbasiertes TestenErfolgsfaktoren für modellbasiertes Testen
Erfolgsfaktoren für modellbasiertes Testentrossner
 
Crowdsourced Mobile Testing – Alternative oder Ergänzung?
Crowdsourced Mobile Testing – Alternative oder Ergänzung?Crowdsourced Mobile Testing – Alternative oder Ergänzung?
Crowdsourced Mobile Testing – Alternative oder Ergänzung?Connected-Blog
 
Die nächste Generation des Unit Testing
Die nächste Generation des Unit TestingDie nächste Generation des Unit Testing
Die nächste Generation des Unit TestingDaniel Lehner
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 
Präsentation Monitoring 31.1.2011
Präsentation Monitoring 31.1.2011Präsentation Monitoring 31.1.2011
Präsentation Monitoring 31.1.2011Maikel Hahahup
 
Sicherung der Bildqualität in röntgendiagnostischen Betrieben
Sicherung der Bildqualität in röntgendiagnostischen BetriebenSicherung der Bildqualität in röntgendiagnostischen Betrieben
Sicherung der Bildqualität in röntgendiagnostischen Betriebenqubyx
 

Ähnlich wie Software-Sanierung: Wie man kranke Systeme wieder gesund macht. (20)

Einführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungEinführung in die Software-Qualitätssicherung
Einführung in die Software-Qualitätssicherung
 
Autonomic Computing - Diagnosis - Pinpoint Summary
Autonomic Computing - Diagnosis - Pinpoint SummaryAutonomic Computing - Diagnosis - Pinpoint Summary
Autonomic Computing - Diagnosis - Pinpoint Summary
 
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP InstallationenABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
 
PROFACTOR Gruppe | Complete Inspect
PROFACTOR Gruppe | Complete InspectPROFACTOR Gruppe | Complete Inspect
PROFACTOR Gruppe | Complete Inspect
 
Automatisierter Software-Test unter Java
Automatisierter Software-Test unter JavaAutomatisierter Software-Test unter Java
Automatisierter Software-Test unter Java
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-Anwendungen
 
Automatisiertes webauftritt testen
Automatisiertes webauftritt testenAutomatisiertes webauftritt testen
Automatisiertes webauftritt testen
 
Fraud detection
Fraud detectionFraud detection
Fraud detection
 
OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...
OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...
OSMC 2011 | Performance-Vergleich von Nagios Monitoring Lösungen by Christoph...
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use Case
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
Fehlerbaumanalyse für Energiesysteme
Fehlerbaumanalyse für EnergiesystemeFehlerbaumanalyse für Energiesysteme
Fehlerbaumanalyse für Energiesysteme
 
Test-Alternativen
Test-AlternativenTest-Alternativen
Test-Alternativen
 
Erfolgsfaktoren für modellbasiertes Testen
Erfolgsfaktoren für modellbasiertes TestenErfolgsfaktoren für modellbasiertes Testen
Erfolgsfaktoren für modellbasiertes Testen
 
Crowdsourced Mobile Testing – Alternative oder Ergänzung?
Crowdsourced Mobile Testing – Alternative oder Ergänzung?Crowdsourced Mobile Testing – Alternative oder Ergänzung?
Crowdsourced Mobile Testing – Alternative oder Ergänzung?
 
Die nächste Generation des Unit Testing
Die nächste Generation des Unit TestingDie nächste Generation des Unit Testing
Die nächste Generation des Unit Testing
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
Präsentation Monitoring 31.1.2011
Präsentation Monitoring 31.1.2011Präsentation Monitoring 31.1.2011
Präsentation Monitoring 31.1.2011
 
Sicherung der Bildqualität in röntgendiagnostischen Betrieben
Sicherung der Bildqualität in röntgendiagnostischen BetriebenSicherung der Bildqualität in röntgendiagnostischen Betrieben
Sicherung der Bildqualität in röntgendiagnostischen Betrieben
 

Mehr von Josef Adersberger

Into the cloud, you better fly by sight
Into the cloud, you better fly by sightInto the cloud, you better fly by sight
Into the cloud, you better fly by sightJosef Adersberger
 
Serverless containers … with source-to-image
Serverless containers  … with source-to-imageServerless containers  … with source-to-image
Serverless containers … with source-to-imageJosef Adersberger
 
The need for speed – transforming insurance into a cloud-native industry
The need for speed – transforming insurance into a cloud-native industryThe need for speed – transforming insurance into a cloud-native industry
The need for speed – transforming insurance into a cloud-native industryJosef Adersberger
 
The good, the bad, and the ugly of migrating hundreds of legacy applications ...
The good, the bad, and the ugly of migrating hundreds of legacy applications ...The good, the bad, and the ugly of migrating hundreds of legacy applications ...
The good, the bad, and the ugly of migrating hundreds of legacy applications ...Josef Adersberger
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesJosef Adersberger
 
Istio By Example (extended version)
Istio By Example (extended version)Istio By Example (extended version)
Istio By Example (extended version)Josef Adersberger
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Dataservices - Processing Big Data The Microservice Way
Dataservices - Processing Big Data The Microservice WayDataservices - Processing Big Data The Microservice Way
Dataservices - Processing Big Data The Microservice WayJosef Adersberger
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Josef Adersberger
 
Time Series Processing with Solr and Spark
Time Series Processing with Solr and SparkTime Series Processing with Solr and Spark
Time Series Processing with Solr and SparkJosef Adersberger
 
Time Series Processing with Apache Spark
Time Series Processing with Apache SparkTime Series Processing with Apache Spark
Time Series Processing with Apache SparkJosef Adersberger
 
Clickstream Analysis with Spark
Clickstream Analysis with Spark Clickstream Analysis with Spark
Clickstream Analysis with Spark Josef Adersberger
 

Mehr von Josef Adersberger (15)

Into the cloud, you better fly by sight
Into the cloud, you better fly by sightInto the cloud, you better fly by sight
Into the cloud, you better fly by sight
 
Serverless containers … with source-to-image
Serverless containers  … with source-to-imageServerless containers  … with source-to-image
Serverless containers … with source-to-image
 
The need for speed – transforming insurance into a cloud-native industry
The need for speed – transforming insurance into a cloud-native industryThe need for speed – transforming insurance into a cloud-native industry
The need for speed – transforming insurance into a cloud-native industry
 
The good, the bad, and the ugly of migrating hundreds of legacy applications ...
The good, the bad, and the ugly of migrating hundreds of legacy applications ...The good, the bad, and the ugly of migrating hundreds of legacy applications ...
The good, the bad, and the ugly of migrating hundreds of legacy applications ...
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
 
Istio By Example (extended version)
Istio By Example (extended version)Istio By Example (extended version)
Istio By Example (extended version)
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Dataservices - Processing Big Data The Microservice Way
Dataservices - Processing Big Data The Microservice WayDataservices - Processing Big Data The Microservice Way
Dataservices - Processing Big Data The Microservice Way
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
Time Series Processing with Solr and Spark
Time Series Processing with Solr and SparkTime Series Processing with Solr and Spark
Time Series Processing with Solr and Spark
 
JEE on DC/OS
JEE on DC/OSJEE on DC/OS
JEE on DC/OS
 
Time Series Processing with Apache Spark
Time Series Processing with Apache SparkTime Series Processing with Apache Spark
Time Series Processing with Apache Spark
 
Big Data Landscape 2016
Big Data Landscape 2016Big Data Landscape 2016
Big Data Landscape 2016
 
Clickstream Analysis with Spark
Clickstream Analysis with Spark Clickstream Analysis with Spark
Clickstream Analysis with Spark
 

Software-Sanierung: Wie man kranke Systeme wieder gesund macht.

  • 1. 1 30 Minuten Software-Sanierung: Wie man kranke Systeme wieder gesund macht. Dr. Josef Adersberger (josef.adersberger@qaware.de)
  • 2. 2 Manch Software ist ein Intensivpatient. http://www.klinikum.uni-heidelberg.de
  • 3. Grund 1: Das Ding läuft nicht richtig. 3 https://developers.facebook.com/status MTTR: ~46 Stunden Äußere Qualität
  • 4. Grund 2: Qualitätsschulden und Software-Bankrott. 4 Software von angemessenerQualität Änderungskosten in € Zeit Software von degenerierterQualität Budget Erste zerbrochene Fensterscheibe Software- Qualitätsschulden Innere Qualität
  • 5. 5 Doch wie helfen? http://www.starflash.de/stars/dr.-house-fanclub-266439.html
  • 6. 6 1: Anamnese Erhebung der Leidensgeschichte des Patienten.
  • 7. 7 Was ist das Fehlerbildvor Kunde? Wie hoch ist der Schaden? Wann wurde der Fehler erstmalig gemeldet und wie häufig tritt er seitdem auf (MTTF)? Wie lange dauert es, um das System nach dem Fehler wieder lauffähig zu bekommen (MTTR)? Kann der Fehler reproduziert werden? Sind Logsoder Monitoring-Daten für vor, während und nach dem Fehler verfügbar? Gab es vor dem Fehler ein besonderes Ereignis (z.B. betrieblicher Eingriff, ausgefallenes Nachbarsystem oder Request-Spitze)? Welche Ideen gibt es für die Fehlerursachen? Wie lange wird die Software bereits entwickelt? Wie viele Entwickler haben daran entwickelt und wie hoch war ihre Fluktuation? Wie umfangreich ist die Software (z.B. in Lines-of-Code)? Was sind die größten Produktivitätshemmnisse bei den Entwicklern? Wo drückt der Schuh? Gibt es ein Architekturbildder Software? Bei Laufzeitproblemen: Bei Qualitätsschulden: Welche Technologienwerden eingesetzt?
  • 8. 8 Untersuchung Messungen und Inspektionen am Patienten durchführen: Vitalfunktionen Symptombezogen Gesamtheitlich
  • 10. Das Software-EKG + ein guter Profiler. 10 Viele Knoten und Prozesse Non-invasive Messpunkte: SNMP, WPC, JMX, … Hohe Abtastfrequenz Integrierte Log-Analyse Explorative Analyse-UI
  • 12. SonarQube: Ein Vital-Monitor der inneren Softwarequalität. 12 Trends! Die wichtigsten Metriken Alarme Anomalien
  • 13. Structure101: Ein Röntgenapparat für Code. 13 Architekturkonsistenz Komplexitätsverteilung Zyklen Refactoring-Simulation
  • 14. 14 Diagnose Symptom: Ein Zeichen, das auf eine Erkrankung hinweist. Befund: Ergebnis einer Untersuchung (pathologisch weist auf Erkrankung hin) Beschwerde: Aussage des Patienten Diagnose: Krankheitsursache erschließen. Dafür sind neben den Symptomen oft weitere Untersuchungen notwendig. Ausschluss-Diagnose: Ursachen ausschließen. Differenzial-Diagnose: Iterative risiko-und wahrscheinlichkeitsorientierte Eingrenzung. Verdachtsdiagnose: Auf Verdacht behandeln.
  • 15. 15 Diagnostik Symptomatik Anamnese: Anwendung macht hauptsächlich NW-IO. Kein Reproducer. Beschwerde: Java-Web-System stürzt seit letztem Release erratisch nach wenigen Stunden Laufzeit ab. Differenzialdiagnose„Systemausfall Web-System“. Befund (o.B.): Keine Fehlermeldungen in den Applikations-und Systemlogs. Befund (o.B.): Keine Speicherknappheit im Monitoring erkennbar. Befund (o.B): Keine Korrelation des Ausfalls mit der Systemlast erkennbar. Befund (o.B.): Keine Korrelation des Ausfalls mit einem bestimmten Request. Befund (pathologisch): Zu gering gesetzte FileHandles(ulimit) im Betriebssystem. Notfalltherapie: Watchdoginstallieren, der Neustart auslöst. Therapie: FileHandlesper ulimiterhöht. Untersuchung: Log-Level der System-Logs erhöhen und Logs aus anschließendem Produktionslauf monitoren. Befund (pathologisch, Leitsymptom): System-Log zeigt weiterhin einen JVM-Exit mitSegmentation Error (ungültige Speicherreferenzierung). Eingrenzung: Fehler entsteht nicht durch Java-Code. Er kannentstehen durch: 1.Einen Bug in einer verwendeten nativen Bibliothek 2.Einen Bug in der JVM 3.Eine fehlerhafte Konfiguration der JVM 4.Eine fehlerhafte Konfiguration des Systems Ausschluss-Diagnose: •Untersuchung: JVM-Shutdown-Hook ergänzen, der Core- Dumpbei Exit erstellt und in Produktion auf Fehler warten. •Untersuchung: Alle JVM-Parameterder Anwendung ermitteln. Befund (pathologisch): Segmentation Error im JVM-Codefür Netzwerk-IO. Verdachtsdiagnose(nach Internet-Recherche): Bug in JVM 6 mit unpassendem Default-Wert für StackShadowPages. Therapie:StackShadowPageserhöht. Untersuchung: Produktion überwachen. Befund (o.B.): Produktion läuft stabil.
  • 16. Bei Qualitätsschulden ist die Diagnose einfacher: 90% der Symptome lassen sich auf wenige Ursachen zurückführen. 16 ■Mangelnde Testüberdeckung. ■Unüberlegter Einsatz von (Open-Source-) Bibliotheken und Frameworks. ■Zu viele Code-Anomalien und uneinheitlich formatierter Code. ■Zu viel duplizierter Code. ■Zu wenig Kommentare an den wichtigen Stellen. ■Komplexitätsnester. ■Keine (vernünftige) Architektur. ■Fehlende Architekturkonsistenz. Die Ursachen für die restlichen 10% lassen sich gut durch eine Woche Pair Programmingmit einem Stamm-Entwickler ermitteln.
  • 17. 17 Dings bums Die ewig konsistente Architektur
  • 18. Natürlich haben wir eine Architektur! 18
  • 19. Qualitätsschulden entstehen jedoch insbesondere auch durch mangelhafte fachliche Modularisierung. 19
  • 20. 20 Therapie Therapie: Maßnahmen zur Behandlung von Krankheiten. Gezielte Therapie Notfalltherapie Verdachtstherapie
  • 21. Der Therapie-Plan: Maßnahmenkatalog. 21 ■Symptom (Auffälligkeit) ■(Therapie-) Maßnahme ■Was passiert, wenn man es nicht macht? ■Priorität ■Aufwand ■Wirkung
  • 22. Wichtig ist die Nachsorge: Ein Qualitätskontrakt definiert ein verbindliches Qualitätsniveau und Qualitätsziele. 22 Tests Code Duplikate Kommentare Architektur Komplexität Funktionalität Änderbarkeit Metrik rot gelb C1-Testüberdeckung über alle Testebenen <60% < 65% Testerfolg < 100% Ignorierte Testfälle > 0 Rot: Code-Duplikate (ohne Generate) mit mehr als 10 Anweisungen duplizierter Code-Struktur. Metrik rot gelb Dokumentierte API <90% <100% Kommentarquote < 10% <25% Rot: Verletzung gegen eine definierte Soll-Architektur existieren. Rot: Abhängigkeitszyklen über Paketgrenzen hinweg. Rot: Anteil am Code- Volumen der Methoden mit einer zyklomatischenKomplexität > 10 ist größer als 10%. Metrik rot gelb Code-Anomalien mit Schweregrad Blocker oder Critical oder Major. > 0 Code-Anomalien mit Schweregrad Minor, Info > 0 Semantik der Farben: Rot: Zu keinem Zeitpunkt akzeptabel. Reißleinen- Prinzip. Gelb: Muss vor einem Release blau sein. Grau: Wenn nichts gemessen wird. Blau: Wenn nicht gelb/rot/grau.
  • 23. 23 Abweichungen Trends Attraktoren Information Radiatorenmachen Qualität sichtbar
  • 24. 24 Information Radiatorenmachen Qualität sichtbar Featuring: Shake-to-Build
  • 25. QAwareGmbH, Aschauer Str. 32, 81549 München, GermanyTel +49 89 232315-0, Fax +49 89 232315-129, info@qaware.de, www.qaware.de QUANTENSPRUNG DANK ANDERSDENKEN Josef Adersberger josef.adersberger@qaware.de @adersberger