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

Datenanalysen in der Softwareentwicklung mit Software Analytics (MATHEMA Freitag)

Datenanalysen in der Softwareentwicklung mit Software Analytics (MATHEMA Freitag)

Gerne möchten wir als Softwarearchitekten einmal so richtig schön in unseren Softwaresystemen aufräumen oder zumindest grobe Schnitzer korrigieren. Mit unserem „Nerdy Talk“ kommen wir hier jedoch nicht weiter: Das Management lässt sich nur mit Zahlen, Daten, Fakten von dringenden und oft teuren Verbesserungsarbeiten überzeugen. Zudem sind längerdauernde, rein technische Problemlösungen so gut wie unsichtbar für den Fachbereich, was früh Zweifel an Investitionen aufkommen lassen kann.

Im Vortrag stelle ich Software Analytics vor, mit dessen Vorgehen und Methoden Problemursachen und -lösungen für Nicht-Techniker auf Basis von Daten aus der Softwareentwicklung sichtbar und verständlich dargestellt werden können.

Konkret sehen wir uns das „digitale Notizbuch“ sowie Werkzeuge für die schnelle Durchführung von nachvollziehbaren Datenanalysen an. Hiermit lassen sich ganz individuelle Problemursachen Schritt für Schritt über Hypothesen, Analysen und Visualisierungen explizit ausdrücken sowie Problembehebungen nachweisen. Ich zeige das Zusammenspiel von Open-Source-Analysewerkzeugen (wie Jupyter, Pandas, jQAssistant, Neo4j) zur Untersuchung von Java-Anwendungen und deren Umgebung (Git, Profiler, Logfiles etc.). In Praxisbeispielen arbeiten wir uns zu Problemursachen vor, suchen nach defektem Code, erschließen No-Go-Areas in Anwendungen und priorisieren gewinnbringende Aufräumarbeiten.

Markus Harrer

June 22, 2018
Tweet

More Decks by Markus Harrer

Other Decks in Programming

