Slide 1

Slide 1 text

Moderne Software- architektur- dokumentation Falk Sippach embarc Ralf D. Müller DB Systel GmbH

Slide 2

Slide 2 text

fs@embarc.de @sippsack ➔ xing.to/fsi Falk Sippach ◼ Softwarearchitekt, Berater, Trainer bei embarc ◼ früher bei Orientation in Objects (OIO), Trivadis

Slide 3

Slide 3 text

ralf.d.mueller@deutschebahn.com @ralfdmueller ➔ xing.to/rdmuller Ralf D. Müller ◼ was mit Dokumentation, Security und Architektur by der DB Systel ◼ Maintainer von docToolchain, Contributor arc42 ◼ co-Autor

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Mission Statement(für diesen Vortrag) ■ Klären, was man von der Softwarearchitektur dokumentieren sollte und wie uns arc42 bei der Strukturierung hilft. ■ Umsetzung des Documentation-as-Code Ansatzes mit docToolchain ■ Überblick über die sehr effektiven Funktionen von AsciiDoctor und dessen mächtigen Integrationsmöglichkeiten im Umfeld von Architekturdokumentation

Slide 6

Slide 6 text

Agenda • Einführung • Architektur dokumentieren • Ein Reifegradmodell • Fazit und Ausblick

Slide 7

Slide 7 text

Agenda • Einführung • Architektur dokumentieren • Ein Reifegradmodell • Fazit und Ausblick

Slide 8

Slide 8 text

10 aus: Effektive Softwarearchitekturen (G. Starke) Architektur bewerten Architektur kommunizieren Architektur entwerfen Anforderungen klären Architektur kommunizieren

Slide 9

Slide 9 text

11 Entwurfsunterstützung Kommunikation Neue Mitarbeiter Frage nach dem Warum Bewertbarkeit Grafik von The Practical Dev (CC0 Public Domain Lizenz)

Slide 10

Slide 10 text

Hauptsache, du machst es nicht mit Word!

Slide 11

Slide 11 text

Ungeeignete Werkzeuge Medienbruch Dateiablage Redundanzen Textwüsten Handarbeit Veraltet Liest sowieso keiner!

Slide 12

Slide 12 text

14 • Plain-Text • Entwicklungsumgebung • Kommandozeilen- werkzeuge • Versionsverwaltung Unser täglich Entwickler-Brot Foto von geralt: https://pixabay.com/de/unternehmer-start-start-up-karriere-696976/ (CC0 Public Domain Lizenz)

Slide 13

Slide 13 text

Documentation-as-Code Ablage im Repo Versionier- /Diffbar Synchrone Auslieferung Offlinefähig Teil des Build- Prozesses Generierung/ Automatisierung Flexible Ausgabe Nähe zum Sourcecode

Slide 14

Slide 14 text

Continuous Documentation Automatisiert erstellen Regelmäßig ausliefern Stetig ergänzen Reviewen Feedback integrieren

Slide 15

Slide 15 text

Agenda • Einführung • Architektur dokumentieren • Ein Reifegradmodell • Fazit und Ausblick

Slide 16

Slide 16 text

7 Regeln für gute Dokumentation 1. Schreibe aus Sicht des Lesers 2. Vermeide unnötige Wiederholungen 3. Vermeide Mehrdeutigkeiten 3. a) Erkläre Deine Notation 4. Verwende eine Standardstrukturierung 5. Halte Begründungen für Entscheidungen fest 6. Halte die Dokumentation aktuell, aber auch nicht zu aktuell 7. Überprüfe Dokumentation auf ihre Gebrauchstauglichkeit „Documenting Software Architectures: Views and Beyond“ Clements, et.al, 2. Auflage 2010

Slide 17

Slide 17 text

7 Regeln für gute Dokumentation 1. Schreibe aus Sicht des Lesers 2. Vermeide unnötige Wiederholungen 3. Vermeide Mehrdeutigkeiten 3. a) Erkläre Deine Notation 4. Verwende eine Standardstrukturierung 5. Halte Begründungen für Entscheidungen fest 6. Halte die Dokumentation aktuell, aber auch nicht zu aktuell 7. Überprüfe Dokumentation auf ihre Gebrauchstauglichkeit „Documenting Software Architectures: Views and Beyond“ Clements, et.al, 2. Auflage 2010

Slide 18

Slide 18 text

„Abheften“ in arc42 ➔https://arc42.de/ Dr. Peter Hruschka http://www.peterhruschka.eu/ Dr. Gernot Starke http://gernotstarke.de/

Slide 19

Slide 19 text

1. Requirements & Goals 2. Constraints 3. Scope & Context 4. Solution Strategy 5. Building Block View 6. Runtime View 7. Deployment View 10. Quality Scenarios 11. Risks & Tech Debt 12. Glossary 9. Decisions 8. Crosscutting Concepts

