Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Wir sind ein Dresdner IT-Beratungsunternehmen, gegründet im Jahre 2008. Unsere Schwerpunkte liegen in den Bereichen Softwareentwicklung, Architektur-beratung und Training. Gemeinsam mit unseren Kunden entwerfen und implementieren wir fachlich passgenaue Lösungen auf Basis der Java-Technologien. buschmais GbR Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler und Tobias Israel Adresse Leipziger Str. 93 01127 Dresden [email protected] www.buschmais.de

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

 Eine Medaille – Zwei Seiten ◼ Hohe Komplexität, aufwendig zu pflegen ◼ Bewährtes Rückgrat betrieblicher Abläufe

Slide 5

Slide 5 text

 Geschäftliche Rahmenbedingungen ändern sich kontinuierlich ◼ Mitbewerber, Geschäftsmodelle, …  Kann das System folgen?

Slide 6

Slide 6 text

 Grundlegende qualitative Eigenschaften ◼ Skalierbarkeit, Performanz, Sicherheit, Wartbarkeit, ...  Manifestierung in Code und Prozessen ◼ Technologien, Strukturen, Muster, Test-Strategie, ...  Änderungen? Aufwändig und riskant!

Slide 7

Slide 7 text

 Notwendigkeit der (kontinuierlichen) Anpassung  Begrenztes und unsicheres Wissen ◼ Risiko für Planung, Implementierung und Refaktorisierung ◼ Kann zu Angst vor Änderungen führen  Kontinuierliche Verschlechterung der Situation als Resultat

Slide 8

Slide 8 text

Dokumentierte Architektur <> Gefühlte Architektur <> Reale Architektur

Slide 9

Slide 9 text

Neu-Implementierung Zerlegung in Microservices Restruktukrierung des Mononlithen

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

 Open-Source e-Commerce System „shopizer“ ◼ Warenkorb ◼ Katalog ◼ Suche ◼ Bestellung ◼ Shop-Administration  Fork: https://github.com/buschmais/shopizer

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

 Szenario: Katalog sorgt für hohe Systemlast zu Spitzenzeiten ◼ Gesamtes System muss skaliert werden Allokation theoretisch unnötiger Ressourcen ◼ Wettkampf um verfügbare Ressourcen Behinderung anderer Funktionalitäten ◼ Lastbedingte Ausfälle betreffen gesamtes System

Slide 14

Slide 14 text

 Lösung ◼ Herauslösen des Katalogs  Problem(e) ◼ Wieviel (und welcher) Code ist betroffen? ◼ Welche Schnittstellen existieren bzw. müssen geschaffen werden? ◼ Welche Daten müssen repliziert werden? ◼ Welches Vorgehen ist das richtige? ◼ …

Slide 15

Slide 15 text

https://spongebob.fandom.com/wiki/List_of_time_cards

Slide 16

Slide 16 text

https://imgflip.com/memegenerator/Skeptical-Baby

Slide 17

Slide 17 text

https://builder.cheezburger.com/Builder/RenderPreview/65f84df1-bae0-4cb8-9602-5205a7caf98d

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

 Data Analytics für Software Systeme ◼ Extraktion und Zusammenführung von Informationen aus Source Code Statischen und dynamischen Eigenschaften Entwicklungshistorien ◼ Schlussfolgern von neuen Informationen zum Aufbau von Wissen

Slide 20

Slide 20 text

 Dokumentation von Erkenntnissen ◼ Unterstützung von Planung und Refaktorisierung ◼ Referenz für (neue) Entwickler ◼ Kommunikationsgrundlage für Entwickler und Entscheider

Slide 21

Slide 21 text

https://www.kino.de/serie/hoer-mal-wer-da-haemmert-1999/news/hoer-mal-wer-da-haemmert-tim-allen-bringt-neue-folgen-ins-gespraech/

Slide 22

Slide 22 text

 Tooling ◼ jQAssistant Scan der Applikation und Abbildung in Graphdatenbank ◼ Neo4j Persistierung und Abfrage von Informationen ◼ Jupyter Notebook Dokumentation der Analyseschritte und Ergebnisse

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

service :Package Product Service :CONTAINS :Type:Java Match (:Package{name: ‘‘service“})-[:CONTAINS]->(type:Type:Java) RETURN type Node Node Relationship LABEL PROPERTY LABEL VAR

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

 Schier unendliche Menge an möglichen Fragestellungen ◼ Abhängig von Ziel und Qualität sowie Quantität der vorliegenden Daten https://makeameme.org/meme/possibilities-are-endless-59fa8f

Slide 27

Slide 27 text

 Wie ist die Anwendung technisch strukturiert?  Wie ist die Anwendung fachlich strukturiert?  Wie hängen die einzelnen Fachlichkeiten zusammen?  Welcher Code wird am häufigsten geändert?

Slide 28

Slide 28 text

Vorbereitung der Anwendung

Slide 29

Slide 29 text

