Slide 1

Slide 1 text

Reality Check Praxiseinsatz, Werkzeuge, Add-Ons Dr. Gernot Starke innoQ Fellow WJAX, November 2015

Slide 2

Slide 2 text

Dr. Gernot Starke innoQ Fellow   Softwarearchitekturen Entwurf, Entwicklung, Management Evolution & Modernisierung Dokumentation Training   Mentoring und Coaching Analyse und Optimierung von Entwicklungsprozessen   Reviews +49 177 – 728 2570 [email protected] www.arc42.de

Slide 3

Slide 3 text

Was ist arc42?

Slide 4

Slide 4 text

Behälter für Architektur-Info Anforderungen Entscheidungen Strukturen von Sourcecode

Slide 5

Slide 5 text

Warum?

Slide 6

Slide 6 text

hQp://www.flickr.com/photos/mistressf/737350025/sizes/l/

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Wie sieht‘s aus?

Slide 11

Slide 11 text

AuYau

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

AuYau von arc42, Version 6, Stand März 2012. © Dr. Peter Hruschka und Dr. Gernot Starke. Frei für kommerzielle und private Nutzung. 1. Einführung und Ziele 1.1 Aufgabenstellung 1.2 Qualitätsziele 1.3 Stakeholder 7.Verteilungssicht 7.1 Infrastruktur Ebene 1 7.2 Infrastruktur Ebene 2 …. 2. Randbedingungen 2.1 Technische Randbedingungen 2.2 Organisatorische Randbedingungen 2.3 Konventionen 3. Kontextabgrenzung 3.1 Fachlicher Kontext 3.2 Technischer- oder Verteilungskontext 4. Lösungsstrategie 5. Bausteinsicht 5.1 Ebene 1 5.2 Ebene 2 …. 6. Laufzeitsicht 6.1 Laufzeitszenario 1 6.2 Laufzeitszenario 2 …. 8. Konzepte 8.1 Fachliche Struktur und Modelle 8.2 Typische Muster und Strukturen 8.3 Persistenz 8.4 Benutzeroberfläche …. 9. Entwurfsentscheidungen 9.1 Entwurfsentscheidung 1 9.2 Entwurfsentscheidung 2 …. 10. Qualitätsszenarien 10.1 Qualitätsbaum 10.2 Qualitäts-/Bewertungsszenarien 11. Risiken 12. Glossar

Slide 14

Slide 14 text

2006... delta

Slide 15

Slide 15 text

Beispiel (Datenmigra\on, 4000+ PT)

Slide 16

Slide 16 text

Beispiel (CRM-System, 2000+ PT)

Slide 17

Slide 17 text

Beispiel „htmlSanityCheck“ hQps://github.com/aim42/htmlsanitycheck

Slide 18

Slide 18 text

Beispiel „htmlSanityCheck“ (2)

Slide 19

Slide 19 text

Mit arc42 starten?

Slide 20

Slide 20 text

Mit arc42 starten (Tag 1) Beispiele! Pragmatische Hilfe für Softwarearchitekten gernot STARKE peter HRUSCHKA hQp://aim42.github.io/htmlSanityCheck/

Slide 21

Slide 21 text

-Stand Pragmatische Hilfe für Softwarearchitekten gernot STARKE peter HRUSCHKA * gerne im Tausch gegen vcard *

Slide 22

Slide 22 text

Mit arc42 starten (Tag 1)

Slide 23

Slide 23 text

