SlideShare a Scribd company logo
1 of 42
Download to read offline
Datenanalysen in der
Softwareentwicklung
IMPROVE Workshop
10-12 Juli 2018, Wien, Österreich
Markus Harrer
@feststelltaste feststelltaste.de talk@markusharrer.de
Agenda
- Wer?
- WTF?
- Wie?
- Was?
Datenanalysen
in der Software-
entwicklung
Wer?
Markus Harrer
Software Development Analyst
@feststelltaste
Blog: feststelltaste.de
Web: markusharrer.de
I ♥ legacy code!
Management
Entwickler
Mauer der Ignoranz
Risiken
Konsequenzen
Adaptiert von Janelle Klein: IDEAFLOW - How to Measure the PAIN in Software Development. Leanpub
Management
Entwickler
Risiken
Konsequenzen
Adaptiert von Janelle Klein: IDEAFLOW - How to Measure the PAIN in Software Development. Leanpub
Datenanalyse
Wie?
EMPIRIC
THE
STRIKES BACK
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
Code Probleme
Fachlichkeit
Notebook
Komplett automatisiert
Kontext dokumentiert
Ideen, Daten, Annahmen und
Vereinfachungen aufgeführt
Berechnungen verständlich
dargelegt
Zusammenfassungen erklärt
https://www.feststelltaste.de/production-coverage-demo-notebook/
Python
Data Scientist's best friend: Einfache,
effektiv, schnelle Programmiersprache
Pandas
Pragmatisches Datenanalyse-Framework:
Großartige Datenstrukturen und gute
Integration mit Machine Learning Tools
D3
JavaScript-Bibliothek für datenorien-
tierte Dokumente: Just beautiful!
Jupyter
Interaktives Notizbuch: Zentrale Stelle
für Datenanalysen und Dokumentation
STANDARDWERKZEUGE
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
: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
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
Welche Art von DatenAnalysen?
 Abschätzung des Wissensverlusts bei Entwicklerfluktuation
 Verprobung von Modularisierungsvarianten (“virtuellesRefactoring”)
 Erstellung eines Codeinventars / Musterkatalogs
 Ermittlung von Performance-Hotspots über Call-Tree-Analyse
 Identifikation von besonders fehlerbehafteten Codeteilen
 ...
Individuelle Risiken im eigenen Softwaresystem sichtbar machen!
e.g.raceconditions,architecturesmells,buildbreaker,programming errors,deadcode,...
Was?
No-Go-Areas
Code Smells
Strategic Redesign
DEMOS
No-Go-Areas
Code Smells
Strategic Redesign
DEMOS
Identification of No-Go areas using version control data
Change per Line
Dev
Source Code
Version Control System
Change
per Line
Demo
No-Go Areas in
the Linux kernel
https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/
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
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)
Identification of No-Go Areas: Idea
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)
Identification of No-Go Areas: Result
No-Go-Areas
Code Smells
Strategic Redesign
DEMOS
Code Smells: Seeing Software as a Graph
Dev
Build
Source Code
Graph
Byte Code
jQAssistant
Neo4j Graph-DB
https://git.io/f49KO
Code Smells: Seeing Software as a Graph
No-Go-Areas
Code Smells
Strategic Redesign
DEMOS
Strategic Redesign: Fixing code that‘s actually used
Web Application
Application Server
User
Coverage
per Class
JaCoCo
DevBuild‘n‘Run&
Source Code
Version Control System
Changes
per Class
https://www.feststelltaste.de/swot-analysis-for-spotting-worthless-code/
Neo4j
Strategic Redesign: Fixing code that‘s actually used
Zusammenfassung
+ Erste Schritte sind einfach durchführbar
+ Tiefergehende Analysen sind es wert
+ Probleme im Code können identifiziert,
aggregiert und kommuniziert werden
+ Sichten für Nicht-Techniker erstellbar
+ Risiken neutral darstellen und adressieren
+ Ursachen beheben statt Symptome fixen!
Mehr Informationen
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
DataCamp: https://projects.datacamp.com/projects/111
jQAssistant: github.com/JavaOnAutobahn/spring-petclinic
My Repo: github.com/feststelltaste/software-analytics
ASK ´ EM ALL

More Related Content

Similar to Datenanalysen in der Softwareentwicklung (IMPROVE Workshop Wien)

Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT CoreJens Siebert
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionRobin Sedlaczek
 
Scrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcher
Scrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcherScrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcher
Scrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcherJuergen Hohnhold
 
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Claus Brell
 
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...Stephan Hochdörfer
 
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...inovex GmbH
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
ScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungHeiko Brenn
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschAndreas Koop
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarschenpit GmbH & Co. KG
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alertinggeekQ
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Robin Sedlaczek
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
 
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)data://disrupted®
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsGregor Biswanger
 
I thought you were my friend!
I thought you were my friend!I thought you were my friend!
I thought you were my friend!Mario Heiderich
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT CoreJens Siebert
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...
DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...
DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...Alin Radulescu
 

Similar to Datenanalysen in der Softwareentwicklung (IMPROVE Workshop Wien) (20)

Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in Action
 
Scrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcher
Scrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcherScrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcher
Scrum days 2016_scrum_bei_festo_frank-m.hoyer_nadine.kärcher
 
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
Topologien verstehen und erstellen - Methoden der Wirtschaftsinformatik-200329
 
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
Offline. Na und? Strategien für offlinefähige Applikationen in HTML5 - Herbst...
 
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
ScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine Einführung
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
 
Service oriented alerting
Service oriented alertingService oriented alerting
Service oriented alerting
 
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?Magdeburger Developer Days 2018 - Warum warten auf die IDE?
Magdeburger Developer Days 2018 - Warum warten auf die IDE?
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
 
I thought you were my friend!
I thought you were my friend!I thought you were my friend!
I thought you were my friend!
 
Embedded Rust
Embedded RustEmbedded Rust
Embedded Rust
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...
DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...
DIY Internationalisierung für E-Commerce: Technische SEO Herausforderungen un...
 

More from Markus Harrer

Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)
Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)
Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)Markus Harrer
 
Datenanalysen in der Softwareentwicklung mit Software Analytics
Datenanalysen in der Softwareentwicklung mit Software AnalyticsDatenanalysen in der Softwareentwicklung mit Software Analytics
Datenanalysen in der Softwareentwicklung mit Software AnalyticsMarkus Harrer
 
Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...
Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...
Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...Markus Harrer
 
Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]
Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]
Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]Markus Harrer
 
Architektur und Code im Einklang [JUG Nürnberg]
Architektur und Code im Einklang [JUG Nürnberg]Architektur und Code im Einklang [JUG Nürnberg]
Architektur und Code im Einklang [JUG Nürnberg]Markus Harrer
 
Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]Markus Harrer
 
Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...
Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...
Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...Markus Harrer
 
Software Analytics for Pragmatists [DevOps Camp 2017]
Software Analytics for Pragmatists [DevOps Camp 2017]Software Analytics for Pragmatists [DevOps Camp 2017]
Software Analytics for Pragmatists [DevOps Camp 2017]Markus Harrer
 
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...Markus Harrer
 
Erkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme ProgrammingErkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme ProgrammingMarkus Harrer
 
An interactive form-based mobile software system with a sample application in...
An interactive form-based mobile software system with a sample application in...An interactive form-based mobile software system with a sample application in...
An interactive form-based mobile software system with a sample application in...Markus Harrer
 
Erkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme ProgrammingErkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme ProgrammingMarkus Harrer
 

More from Markus Harrer (12)

Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)
Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)
Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)
 
Datenanalysen in der Softwareentwicklung mit Software Analytics
Datenanalysen in der Softwareentwicklung mit Software AnalyticsDatenanalysen in der Softwareentwicklung mit Software Analytics
Datenanalysen in der Softwareentwicklung mit Software Analytics
 
Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...
Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...
Software Analytics with Jupyter, Pandas, jQAssistant, and Neo4j [Neo4j Online...
 
Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]
Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]
Philosophy screws it all up (Pecha Kucha) [Java Forum Stuttgart 2017]
 
Architektur und Code im Einklang [JUG Nürnberg]
Architektur und Code im Einklang [JUG Nürnberg]Architektur und Code im Einklang [JUG Nürnberg]
Architektur und Code im Einklang [JUG Nürnberg]
 
Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]Architektur und Code im Einklang [DeveloperCamp 2017]
Architektur und Code im Einklang [DeveloperCamp 2017]
 
Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...
Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...
Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwic...
 
Software Analytics for Pragmatists [DevOps Camp 2017]
Software Analytics for Pragmatists [DevOps Camp 2017]Software Analytics for Pragmatists [DevOps Camp 2017]
Software Analytics for Pragmatists [DevOps Camp 2017]
 
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten...
 
Erkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme ProgrammingErkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme Programming
 
An interactive form-based mobile software system with a sample application in...
An interactive form-based mobile software system with a sample application in...An interactive form-based mobile software system with a sample application in...
An interactive form-based mobile software system with a sample application in...
 
Erkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme ProgrammingErkenntnistheoretische Beurteilung von Extreme Programming
Erkenntnistheoretische Beurteilung von Extreme Programming
 

Datenanalysen in der Softwareentwicklung (IMPROVE Workshop Wien)

  • 1. Datenanalysen in der Softwareentwicklung IMPROVE Workshop 10-12 Juli 2018, Wien, Österreich Markus Harrer @feststelltaste feststelltaste.de talk@markusharrer.de
  • 2. Agenda - Wer? - WTF? - Wie? - Was? Datenanalysen in der Software- entwicklung
  • 4. Markus Harrer Software Development Analyst @feststelltaste Blog: feststelltaste.de Web: markusharrer.de I ♥ legacy code!
  • 5.
  • 6. Management Entwickler Mauer der Ignoranz Risiken Konsequenzen Adaptiert von Janelle Klein: IDEAFLOW - How to Measure the PAIN in Software Development. Leanpub
  • 7. Management Entwickler Risiken Konsequenzen Adaptiert von Janelle Klein: IDEAFLOW - How to Measure the PAIN in Software Development. Leanpub Datenanalyse
  • 10.
  • 11.
  • 12. 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
  • 14.
  • 15. Notebook Komplett automatisiert Kontext dokumentiert Ideen, Daten, Annahmen und Vereinfachungen aufgeführt Berechnungen verständlich dargelegt Zusammenfassungen erklärt
  • 16.
  • 17.
  • 19. Python Data Scientist's best friend: Einfache, effektiv, schnelle Programmiersprache Pandas Pragmatisches Datenanalyse-Framework: Großartige Datenstrukturen und gute Integration mit Machine Learning Tools D3 JavaScript-Bibliothek für datenorien- tierte Dokumente: Just beautiful! Jupyter Interaktives Notizbuch: Zentrale Stelle für Datenanalysen und Dokumentation STANDARDWERKZEUGE
  • 20. 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
  • 21. :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
  • 22. 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
  • 23. Welche Art von DatenAnalysen?  Abschätzung des Wissensverlusts bei Entwicklerfluktuation  Verprobung von Modularisierungsvarianten (“virtuellesRefactoring”)  Erstellung eines Codeinventars / Musterkatalogs  Ermittlung von Performance-Hotspots über Call-Tree-Analyse  Identifikation von besonders fehlerbehafteten Codeteilen  ... Individuelle Risiken im eigenen Softwaresystem sichtbar machen! e.g.raceconditions,architecturesmells,buildbreaker,programming errors,deadcode,...
  • 24. Was?
  • 27. Identification of No-Go areas using version control data Change per Line Dev Source Code Version Control System Change per Line Demo No-Go Areas in the Linux kernel https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/
  • 28. 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
  • 29. 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)
  • 30. Identification of No-Go Areas: Idea 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)
  • 31. Identification of No-Go Areas: Result
  • 33. Code Smells: Seeing Software as a Graph Dev Build Source Code Graph Byte Code jQAssistant Neo4j Graph-DB https://git.io/f49KO
  • 34. Code Smells: Seeing Software as a Graph
  • 36. Strategic Redesign: Fixing code that‘s actually used Web Application Application Server User Coverage per Class JaCoCo DevBuild‘n‘Run& Source Code Version Control System Changes per Class https://www.feststelltaste.de/swot-analysis-for-spotting-worthless-code/ Neo4j
  • 37. Strategic Redesign: Fixing code that‘s actually used
  • 39. + Erste Schritte sind einfach durchführbar + Tiefergehende Analysen sind es wert + Probleme im Code können identifiziert, aggregiert und kommuniziert werden + Sichten für Nicht-Techniker erstellbar + Risiken neutral darstellen und adressieren + Ursachen beheben statt Symptome fixen!
  • 40. Mehr Informationen 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 DataCamp: https://projects.datacamp.com/projects/111 jQAssistant: github.com/JavaOnAutobahn/spring-petclinic My Repo: github.com/feststelltaste/software-analytics
  • 41.
  • 42. ASK ´ EM ALL