Slide 20

Slide 20 text

Wald vor lauter Bäumen …

Slide 21

Slide 21 text

Architekturentwurf Anforderungen Lösungsansätze

Slide 22

Slide 22 text

Was ist ein Architekturüberblick? Ein Architekturüberblick macht die zentralen Lösungsansätze Eurer Softwarearchitektur für Außenstehende nachvollziehbar. Teamfremde Kollegen Entscheider Stakeholder Neue Teammitglieder

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Mission Statement Die Corona-Warn-App ist eine App, die hilft, Infektionsketten des SARS-CoV-2 (COVID-19-Auslöser) in Deutschland nachzuverfolgen und zu unterbrechen. Die App basiert auf Technologien mit einem dezentralisierten Ansatz und informiert Personen, wenn sie mit einer infizierten Person in Kontakt standen. Transparenz ist von entscheidender Bedeutung, um die Bevölkerung zu schützen und die Akzeptanz zu erhöhen. Quelle: https://www.coronawarn.app/de/

Slide 25

Slide 25 text

Architektur CWA: Informelles Überblicksbild

Slide 26

Slide 26 text

Kontextabgrenzung Dieser fachliche Systemkontext zeigt das Corona-Warn-App-System im Zusammenspiel mit den wichtigsten Benutzern und Fremdsystemen. Benutzer CWA-System stellt Oberfläche bereit Fremdsystem CWA-System stellt Schnittstelle(n) bereit Legende:

Slide 27

Slide 27 text

Technologie-Stack Vorgehen CWA – Konkrete Entscheidungen Zerlegung Client/Server mit Apps und Backend-Server als verteilte Menge einzeln deploybarer Services, fachlich zerlegt (Test- ergebnisse, Verifikation …) Zielumgebung Clients: Smartphones der Endnutzer, Backend: Kubernetes in der Telekom- Cloud … Native Apps in Swift und Kotlin auf iOS und Android. Backend in Java mit Spring Boot, Postgres, … Entwicklung als Open Source, Quelltexte in GitHub, Dokumentation in Markdown, automatisierte Tests ...

Slide 28

Slide 28 text

Technologie-Stack • Native Clients in Swift bzw. Kotlin für iOS und Android • SQLite • Java 11 • Spring Boot/Cloud/Data • Lombok, Guava, … • REST, Protobuf • OpenAPI, Micrometer • Liquibase • Maven, Gradle • Docker, Kubernetes • Open Telekom Cloud (OpenStack) • PostgreSQL, S3, CDN • Keycloak

Slide 29

Slide 29 text

Einflüsse auf Entscheidungen - schränken die Lösung ein - schließen Optionen aus Vorgaben/Rahmenbedingungen Technisch (z.B. Datenbankprodukt) Organisatorisch (z.B. Team)

Slide 30

Slide 30 text

Zentrale Rahmenbedingungender CWA Organisatorisch ■ Große Medienaufmerksamkeit, gewisse Skepsis am Mehrwert innerhalb der Bevölkerung ■ Konsortium aus zwei Auftragnehmern (SAP und Deutsche Telekom) ■ Enger Zeitrahmen ■ Hoher politischer Druck, viele Parteien involviert (Ministerien, Behörden, RKI) ■ Hohe Datenschutzanforderungen Technisch ■ Betrieb in der Cloud ■ Native mobile Clients ■ Einsatz des Exposure Notification Framework

Slide 31

Slide 31 text

Einflüsse auf Entscheidungen - schränken die Lösung ein - schließen Optionen aus - prägen die Lösung - nachher schwierig “einzubauen” Qualitätsanforderungen Benutzbarkeit, Effizienz, Wartbarkeit, Sicherheit ... Vorgaben/Rahmenbedingungen Technisch (z.B. Datenbankprodukt) Organisatorisch (z.B. Team)

Slide 32

Slide 32 text

Ziel Beschreibung Höchster Datenschutz Der Schutz der personenbezogenen Daten hat oberste Priorität. (Sicherheit) Effektive Warnfunktionalität Die App ist ein effektiver Baustein bei der Pandemie-Bekämpfung. (Funktionale Eignung) Attraktive Lösung für App- Nutzer Die App ist leicht zu installieren sowie intuitiv und effizient zu bedienen. (Benutzbarkeit) Hohe Zuverlässigkeit Die Lösung geht mit Lastspitzen wegen hoher Nutzer- oder Infektionszahlen ebenso souverän um, wie mit böswilligen Angriffen. (Zuverlässigkeit) Gute Änderbarkeit Die Software lässt sich leicht anpassen, wenn z. B. Nutzer/-innen oder neue Forschungsergebnisse es erfordern. (Wartbarkeit/Erweiterbarkeit) Top-Qualitätsziele Corona-Warn-App Die Reihenfolge gibt Orientierung bezüglich der Wichtigkeit.