Transcript

  1. Wie kommt es denn zu sowas? Wir haben jetzt eine

    7-Schichten- architektur! Jedes Jahr gibt es ne‘ neue Schicht, um den Mis t vom letzten Jahr zu überdecken!
  2. Schrecklich! Was is t denn passiert? Ges tern is t

    unser Flaggschiffprodukt in Produktion abgeraucht! Nichts! Niemand verwendet es...
  3. „Die Definition des Wahnsinns ist, immer dasselbe zu tun und

    ein anderes Ergebnis zu erwarten.“ – Albert Einstein
  4. Software Development is the act of transforming Knowledge into Code

    by HumanS you have to address that! if you want to fix this
  5. Häufigkeit Fragen Nutze Standard-Tools für allgemeine Fragen Option 2: Setze

    Software Analytics zur Behandlung riskanter Probleme ein Risiko Software Analytics fokussiert sich auf wichtige Fragen Option 1: Ignoriere Fragen einfach
  6. Python Data Scientist's best friend: Einfache, effektive, schnelle Programmiersprache pandas

    Pragmatisches Datenanalyse-Framework: „Interaktives Excel-Arbeitsblatt“ für Daten bis in den GB-Bereich matplotlib Plotting-Bibliothek für einfache Visualisierungen (Linien-, Balken-, Tortendiagramme etc.) Jupyter Interaktives Notizbuch: Zentrale Stelle für Datenanalysen und Dokumentation Data Science Tools Anaconda
  7. deluxe 1. Scanne Softwarestrukturen 2. Speichere in Graphdatenbank 3. Analysiere

    und erstelle Verbindungen 4. Füge eigene Konzepte hinzu 5. Finde Antworten
  8. Java Class Business Subdomain Method Field codeChurn 2 bugs 5

    From developer details to management insights with graphs
  9. types 16 bugs 17 codeChurn 5 problems 8 types 5

    bugs 29 codeChurn 51 problems 11 From developer details to management insights with graphs
  10. Individuelle Analysen für individuelle Probleme • Falsch verschachtelte Scopes bei

    CDI-Beans • Ausgeschaltetes Lazy-Loading durch Mapper • Komplexe Berechnungen in JSF-BackingBeans • Performance-Probleme mit Drittbibliotheken • Ausufernden, langlaufende End2End-Tests • ...
  11. 164) static void rb532_mask_and_ack_irq(struct irq_data *d) 165) { 166) rb532_disable_irq(d);

    167) ack_local_irq(group_to_ip(irq_to_group(d->irq))); 168) } 169) 170) static int rb532_set_type(struct irq_data *d, unsigned type) 171) { 172) int gpio = d->irq - GPIO_MAPPED_IRQ_BASE; 173) int group = irq_to_group(d->irq); 174) 175) if (group != GPIO_MAPPED_IRQ_GROUP) Identification of No-Go-Areas: Starting Point Source Code
  12. Change per Line 2011-03-23 21:09:10 +0000 164) static void rb532_mask_and_ack_irq(s

    2008-07-16 16:12:25 +0100 165) { 2011-03-23 21:09:10 +0000 166) rb532_disable_irq(d); 2011-03-23 21:09:10 +0000 167) ack_local_irq(group_to_ip(irq_to_g 2008-07-16 16:12:25 +0100 168) } 2008-07-16 16:12:25 +0100 169) 2011-03-23 21:09:10 +0000 170) static int rb532_set_type(struct ir 2008-11-28 20:45:10 +0100 171) { 2011-03-23 21:09:10 +0000 172) int gpio = d->irq - GPIO_MAPPED_IR 2011-03-23 21:09:10 +0000 173) int group = irq_to_group(d->irq); 2008-11-28 20:45:10 +0100 174) 2011-03-23 21:09:10 +0000 175) if (group != GPIO_MAPPED_IRQ_GROUP Identification of No-Go-Areas: Idea
  13. Change per Line efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000

    164) 73b439 arch/irq.c (Ralf Baechle 2008-07-16 16:12:25 +0100 165) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 166) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 167) 73b439 arch/irq.c (Ralf Baechle 2008-07-16 16:12:25 +0100 168) 73b439 arch/irq.c (Ralf Baechle 2008-07-16 16:12:25 +0100 169) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 170) 4aa0f4 arch/irq.c (Phil Sutter 2008-11-28 20:45:10 +0100 171) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 172) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 173) 4aa0f4 arch/irq.c (Phil Sutter 2008-11-28 20:45:10 +0100 174) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 175) https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/ Identification of No-Go-Areas: Idea
  14. Identification of No-Go-Areas: Implementation Change per Line Dev Source Code

    Version Control System Change per Line Linux Kernel GitHub- Repository ! https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/
  15. Identification of Race Conditions with Software as a Graph Dev

    Build Source Code Graph ! Byte Code jQAssistant Neo4j Graph-DB https://git.io/f49KO
  16. Strategic Redesign: Fixing code that‘s actually been used Web Application

    Application Server User Coverage per Class JaCoCo Dev Build‘n‘Run& Source Code Version Control System Changes per Class https://www.feststelltaste.de/swot-analysis-for-spotting-worthless-code/ Neo4j
  17. + mache sie sichtbar und verständlich + erzeuge sachliche Diskussionen

    10 Priorisiere wertvolle Verbesserungen 20 Zeige, dass es besser wird; GOTO 10 + Meistere Herausforderungen gemeinsam + Fange einfach einfach an :-)
  18. Weitere Infos Literatur Christian Bird, Tim Menzies, Thomas Zimmermann: The

    Art and Science of Analyzing Software Data Tim Menzies, Laurie Williams, Thomas Zimmermann: Perspectives on Data Science for Software Engineering Wes McKinney: Python For Data Analysis Adam Tornhill: Software Design X-Ray Software Python Data Science Distribution: anaconda.com jQAssistant: github.com/JavaOnAutobahn/spring-petclinic
  19. Emoji One License: CC BY-SA 4.0 Source: Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Emojione_1F37A.svg)

    Michelangelo: Creation of Adam License: Public Domain Source: Wikimedia Commons (https://en.wikipedia.org/wiki/The_Creation_of_Adam#/media/File:Creaci%C3%B3n_de_Ad%C3%A1n_(Miguel_%C3%81ngel).jpg) Edvard Munch: The Screams License: Public Domain Source: Wiki Commons (https://commons.wikimedia.org/wiki/File:The_Scream.jpg) Hippolyte Delaroche: The Execution of Lady Jane Grey License: Public Domain Source: Wikimedia Commons (https://commons.wikimedia.org/wiki/File:PAUL_DELAROCHE_- _Ejecuci%C3%B3n_de_Lady_Jane_Grey_(National_Gallery_de_Londres,_1834).jpg) Vassily Kandinsky: Composition 8 License: Public Domain Source: Wiki Commons (https://commons.wikimedia.org/wiki/File:Vassily_Kandinsky,_1923_- _Composition_8,_huile_sur_toile,_140_cm_x_201_cm,_Mus%C3%A9e_Guggenheim,_New_York.jpg) Licenses
  20. Licenses Fritz Beinke : The Juggler License: Public Domain Source:

    Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Fritz_Beinke_-_The_juggler-_a_village_fair_-_Google_Art_Project.jpg) Luca Giordano: Fallen Angels License: Public Domain Source: Wikimedia Commons (https://commons.wikimedia.org/wiki/File:GIORDANO,_Luca_fallen_angels.jpg) Albert Einstein: Abhandlung Citation: Einstein, Albert: Quantentheorie des einatomigen idealen Gases – Zweite Abhandlung. In: Sitzungsberichte der preussischen Akademie der Wissenschaften, page 14, Reichsdruckerei Source: Lorentz Archive (https://www.lorentz.leidenuniv.nl/history/Einstein_archive/Einstein_1925_publication/Pages/paper_1925_12.html) Python Logo Adopted based on work by www.python.org (www.python.org) License: GPL (http://www.gnu.org/licenses/gpl.html) Source: Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Python-logo-notext.svg) Yoni S. Hamenahem: Chuck Norris - The Delta Force 1986 License: CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/deed.en) Source: Wikimedia Common (https://commons.wikimedia.org/wiki/File:Chuck_Norris,_The_Delta_Force_1986.jpg)