Mit arc42 starten (Tag 1) Idee + Ausführung: Stefan Zörner (hQp://embarc.de)

Slide 24

Slide 24 text

Mit arc42 starten (Tag 1) Mehr Beispiele! hQp://confluence.arc42.org: •  CRM-System (2000+ PT) •  Datenmigra\on (4000+ PT)

Slide 25

Slide 25 text

Mit arc42 starten (Tag 1, 13:30h)... neue Systeme 1.  Kontext 2.  Qualitätsziele 3.  Lösungsstrategie 4.  Konzepte 1.  Domäne 2.  Persistenz, UI etc. bestehende Systeme 1.  Bausteine (Code-Struktur) Level 1 2.  Konzepte + typische Lösungsmuster 3.  Externe SchniQstellen (= Kontext)

Slide 26

Slide 26 text

Mit arc42 im Projekt?

Slide 27

Slide 27 text

Mit arc42 im Projekt... Projektdokumenta\on Systemdokumenta\on Team „Gärtner“

Slide 28

Slide 28 text

Mit arc42 im Projekt... Projektdokumenta\on ~arc42 „locker“ Diskussionen Implementa\on-Guide, Tasks / Issues Systemdokumenta\on Weitere relevante Infos... (Betrieb/Admin, Test, Release...) 11. Risiken ARC42 Architektur-Dokumentation 1. Einführung und Ziele 2. Randbedingungen 3. Kontextabgrenzung 5. Bausteinsicht 6. Laufzeitsicht 7. Verteilungssicht 8. Konzepte 10. Qualitätsszenarien 9. Entwurfsentscheidungen 4. Lösungsstrategie 12. Glossar Team „Gärtner“

Slide 29

Slide 29 text

Große Systeme mit arc42?

Slide 30

Slide 30 text

arc42 und größere Systeme Gesamtsystem Kontextabgrenzung (externe SchniQstellen) Bausteinsicht L1 Ablauf System-UseCases Zentrale Entscheidungen Zentrale Konzepte Subsystem #1 Bausteinsicht Lokale Abläufe Subsystem #2 Bausteinsicht Lokale Abläufe Subsystem #3 Bausteinsicht Lokale Abläufe 11. Risiken ARC42 Architektur-Dokumentation 1. Einführung und Ziele 2. Randbedingungen 3. Kontextabgrenzung 5. Bausteinsicht 6. Laufzeitsicht 7. Verteilungssicht 8. Konzepte 10. Qualitätsszenarien 9. Entwurfsentscheidungen 4. Lösungsstrategie 12. Glossar 11. Risiken ARC42 Architektur-Dokumentation 1. Einführung und Ziele 2. Randbedingungen 3. Kontextabgrenzung 5. Bausteinsicht 6. Laufzeitsicht 7. Verteilungssicht 8. Konzepte 10. Qualitätsszenarien 9. Entwurfsentscheidungen 4. Lösungsstrategie 12. Glossar 11. Risiken ARC42 Architektur-Dokumentation 1. Einführung und Ziele 2. Randbedingungen 3. Kontextabgrenzung 5. Bausteinsicht 6. Laufzeitsicht 7. Verteilungssicht 8. Konzepte 10. Qualitätsszenarien 9. Entwurfsentscheidungen 4. Lösungsstrategie 12. Glossar 11. Risiken ARC42 Architektur-Dokumentation 1. Einführung und Ziele 2. Randbedingungen 3. Kontextabgrenzung 5. Bausteinsicht 6. Laufzeitsicht 7. Verteilungssicht 8. Konzepte 10. Qualitätsszenarien 9. Entwurfsentscheidungen 4. Lösungsstrategie 12. Glossar Link Link Link

Slide 31

Slide 31 text

Kleine Systeme mit arc42?

Slide 32

Slide 32 text

Kleine Systeme... Leeres Template == 26 Seiten Übertrieben für kleine Projekte, oder?

Slide 33

Slide 33 text

Kleine Systeme... Leeres Template == 26 Seiten Übertrieben für kleine Projekte, oder? arc42 == Schrank, nicht Formular SUPER für kleine Projekte: •  !meboxed verwenden •  essen\elle Dinge einbringen

Slide 34

Slide 34 text

Beispiel „kleines System“

Slide 35

Slide 35 text

Code und Bausteinsicht?

Slide 36

Slide 36 text

Building Blocks Hierarchy Kontext Level 1 Level 2 Level 3 H t ml S a n it y Check use r Bu ild sy st em (e.g . G r adle, m ake) loc al ht ml file(s) loc al i m ages exter n al websites & resources * Risk * references « p ost po n ed » checks checks checks references H t ml S a n it y Check loc al - ht ml loc al -i m ages user build - syste m exter n al websites local - resources HS C Co re AllChecksRun ner local file syste m Results ht t p (exter n al) HS C G r a d le Plu gin HSC Com m a n d Lin e In t erfa ce HS C G r a phic al In t erfac e done pla n n ed L egend via shell HS C Co re AllChecksRun ner local file syste m Results ht t p (exter n al) «li br a r y » H t ml P a rser Results Collect o r Fin d in g s A ll Checks R un n e r done pla n n ed L egend Ch ecker Su ggest er Re po r t e r fin d suggestions crea te / execu te 1.. a d d Fin d in g pa rse Results Results Collect o r Results Re po r t e r Pe r - Ru n Results Sin gle C heck Resu lts w h a tIsC heck ed : St rin g sourceIte m :St ring t a r getIt em :St ri n g n r OfIte msChecked :in t Sin gle P age Resu lts pageN a m e :St ring pa geTit le :S t rin g m et aInfo :PageMet aInfo Fin d in g it e m :S t rin g sug gest ion :St rin g Fin d in g s a d d - Fin d in g 1.. * 0.. * 1 unused i m ages 1 Gradle sub-projects: •  core: org.aim42.htmlsanitycheck •  gradle-plugin: org.aim42.htmlsanitycheck

Slide 37

Slide 37 text

Building Blocks Hierarchy Kontext Level 1 Level 2 Level 3 H t ml S a n it y Check use r Bu ild sy st em (e.g . G r adle, m ake) loc al ht ml file(s) loc al i m ages exter n al websites & resources * Risk * references « p ost po n ed » checks checks checks references H t ml S a n it y Check loc al - ht ml loc al -i m ages user build - syste m exter n al websites local - resources HS C Co re AllChecksRun ner local file syste m Results ht t p (exter n al) HS C G r a d le Plu gin HSC Com m a n d Lin e In t erfa ce HS C G r a phic al In t erfac e done pla n n ed L egend via shell HS C Co re AllChecksRun ner local file syste m Results ht t p (exter n al) «li br a r y » H t ml P a rser Results Collect o r Fin d in g s A ll Checks R un n e r done pla n n ed L egend Ch ecker Su ggest er Re po r t e r fin d suggestions crea te / execu te 1.. a d d Fin d in g pa rse Results Results Collect o r Results Re po r t e r Pe r - Ru n Results Sin gle C heck Resu lts w h a tIsC heck ed : St rin g sourceIte m :St ring t a r getIt em :St ri n g n r OfIte msChecked :in t Sin gle P age Resu lts pageN a m e :St ring pa geTit le :S t rin g m et aInfo :PageMet aInfo Fin d in g it e m :S t rin g sug gest ion :St rin g Fin d in g s a d d - Fin d in g 1.. * 0.. * 1 unused i m ages 1 Gradle sub-projects: •  core: org.aim42.htmlsanitycheck •  gradle-plugin: org.aim42.htmlsanitycheck Classes: AllChecksRunner MissingConfigException Packages: o.a.h.check o.a.h.collect o.a.h.html o.a.h.report Classes: Checker.groovy ImageMapChecker MissingImageFilesChecker

Slide 38

Slide 38 text

Level-1: Codestruktur im Großen

Slide 39

Slide 39 text

Code in der Dokumenta\on?

Slide 40

Slide 40 text

Code in Doku: Beispiel... Wich\g: NCP (never copy-paste)

Slide 41

Slide 41 text

Code in Doku: Beispiel... [source, groovy] .Interface RunResults ---- include::{coresourcepath}/htmlsanitycheck/collect/ RunResults.groovy[tags=RunResultInterface] ---- asciidoc-Source

Slide 42

Slide 42 text

Konzepte!

Slide 43

Slide 43 text

Was ist ein Konzept? Beispiele im Bauwesen: •  Fenster und –griffe •  Heizung / Klima •  Flach-/Walm-/Spitzdach

Slide 44

Slide 44 text

Was ist ein Konzept? Beispiele: ‣  Persistenz ‣  Repor\ng ‣  Batch ‣  Validierung ‣  .... Plan zur Lösung von •  mehrfach auuretenden, •  übergreifenden Problemen.

Slide 45

Slide 45 text

Themen finden Gliederung nach S. Zörner ‣  Architekturmuster ‣  Entwicklung / Weiterentwicklung –  Codegenerierung, Buildmanagment, Tests, Migra\on, Konfigura\on, Modellierung ‣  Unter-der-Haube –  Persistenz, Verteilung, Sicherheit, Transak\onen, Sessions, Caching, Parallelisierung, Threading, Geschäusregeln, Batchverarbeitung ‣  Interak\on –  UI, i18n, Ergonomie, Validierung, Barrierefreiheit, Plausibilisierung, Ausnahme-/Fehlerbehandlung, Ablaufsteuerung, Kommunika\on, Integra\on, Repor\ng ‣  Betrieb ---------------- ----------- --------------- -------------------- ---------- ----------------- ------- -------------- --------------------- Iden\fizieren ----------- ---------- ----------------------- ----- Priorisieren --------------- -------------------------- ------------------------------ -------------- ---------- ------------------------------ -------------------- --------------------------- ------------------------- ----------------------------- ausführen

Slide 46

Slide 46 text

Konzepte anwenden... Bausteinsicht: -  Zeigt Stereotypen (=> Verweise auf Konzepte) Konzepte: –  erklären Implemen\erung, mit Beispielen someWhitebox «Entity» Customer «Web-UI» Planning «REST» Foo-IF «RelationalDB» MySQL «Batch» Adress- validierung «Report» Sales FooApp «Entity» Competition

Slide 47

Slide 47 text

Werkzeuge!

Slide 48

Slide 48 text

Anforderungen an Tools •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert

Slide 49

Slide 49 text

Variante 1: plain-Wiki •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert

Slide 50

Slide 50 text

Variante 1b: plain-Wiki++ •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert Zeichen-Tool (Visio, Graffle & Co)

Slide 51

Slide 51 text

Variante 1c: Wiki + Grafik-Plugin •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert Etwa: Gliffy (für Confluence)

Slide 52

Slide 52 text

Variante 2: Wiki + UML-Tool •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert UML-Tool (Enterprise-Architect, MagicDraw, Visual-Paradigm & Co) •  Usability •  Akzeptanz

Slide 53

Slide 53 text

Variante 2: Plaintext + UML-Tool •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert AsciiDoc, Markdown •  Geek-Faktor

Slide 54

Slide 54 text

AsciiDoc... •  Plaintext (git, diff) •  Build z.B. mit Gradle •  Zielformate: html, epub, pdf

Slide 55

Slide 55 text

Confluence + ProjectDoc (kommerziell) •  Idee: flüssigeres Arbeiten dank Wizards hQps://www.smar\cs.de/go/arc42

Slide 56

Slide 56 text

arc42 mit projectdoc-Blueprints •  Vorlagen als Schreibhilfen

Slide 57

Slide 57 text

HTML Sanity Checker mit projectdoc

Slide 58

Slide 58 text

Variante 3: UML-Tool •  Text + Tabellen •  Diagramme •  Verweise •  Mul\-User •  Änderungshistorie •  Versioniert Enterprise-Architect, Visual Paradigm etc. •  Geek-Faktor Modelle

Slide 59

Slide 59 text

Beispiel: arc42 mit EA

Slide 60

Slide 60 text

UML-Tool + Export-Automa\sierung •  Export aus Enterprise-Architect™ – Skript in github.com/arc42 vorhanden •  Export aus VisualParadigm™ – Export möglich •  bislang kein OpenSource Skript verfügbar

Slide 61

Slide 61 text

Wohin damit?

Slide 62

Slide 62 text

Wohin mit Domain-Model? 1.  (gut) QuerschniQliche Konzepte 2.  (ok) Bausteinsicht („Domain-Component“) 3.  (hhm) Eigenes (neues) Kapitel

Slide 63

Slide 63 text

Wohin mit UI/Layout, Masken oder Screenflow? 1.  QuerschniQliche Konzepte 2.  Eigene Sicht •  (== neues Kapitel)

Slide 64

Slide 64 text

Kata mit arc42 („Hands-on Workshop“)

Slide 65

Slide 65 text

Ziele einer Architektur-Kata •  Gemeinsames Verständnis •  Aufgaben „erproben“ •  Aspekte von „Architektur“ erarbeiten

Slide 66

Slide 66 text

Kata mit arc42 Aufgabe Anforderungen Qualitätsziele Kontext Lösungsidee Bausteine Konzepte

Slide 67

Slide 67 text

Subprojekte! Qualitätsanforderungen wesentliche Architekturaufgaben

Slide 68

Slide 68 text

Beispiele für Q-Anforderungen •  Q-Szenarien – Etwa 60 praxisnahe Qualitätsziele (aus konkreten Projekten/Systemen abstrahiert) •  Defini\onen für typische Q-Anforderungen – 70+ häufig vorkommende Begriffe rund um Qualität – pragma\sch definiert

Slide 69

Slide 69 text

Beispiele für Q-Anforderungen

Slide 70

Slide 70 text

Architektur- Aufgaben... hQps://github.com/arc42/arc-process Architektur bewerten Anforderungen und Randbedingungen klären Technische Konzepte entwerfen Umsetzung begleiten Architektur kommunizieren Strukturen entwerfen

Slide 71

Slide 71 text

Dr. Gernot Starke [email protected] hQp://arc42.de hQp://innoq.com hQps://www.flickr.com/photos/foto_db/16000636092