Slide 33

Slide 33 text

Architektur- /Lösungsansätze Architektur- /Qualitätsziele Lösungsstrategie Stellt Qualitätsziele und zugeordnete high-level Lösungsansätze in Beziehung zueinander dar. Form: Tabelle ([ Ziele | Lösungsansätze ]).

Slide 34

Slide 34 text

Ziel Passende Lösungsansätze (Auswahl) Höchster Datenschutz • Speicherung der Daten lokal • Verschlüsselung aller Bewegungsdaten • Senden der Daten nur nach Aufforderung • Transparente Entwicklung (Open Source) Effektive Warnfunktionalität • Verwendung Exposure Notification Framework • Digitale Abläufe bevorzugt • Optionales, manuelles Kontakt-Tagebuch Attraktive Lösung für App-Nutzer • Native Clients (L&F) • Übersichtliche Gestaltung und simple Bedienung Hohe Zuverlässigkeit • Microservices • Docker, Kubernetes, Public Cloud • Bereitstellung von zu lesenden Daten über CDN Gute Änderbarkeit • Hoher Modularisierungsgrad • Open Source Projekt, gute Dokumentation • Verwendung von Standard & Open Source Libraries • Konsortium von mehreren Auftragnehmern • Code-Qualität (SonarQube, SwiftLint, Checkstyle, …) Lösungsstrategie Corona-Warn-App

Slide 35

Slide 35 text

„Abheften“ in arc42 ➔https://arc42.de/

Slide 36

Slide 36 text

39 Kontextsichten Laufzeitsichten Bausteinsichten Verteilungssichten

Slide 37

Slide 37 text

Tatsächliche Zerlegung im Quelltext GitHub-Repositories https://github.com/corona-warn-app/... ■ cwa-app-android ■ cwa-app-ios ■ cwa-server („Backend“) ■ cwa-testresult-server ■ cwa-verification-server ■ cwa-verification-portal „Bausteinsicht, Ebene 1“ CWA-Server (Backend), Bausteinsicht, Ebene 2

Slide 38

Slide 38 text

Zerlegung Backend Server (Bausteinsicht, Ebene 2)

Slide 39

Slide 39 text

„Abheften“ in arc42 ➔https://arc42.de/

Slide 40

Slide 40 text

„Abheften“ in arc42 ➔https://arc42.de/

Slide 41

Slide 41 text

Agenda • Einführung • Architektur dokumentieren • Ein Reifegradmodell • Fazit und Ausblick

Slide 42

Slide 42 text

Docs-as-code / Architecture-as-code

Slide 43

Slide 43 text

Ein Reifegradmodell Dokumentation wird getrennt vom Code verwaltet Es gibt keine Anzeichen des Docs-as-Code Ansatzes

Slide 44

Slide 44 text

0 -> 1 Dokumentation mit dem Code in Git verwalten Word in Git Wahl einer Auszeichnungssprache

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Markdown • Markdown • Toller Standard für einfache Auszeichnungen • Features Span Elements Links Emphasis Code Images Block Elements Paragraphs and Line Breaks Headers Blockquotes Lists Code Blocks Horizontal Rules TOC Tables (Feature Rich) Includes (Level-Offset) PlantUML Admonitions Attributes Anchors Footnotes, Index, Glossary Videos Syntax Highlighting Callouts Math Rendering Outputformats

Slide 47

Slide 47 text

Markdown Wir brauchen eine Erweiterung! Welche wählen wir? •CommonMark •CriticMarkup •Discount •DocFX •ExtraMark •Ghost's Markdown/Haunted Markdown •GitHub Flavored Markdown •GitLab Flavored Markdown (with login) •Haroopad Flavored Markdown •iA Writer's Markdown •Kramdown •Leanpub Flavored Markdown •Litedown •Lunamark •Madoko •Markdown •Markdown 2 •Markdown Extra •Markdown-it •Markua •Maruku •MultiMarkdown •Pandoc's Markdown •PHP Markdown Extra Extended •Python Markdown •R Markdown •Redcarpet •Remarkable •Rhythmus •Scholarly Markdown •Showdown •StackOverflow's Markdown •Taiga Markdown •Trello's Markdown •vfmd •Xcode/Swift Playgrounds Markup https://github.com/commonmark/commonmark-spec/wiki/markdown-flavors

Slide 48

Slide 48 text

Markdown Wir brauchen eine Erweiterung! Welche wählen wir? Funktioniert dann unsere Toolchain noch? Haben wir ein Editor-Preview?

Slide 49

Slide 49 text

