Slide 1

Slide 1 text

Reality  Check   Praxiseinsatz,  Werkzeuge,     Add-­‐Ons     Dr.  Gernot  Starke   April  2015  

Slide 2

Slide 2 text

Dr.  Gernot  Starke   innoQ  Fellow     Softwarearchitekturen Entwurf, Entwicklung, Management Evolution & Modernisierung Training   Mentoring und Coaching Analyse und Optimierung von Entwicklungsprozessen   Reviews, Audits, Retrospektiven +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

Wie  sieht‘s  aus?  

Slide 6

Slide 6 text

AuMau  

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

AuMau  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 9

Slide 9 text

2006...   delta  

Slide 10

Slide 10 text

Beispiel  (DatenmigraRon,  4000+  PT)  

Slide 11

Slide 11 text

Beispiel  (CRM-­‐System,  2000+  PT)  

Slide 12

Slide 12 text

Beispiel  „htmlSanityCheck“   h\ps://github.com/aim42/htmlsanitycheck  

Slide 13

Slide 13 text

Beispiel  „htmlSanityCheck“  (2)  

Slide 14

Slide 14 text

Mit  arc42  starten?  

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Mit  arc42  starten  (Tag  1)  

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Mit  arc42  starten  (Tag  1)   Mehr  Beispiele!   h\p://confluence.arc42.org:     •  CRM-­‐System  (2000+  PT)   •  DatenmigraRon  (4000+  PT)  

Slide 20

Slide 20 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  Schni\stellen   (=  Kontext)  

Slide 21

Slide 21 text

Mit  arc42     im  Projekt?  

Slide 22

Slide 22 text

Mit  arc42  im  Projekt...   ProjektdokumentaRon     SystemdokumentaRon               Team   „Gärtner“  

Slide 23

Slide 23 text

Mit  arc42  im  Projekt...   ProjektdokumentaRon     ~arc42  „locker“     Diskussionen     ImplementaRon-­‐Guide,     Tasks  /  Issues   SystemdokumentaRon               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 24

Slide 24 text

Große  Systeme     mit  arc42?  

Slide 25

Slide 25 text

arc42  und  größere  Systeme   Gesamtsystem     Kontextabgrenzung   (externe  Schni\stellen)     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 26

Slide 26 text

Kleine  Systeme     mit  arc42?  

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Code  und   Bausteinsicht?  

Slide 30

Slide 30 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 31

Slide 31 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 32

Slide 32 text

Level-­‐1:  Codestruktur  im  Großen  

Slide 33

Slide 33 text

Code  in  der   DokumentaRon?  

Slide 34

Slide 34 text

Code  in  Doku:  Beispiel...   WichRg:   NCP     (never  copy-­‐paste)  

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Werkzeuge!  

Slide 37

Slide 37 text

Anforderungen  an  Tools   •  Text  +  Tabellen   •  Diagramme   •  Verweise   •  MulR-­‐User   •  Änderungshistorie   •  Versioniert  

Slide 38

Slide 38 text

Variante  1:    plain-­‐Wiki   •  Text  +  Tabellen   •  Diagramme   •  Verweise   •  MulR-­‐User   •  Änderungshistorie   •  Versioniert  

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

Confluence  +  ProjectDoc  (kommerziell)   •  Idee:  flüssigeres  Arbeiten  dank  Wizards   h\ps://www.smarRcs.de/go/arc42  

Slide 45

Slide 45 text

arc42  mit  projectdoc-­‐Blueprints   •  Vorlagen  als  Schreibhilfen  

Slide 46

Slide 46 text

HTML  Sanity  Checker  mit  projectdoc  

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

Beispiel:  arc42  mit  EA  

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Wohin  damit?  

Slide 51

Slide 51 text

Wohin  mit  Domain-­‐Model?   1.  (gut)  Querschni\liche  Konzepte       2.  (ok)  Bausteinsicht  („Domain-­‐Component“)       3.  (hhm)  Eigenes  (neues)  Kapitel  

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

Kata  mit  arc42   („Hands-­‐on  Workshop“)    

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

Subprojekte!   Qualitätsanforderungen   wesentliche   Architekturaufgaben  

Slide 57

Slide 57 text

Beispiele  für  Q-­‐Anforderungen   •  Q-­‐Szenarien   – Etwa  60  praxisnahe  Qualitätsziele     (aus  konkreten  Projekten/Systemen  abstrahiert)   •  DefiniRonen  für  typische  Q-­‐Anforderungen   – 70+  häufig  vorkommende  Begriffe  rund  um   Qualität  –  pragmaRsch  definiert  

Slide 58

Slide 58 text

Beispiele  für  Q-­‐Anforderungen  

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

Dr.  Gernot  Starke     [email protected]     h\p://gernotstarke.de   h\p://innoq.com     h\ps://www.flickr.com/photos/foto_db/16000636092