Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Raus aus den Schulden mit Software Analytics (H...

Markus Harrer
September 06, 2018

Raus aus den Schulden mit Software Analytics (Herbstcampus 2018)

In meinem Vortrag stelle ich Software Analytics vor, womit sich Daten aus der Softwareentwicklung so aufbereiten lassen, dass sie von Managern zur Entscheidungsfindung herangezogen werden können. Dadurch lassen sich Probleme in Softwaresystemen identifizieren und Restrukturierungsmaßnahmen nach strategischen Gesichtspunkten priorisieren.

Konkret zeige ich eine Werkzeugkette (Jupyter, Pandas, jQAssistant, Neo4j), mit der sich entsprechende Auswertungen von Java-Anwendungen und deren Umgebung (Git, FindBugs, JaCoCo etc.) schnell umsetzen lassen. Im Live-Coding-Teil sehen wir uns die Identifikation von Wissenslücken sowie die Priorisierung des Abbaus von technischen Schulden an.

Markus Harrer

September 06, 2018
Tweet

More Decks by Markus Harrer

Other Decks in Technology

Transcript

  1. Raus aus den Schulden mit Software Analytics Herbstcampus 6. September

    2018, Nürnberg Markus Harrer @feststelltaste feststelltaste.de [email protected]
  2. Missachtung von Warnings/Findings Fehlende Coding-Standards und Architektur-Doku Quick-Fixes & Workarounds

    Hohe Abhängigkeiten zwischen Modulen Beispiele für technische Schulden (eine kleine Auswahl) Code ohne Tests Verwendung archaischer Programmbibliotheken
  3. Management Entwickler Mauer der Ignoranz Chancen SCHULDEN Adaptiert von Janelle

    Klein: IDEAFLOW - How to Measure the PAIN in Software Development. Leanpub
  4. Management Entwickler Mauer der Ignoranz Chancen SCHULDEN Adaptiert von Janelle

    Klein: IDEAFLOW - How to Measure the PAIN in Software Development. Leanpub Datenanalyse
  5. Häufigkeit Schulden Nutze Standard-Tools für allgemeine Schulden Option 2: Setze

    Software Analytics zur Behandlung riskanter Schulden ein Risiko Software Analytics fokussiert sich auf wichtige Schulden Option 1: Ignoriere Schulden einfach
  6. Notebook Komplett automatisiert Kontext dokumentiert Ideen, Daten, Annahmen und Vereinfachungen

    aufgeführt Berechnungen verständlich dargelegt Zusammenfassungen erklärt
  7. Python Data Scientist's best friend: Einfache, effektive, schnelle Programmiersprache Pandas

    Pragmatisches Datenanalyse-Framework: Großartige Datenstrukturen und gute Integration mit Machine Learning Tools matplotlib Plotting-Bibliothek für einfache Visualisierungen (Linien-, Balken-, Tortendiagramme etc.) Jupyter Interaktives Notizbuch: Zentrale Stelle für Datenanalysen und Dokumentation STANDARDWERKZEUGE
  8. advanced level Structural Code Analysis Framework 1. Scanne Softwarestrukturen 2.

    Speichere in Graphdatenbank 3. Analysiere und erstelle Verbindungen 4. Füge eigene Konzepte hinzu 5. Finde Antworten
  9. :Class Business Subdomain :Method :Field bugs 2 changes 5 :Entity

    usage 100% name birthDate https://github.com/buschmais/spring-petclinic jQAssistant – Die komplexe Softwarelandschaft als Graph
  10. types 16 bugs 17 changes 15 usage 70% types 5

    bugs 29 changes 51 usage 80% jQAssistant – Die komplexe Softwarelandschaft als Graph https://github.com/buschmais/spring-petclinic
  11. Welche Art von DatenAnalysen?  Abschätzung des Wissensverlusts bei Entwicklerfluktuation

     Verprobung von Modularisierungsvarianten (“virtuelles Refactoring”)  Erstellung eines Codeinventars / Musterkatalogs  Ermittlung von Performance-Hotspots über Call-Tree-Analyse  Identifikation von besonders fehlerbehafteten Codeteilen  ... Individuelle Schulden im eigenen Softwaresystem sichtbar machen! e. g. race conditions, architecture smells, build breaker, programming errors, dead code, ...
  12. Identification of No-Go areas using version control data Change per

    Line Dev Source Code Version Control System Change per Line https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/
  13. 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
  14. Identification of No-Go Areas: Idea Change per Line 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)
  15. Code Smells: Find Bugs with „Software as a Graph“ Dev

    Build Source Code Graph Byte Code jQAssistant Neo4j Graph-DB https://git.io/f49KO Scan
  16. Strategic Redesign: Fixing code that‘s actually 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. Living, self-validating architecture documentation Dev Build Source Code Byte Code

    jQAssistant https://git.io/f49KO Neo4j Architecture Documentation Architecture Concepts&Rules Analyze Report Architecture Documentation Scan
  18. + Erste Schritte sind einfach durchführbar + Tiefergehende Analysen sind

    es oft wert + Technische Schulden im Code können identifiziert und kommuniziert werden + Sichten für Nicht-Techniker erstellbar + Schulden können objektiv betrachtet werden + Ursachen werden behoben statt Symptome gefixt!
  19. Mehr Informationen (1/2) Literatur (Software Analytics) 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 Adam Tornhill: Software Design X-Ray Literatur (Technische Schulden) Carola Lilienthal: Langlebige Software-Architekturen Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz: Object-Oriented Reengineering Patterns Gernot Starke und andere: aim42.org
  20. Mehr Informationen (2/2) Software Python Data Science Distribution: anaconda.com jQAssistant:

    jqassistant.org Neo4j: neo4j.com Demos, Workshops, Code Blog: feststelltaste.de Web: markusharrer.de Repos: github.com/feststelltaste/software-analytics github.com/JavaOnAutobahn/spring-petclinic DataCamp: https://projects.datacamp.com/projects/111
  21. 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) 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) Bildnachweise