64 :::note The content and title *can* include markdown. ::: :::tip You can specify an optional title Heads up! Here's a pro-tip. ::: :::info Useful information. ::: :::caution Warning! You better pay attention! ::: :::danger Danger danger, mayday! ::: ::: tip This is a tip ::: ::: warning This is a warning ::: ::: danger This is a dangerous warning ::: ::: details This is a details block, which does not work in IE / Edge ::: https://v1.vuepress.vuejs.org/guide/markdown.html#custom-containers https://v2.docusaurus.io/docs/2.0.0-alpha.70/markdown-features > [!NOTE] > Information the user should > notice even if skimming. > [!TIP] > Optional information to help > a user be more successful. > [!IMPORTANT] > Essential information required > for user success. > [!CAUTION] > Negative potential consequences > of an action. > [!WARNING] > Dangerous certain consequences > of an action. https://docs.microsoft.com/de-de/contribute/markdown-reference

Slide 50

Slide 50 text

AsciiDoc / Asciidoctor leistungsfähige Syntax für technische Dokumentation in Ruby geschrieben mit Opal nach JavaScript transpiliert mit jRuby auf der JVM gewrapped => Keine Dialekte!

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

asciidoctor your solution architecture documentation read HTML5 generate HTML arc42 asciidoc template is derived from Basic Docs-as-Code with AsciiDoc GIT

Slide 53

Slide 53 text

Ein Reifegradmodell Dokumentation wird in Git mit dem Sourcecode verwaltet

Slide 54

Slide 54 text

1 -> 2 Maintain Docs like Code? Treat Docs as Code!

Slide 55

Slide 55 text

asciidoctor your solution architecture documentation read HTML5 generate HTML arc42 asciidoc template is derived from Plugins + Scripted Docs-as-Code with AsciiDoc GIT pdf plugin diagram plugin plantUML PDF generate PDF

Slide 56

Slide 56 text

Tabellen!?

Slide 57

Slide 57 text

Tabellen!? CSV

Slide 58

Slide 58 text

Tabellen!? CSV

Slide 59

Slide 59 text

Modulare Dokumentation arc42- master.adoc kapitel1.adoc kapitel2.adoc include include kapitel8.adoc kapitel8.1.adoc public class HelloWorld { public static void main (String[] args) { // Ausgabe Hello World! System.out.println("Hello World!"); } } include include security- master.adoc business- master.adoc

Slide 60

Slide 60 text

Ein Reifegradmodell Dokumentation wird nicht nur als HTML gerendert, sondern auch mit eignen Skripten extrahiert und transformiert. …wie Code

Slide 61

Slide 61 text

Tabellen!? CSV

Slide 62

Slide 62 text

Tabellen!?

Slide 63

Slide 63 text

Zusammenarbeit

Slide 64

Slide 64 text

Zusammenarbeit

Slide 65

Slide 65 text

asciidoctor your solution architecture documentation pdf plugin diagram plugin plantUML read PDF generate PDF HTML5 generate HTML arc42 asciidoc template is derived from Basic Docs-as-Code with AsciiDoc

Slide 66

Slide 66 text

DB Systel GmbH | Ralf D. Müller | @RalfDMueller 81 Basic Docs-as-Code with AsciiDoc & docToolchain

Slide 67

Slide 67 text

Basic Docs-as-Code with AsciiDoc & docToolchain

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

Ein Reifegradmodell Es werden Standard-Skripte zum Extrahieren und Transformieren verwendet, wie z.B. docToolchain

Slide 71

Slide 71 text

Docs-as-Code in der IDE

Slide 72

Slide 72 text

Docs-as-Code in der IDE

Slide 73

Slide 73 text

Docs-as-Code in der IDE

Slide 74

Slide 74 text

Docs-as-Code in der IDE

Slide 75

Slide 75 text

Docs-as-Code in der IDE

Slide 76

Slide 76 text

Docs-as-Code in der IDE

Slide 77

Slide 77 text

Docs-as-Code in der IDE

Slide 78

Slide 78 text

Ein Reifegradmodell Der Docs-as-Code Ansatz wird durch Plugins auch in die IDE getragen Autovervollständigung, Syntax Highlighting, Strukturbrowser, Live-Templates, Code-Folding etc.

Slide 79

Slide 79 text

Agenda • Einführung • Architektur dokumentieren • Ein Reifegradmodell • Fazit und Ausblick

Slide 80

Slide 80 text

Fazit und Ausblick

Slide 81

Slide 81 text

Lust auf mehr Docs-as-Code? Wir bieten Tages-Workshops an. Sprecht uns an! fs@embarc.de

Slide 82

Slide 82 text

ralf.d.mueller@deutschebahn.com @RalfDMueller Vielen Dank. Wir freuen uns auf Eure Fragen! falk.sippach@embarc.de @sippsack