com.buschmais.jqassistant jqassistant-maven-plugin 1.6.0 scan analyze <.../>

Slide 30

Slide 30 text

mvn clean install jqassistant:server → localhost:7474

Slide 31

Slide 31 text

https://www.memecreator.org/meme/lets-get-to-work81

Slide 32

Slide 32 text

Wie ist die Anwendung technisch strukturiert?

Slide 33

Slide 33 text

 Technischen Architekturelemente (z.B. Layer)  Abhängigkeiten zwischen technischen Architekturelementen  Umsetzung der technischen Architektur im Code  Aussagekraft der Ergebnisse

Slide 34

Slide 34 text

 Live-Demo ◼ Abhängigkeit zwischen maven- Modulen ◼ Zuordnung von Artefakten zu Layern (Presentation, Domain, Data Layer) <> sm-shop <> sm-core <> sm-core-modules <> sm-core-model

Slide 35

Slide 35 text

 Learning Outcomes ◼ die Anwendung folgt einer klassischen 3-Schichten-Architektur ◼ die Richtungen der Abhängigkeiten wurden korrekt implementiert ◼ es konnten 100% des Codes zu technischen Schichten zugeordnet werden

Slide 36

Slide 36 text

Wie ist die Anwendung fachlich strukturiert?

Slide 37

Slide 37 text

 Implementierte Subdomänen  Fachliche Architekturelemente (z.B. Module)  Umsetzung der fachlichen Architektur im Code  Aussagekraft der Ergebnisse

Slide 38

Slide 38 text

 Wo ist eine gute fachliche Strukturierung am ehesten zu erwarten? ◼ Spring-Services ◼ Paketnamen (service, konkrete Fachlichkeiten wenn bekannt) ◼ Explorieren der Anwendung in IDE

Slide 39

Slide 39 text

 Live-Demo ◼ Fachliche Packages (Subdomänen) ◼ Zuordnung von Klassen zu Subdomänen anhand Package- Namen Classes catalog common content customer merchant order payments reference search shipping shoppingcart system tax user

Slide 40

Slide 40 text

 Learning Outcomes ◼ die Geschäftslogik teilt sich in 13 fachlich motivierte Subdomänen ◼ es konnten 69% aller Klassen zu Fachlichkeiten zugeordnet werden ◼ der Katalog ist mit 140 Klassen die größte Subdomäne

Slide 41

Slide 41 text

Wie hängen die Fachlichkeiten zusammen?

Slide 42

Slide 42 text

 Existierende Abhängigkeiten zwischen Subdomänen ◼ Erlaubte und Unerwartete/Verbotene Abhängigkeiten ◼ Anzahl an Abhängigkeiten ◼ Hot Spots

Slide 43

Slide 43 text

 Live-Demo ◼ Visualisierung von Abhängigkeiten ◼ Analyse von Ein- und Ausgehenden Abhängigkeiten Kopplungsgrad Hot-Spot Klassen

Slide 44

Slide 44 text

 Learning Outcomes ◼ die Suche gehört exklusiv zum Katalog ◼ die Kommunikation zwischen Katalog und Kern ist schwach durch Interfaces entkoppelt

Slide 45

Slide 45 text

 Learning Outcomes ◼ der Katalog definiert 169 Abhängigkeiten zum Kern auf Klassenebene, 27 davon gegen Interfaces Hot Spots sind MerchantStore und Language

Slide 46

Slide 46 text

 Learning Outcomes ◼ der Kern definiert 162 Abhängigkeiten zum Katalog auf Klassenebene, 5 davon gegen Interfaces Hot Spot ist Product

Slide 47

Slide 47 text

War‘s das?

Slide 48

Slide 48 text

 Software Analytics bietet nahezu unbegrenzte Möglichkeiten  Analyse abhängig von ◼ betrachtetem Softwaresystem ◼ vorhandenen Daten ◼ Fragestellungen

Slide 49

Slide 49 text

 Weitere Analysen ◼ Ownership von Subdomänen, Fix-Commits ◼ Testcoverage, Teststruktur ◼ Defektdichten ◼ Toter Code ◼ Analyse von Laufzeitdaten ◼ ...

Slide 50

Slide 50 text

 Bewertung der Ergebnisse notwendig ◼ Tiefergehende Analysen für kritische Stellen ◼ Relevanz und Priorisierung ◼ Planung von Refaktorisierung und Implementierung ◼ Management von Technical Debt

Slide 51

Slide 51 text

 2-Tages Workshop  Strukturiert vom Monolithen zum Modulithen und Microservices  Interaktiv am Beispiel eines e- Commerce Shopsystems  Nächster Termin: November 2019 https://www.buschmais.de/seminare/lasst-uns-einen-monolithen-zerlegen/

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Fragen bitte an: Stephan Pirnbaum buschmais GbR Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler und Tobias Israel [email protected] http://buschmais.de/ Dresden, 21.05.2019