View
216
Download
0
Category
Preview:
Citation preview
Kontinuierliche Architekturanalyse mit SonarQube in 3D
Stefan Rinderle – PAYBACK
softvis3d.com
Twitter: @stefanrinderle
2
PAYBACK in Zahlen
Kontinuierliche Architekturanalyse in 3D
○ 27,4 Millionen aktive Karten in Deutschland
○ 35 "Offline"-Partner und 620 Online-Partner
○ Karteneinsatz Kunden: 3,5 Millionen / Tag
○ PAYBACK.de 9 Millionen Besucher / Tag
○ 8 Millionen APP Downloads
3
PAYBACK DEV
Kontinuierliche Architekturanalyse in 3D
○Agile Software-Entwicklung mit Scrum
- 6 Scrum-Teams
- Flache Hierarchie
○ Kurze Release-Zyklen
- 2014: 4 Releases
- 2015: 11 Releases
○ DevOps Programm seit Anfang 2014
- Automatisierung und deployment mit Ansible und Vagrant
○ Fitnessstudio, Spielzimmer, Kantine und beste Lage an der Theresienwiese in München
4
Software-Visualisierung
○ Visualisierung von Informationen über Softwaresysteme
○ Visualisierung von Klassen und Komponenten
○ Einfache Risikoanalyse für alle Projektbeteiligten
- Risiko und Kosten reduzieren
- Produktivität und Qualität erhöhen
○ Fördert die Kommunikation über die Qualität der Software zwischen verschiedenen Ebenen
Kontinuierliche Architekturanalyse in 3D
Warum wird Software-Visualisierung so selten eingesetzt?
5
Master Thesis – 2012
Kontinuierliche Architekturanalyse in 3D
City Metapher
○ Struktur
○ Metriken
Stadtteile
Grundfläche und
Höhe der Gebäude
8
Die "Hürde" der Softwarevisualisierung
○ Installation der Plattform
- Desktop-Anwendung
- Server-Anwendung
○ Importieren des Projektes
- Unterstütze Programmiersprachen
- Sicherheitsanforderungen
○ Analyse des Projektes
- Verfügbarkeit von Metriken
- Integration von eigenen Metriken
○ Report
- Verfügbarkeit der Ergebnisse
Kontinuierliche Architekturanalyse in 3D
Wie hoch ist der initiale Aufwand?
9
Kontinuierliche Analyse als Basis
○ Struktur der Software
○ Statische Analyse der Klassen und Komponenten
- Lines of code, Komplexität
- Checkstyle, PMD, Findbugs
○ Testergebnisse
○ Verwaltung von Standards und Regeln
○ Analyse der Ergebnisse über einen großen Zeitraum
Kontinuierliche Architekturanalyse in 3D
10
○ System-Tests
○ Akzeptanz-Tests
○ Performance-Tests
Deployment
Software-Entwicklungs-Zyklus bei PAYBACK
○ Unit-Tests
○ Statische Codeanalyse
Entwicklungsumgebung
○ Unit-Tests
○ Integration-Tests
○ Statische Codeanalyse
Build-Automatisierung
Testergebnisse
Fehler und Warnungen der Codeanalyse
Codequalität und andere Metriken
Risikoanalyse
Jenkins
Kontinuierliche Architekturanalyse in 3D
11
Kontinuierliche Architekturanalyse in 3D
○ Java
○ Web
○ .NET
○ und viele mehr…
○ Entwickler
○ Teamleiter
○ Projektleiter
○ Resultate analysieren
○ Vergleich mit früheren
Ergebnissen
○ Tabellen, Diagramme, …
Programmiersprachen
Risikoanalyse Für alle!
○ Checkstyle
○ PMD, Findbugs
○ Verwaltung und Export
Statische Codeanalyse
12
Deployment
Software-Entwicklungs-Zyklus bei PAYBACK
Entwicklungsumgebung
Build-Automatisierung
Analyse Export
von Regeln
○ Regeln definieren
○ Ergebnisse anzeigen und analysieren
○ Einfach erweiterbar
Kontinuierliche Architekturanalyse in 3D
14
Deployment
Software-Entwicklungs-Zyklus bei PAYBACK
Entwicklungsumgebung
Build-Automatisierung
Analyse Export
von Regeln
○ Regeln definieren
○ Ergebnisse anzeigen und analysieren
○ Einfach erweiterbar
Visualisierung
Kontinuierliche Architekturanalyse in 3D
15
SoftVis3D Sonar-Plugin
○Webpage plugin für SonarQube
- Java Backend mittels Webservice
○ AngularJS Frontend (Menü / Navigation / Interaktion)
○ GraphViz für das Layout
○ threeJS als 3D Framework
Kontinuierliche Architekturanalyse in 3D
17
Software-Architektur = Struktur?
Kontinuierliche Architekturanalyse in 3D
P1
P2
C1
P3
C2 C3
Package "1"
○Package "2"
- C1class.java
○Package "3"
- C2class.java
- C3class.java
18
Software-Architektur = Struktur + Abhängigkeiten
Kontinuierliche Architekturanalyse in 3D
Package "1"
○Package "2"
- C1class.java
○Package "3"
- C2class.java
- C3class.java
P1
P2
C1
P3
C2 C3
20
Transformation von Abhängigkeiten I
Kontinuierliche Architekturanalyse in 3D
P1
P2
C1
P3
C2 C3
P1
P2
C1
P3
C2 C3
21
Transformation von Abhängigkeiten II
Kontinuierliche Architekturanalyse in 3D
P1
P2
C1
P3
C2 C3
P1
P2
C1
P3
C2 C3
22
Transformation von Abhängigkeiten III
Kontinuierliche Architekturanalyse in 3D
P1
P2
C1
P3
C2 C3
P1
P2
C1
P3
C2 C3
2
2
1 1
26
Zusammenfassung Abhängigkeiten
○ Abhängigkeiten innerhalb eines Paketes
- direkter Pfeil
○ Abhängigkeiten außerhalb eines Paketes
- mittels "shortest path" transformiert und aggregiert
○ Stadtteile wachsen nach unten und werden auf der oberen Plattform repräsentiert
○ "Elevator-Buildings" sind die Verbindung zwischen den Ebenen
- Vereint alle ein- und ausgehenden Abhängigkeiten des Paketes
○ Aggregierte Ansicht der Abhängigkeiten
○ Explorative Analyse bis ins Detail möglich
Kontinuierliche Architekturanalyse in 3D
28
Kontinuierliche Architekturanalyse in 3D
Management der Code-Qualität
Kontinuierliche Analyse des Quellcodes
Ergebnisse konsolidieren und analysieren
Visualisierung als zusätzliches Hilfsmittel
Zusammenfassung
29
Kontinuierliche Architekturanalyse in 3D
SonarQube-Plugin Zukunft?
○ Seit SonarQube 5.2 (Release November 2015) keine direkte Datenbankverbindung möglich
- Analyse soll kein Zugriff auf die Datenbank mehr benötigen
SoftVis3d Plugin nicht nutzbar in SQ >= 5.2
○Lösung: Umbau auf Webservice-Schnittstelle
- Noch nicht möglich
- Offene Userstory SonarQube SONAR-6948 (Fix Release 5.5 / 04-2016)
30
Kontinuierliche Architekturanalyse in 3D
SoftVis3d Roadmap
○ PRIO: Umbau auf Webservice für SonarQube
○Neue Features
- Gebäudefarbe
- Einbeziehen von SCM Informationen
○Projekt soll unabhängiger von der Plattform werden
- Schnittstelle zu Neo4J-Datenbank zur dynamischen Analyse
- Kooperation mit jQAssistant
31
Kontinuierliche Architekturanalyse in 3D
SoftVis3d Sonarqube plugin
○ Einfache Installation als SonarQube Plugin
○ Open source: https://github.com/stefanrinderle/softvis3d/sonar-softvis3d-plugin
○ Visualisierung von allen in SonarQube vorhandenen Metriken (SonarQube < 5.2)
○ City view / Dependency view
○ Exploratives user interface
○Detaillierte Informationen unter: http://softvis3d.com
Recommended