<<

Lebendige Architekturdokumentation

Orientation in Obj ects GmbH

Weinheimer Str. 68 68309 Mannheim

www.oio.de Version: 1.0 [email protected]

Ihr Sprecher

Falk Sippach (@sippsack)

Trainer, Berater, Entwickler

Architektur Agile Softwareentwicklung Codequalität Co-Organisator

Feedback gern an: @sippsack, [email protected]

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 2

1 , XML und Open Source seit 1998

) Software Factory ) ) Object Rangers ) ) Competence Center)

• Schlüsselfertige Realisierung • Unterstützung laufender • Schulungen, Coaching, von Java Software Java Projekte Weiterbildungsberatung, Train & Solve-Programme • Individualsoftware • Perfect Match • Methoden, Standards und • Pilot- und Migrationsprojekte • Rent-a-team Tools f ür die Entwicklung • Sanierung von Software • Coaching on the project v on offenen, unternehmens- • Software Wartung • Inhouse Outsourcing weiten Systemen

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 3

Abstract

Textverarbeitungsprogramme sind für technische Dokumentation schlecht geeignet, ein Wiki auch nur bedingt. Anhand einiger Fallbeispiele schauen wir uns an, wie man mit Entwicklerwerkzeugen Dokumentation redundanzfrei erstellt und pflegt, wie man sie validiert und in Teilen generieren oder sogar als Regelwerk ausführen kann.

Die resultierenden Dokumente müssen natürlich jederzeit in verschiedenen Formaten und für die jeweiligen Zielgruppen angepasst erzeugt werden können. Ein effizienter Build-Prozess, dazu schlanke Dokumenten- und Grafikformate sowie eine strukturierte Ablage der Quellen inklusive einheitlicher Versionierung, Historisierung und Vergleichbarkeit sind wichtige Komponenten für Continuous Documentation und Documentation as Code.

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 4

2 Doku-Smells Die 7 Sünden der Architekturdokumentation

Foto von jesperbkskov: https://pixabay.com/en/fish-newspaper-food-russian-salted-224097/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 5

Anforderungen klären

Architektur Architektur bewerten entwerfen

Architektur kommunizieren aus: Effektive

Warum Warum dokumentieren? Softwarearchitekturen (Gernot Starke)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 6

3 Gründe für eine Architektur-Dokumentation

Entwurfsunterstützung

Kommunikation

Bewertbarkeit

Frage nach Warum

Neue Mitarbeiter

Grafik von The Practical Dev: https://github.com/thepracticaldev/orly-full-res/blob/master/notwritingdocs-big.png (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 7

WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 8

4 WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 9

Textverarbeitung Visio Powerpoint UML-Tools

Foto von Antranias: https://pixabay.com/en/telescope-view-distant-binoculars-1201497/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 11

5 Alternative Datenformate zu Textverarbeitung

Plain-Text, leicht lesbar, einfach editierbar, automatisiert verarbeitbar

Plain-Text

kollaborativ eingeschränkte Lesbarkeit

Wikis LaTex/DocBook visuell, kurz & knapp Austauschformat Mindmaps Richtext

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 12

Markdown

Normaler Text wird so dargestellt wie eingegeben.

*Kursiv*, **Fett** und ***Fett kursiv*** bzw. _Kursiv_, __Fett__ und ___Fett kursiv___

Markiert Text als `Inline-Quelltext`

Ein Code-Block durch Einrückung mit vier Leerzeichen

* Ein Punkt in einer ungeordneten Liste * Ein Unterpunkt, um vier Leerzeichen eingerückt

1. Ein Punkt in einer geordneten Liste 2. Ein weiterer Punkt 1. Noch ein Punkt bei mehrfacher Angabe derselben Ziffer

# Überschrift in Ebene 1 #### Überschrift in Ebene 4

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 13

6 AsciiDoc

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 14

Welcher Markup-Typ bin ich?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 15

7 Einheitliche Dokumentenstruktur (z. B. arc42)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 16

arc42 Templates

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 17

8 WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 18

Foto von UliSchu: https://pixabay.com/en/organization-register-folder-files-1205171/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 19

9 Unser täglich Entwickler-Brot:

• Plain-Text • Entwicklungs- umgebung • Kommandozeilen- werkzeuge • Versions- verwaltung

Foto von geralt: https://pixabay.com/de/unternehmer-start-start-up-karriere-696976/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 20

Code-Nähe Ablage im Repo Versionier-/diffbar Synchrone Auslieferung Offlinefähig Teil des Build-Prozess Generierung Automatisierung Flexible Ausgabeformate Documentation as Code

Foto von ahobbit: https://pixabay.com/en/vault-business-bank-vault-bank-1144249/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 21

10 WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 22

Single Source of Truth

Includes Quellcode verlinken Platzhalter einbetten

Foto von pcdazero: https://pixabay.com/en/umbrellas-sea-holiday-summer-beach-921501/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 23

11 Inhalte generieren

WSDL, Swagger DB-Schema Annotationen JavaDoc Markup generieren

Foto von ClassicallyPrinted: https://pixabay.com/en/wind-turbine-energy-electricity-937715/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 24

Schnittstellenbeschreibung generieren

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 25

12 WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 26

Ein Bild sagt mehr als tausend Worte!

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 27

13 Quelle für Bilder/Grafiken

• Export aus UML-Modellen • Manuelle Erstellung (Bildverarbeitung/Visualisierungsprogramme)

• Einbetten/Verlinken in Markup:

![Alternativtext](bild.png "Bildtitel hier") image::bild.png[Alternativtext]

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 28

Tools

yEd ist ein kostenloses Visualisierungsprogramm

… und Enterprise Architect, Magic Draw, …

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 29

14 Diagramme als textuelle Beschreibung

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 30

"AsciiArt"

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 31

15 Online- Tools

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 32

Generation Plain-Text-Diagramme

Quellen:

Sourcecode DB-Schema XML-Modell

Foto von herbert2512: https://pixabay.com/en/steam-engine-toys-flywheel-drive-1592908/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 33

16 WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 34

Agile Projekte

iterativ kontinuierlich

Foto von Unsplash: https://pixabay.com/de/fluss-bachlauf-bach-l%C3%A4ndlich-768654/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 35

17 Automatisiert erstellen Regelmässig ergänzen Reviewen Nachbessern

Continuous Documentation

Foto von Ted Van Pelt: https://www.flickr.com/photos/bantam10/5209157298 (CC BY 2.0 Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 36

Entwickler Workflow

HTML PDF

Leser

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 37

18 Ausrichtung auf Zielgruppen

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 38

Single Source of Truth

Blog/Wiki

Präsentation Dokument

PDF Video, Podcast HTML E-Reader Papier

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld

19 WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 40

nur so viel wie nötig geringe Änderungsrate Zielgruppenbedürfnisse Feedback einpflegen

Pragmatik/Effektivität

Foto von PublicDomainPictures: https://pixabay.com/de/ansager-audio-schwarz-kassette-316584/ (CC0 Public Domain Lizenz)

Foto von Devanath: https://pixabay.com/de/bleistift-b%C3%BCro-design-kreative-1209544/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 41

20 Validierung

SanityChecks Broken Links PDFUnit

Foto von skeeze: https://pixabay.com/en/military-honor-guard-inspection-642639/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 42

Ausführbare Dokumentation

Ausführbare Tests Einbettung in Dokument Reportgenerierung

Foto von Wikimedia: https://commons.wikimedia.org/wiki/File %3A2014_W6N_-_France_vs_Italy_-_Christelle_Le_Duff_5780.jpg ( Creative Commons Attribution 3.0 Unported)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 43

21 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 44

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 45

22 Living Documentation

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 46

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 47

23 [[architecture:UndefinedDependencies [source,cypher,role=constraint,requiresConcepts Generierte There must not be dependencies between Maven project which have not been defined. Cypher- ---- MATCH Regel (p1:Maven:Project)-[:CREATES]- (p2:Maven:Project)-[:CREATES]- Architektur- (t2)-[:DEPENDS_ON]->(t1) WHERE NOT definition (p1)-[:DEFINES_DEPENDENCY RETURN in PlantUML * ---- [[architecture:DefinedDependencies] [,role=concept] ---- [artifactId:xo.impl] as impl <<:Maven:Project>> [artifactId:xo.api] as api <<:Maven:Project>> [artifactId:xo.spi] as spi <<:Maven:Project>>

impl -> api : Defines Dependency impl -> spi : Defines Dependency spi -> api : Defines Dependency ----

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 48

WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 49

24 Klassische Architekten Rolle

Foto von scottwebb: https://pixabay.com/en/toronto-architecture-skyscraper-1594940/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 50

Architekt/Senior Developer als Ratgeber/Mentor und Moderator

Foto von JESHOOTS: https://pixabay.com/de/warten-termin-zeitplan-zeit-eile-410328/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 51

25 Vorbereiten Planen Erinnern Delegieren Integrieren Prüfen

Dokumentation braucht einen Kümmerer

Foto von Berzin: https://pixabay.com/en/ambulance-doctor-students-game-2166079/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 52

WYSIWYG ABLAGE REDUNDANZEN

TEXTWÜSTE Smells

- HANDARBEIT TOTE DOKU

Doku ELFENBEINTURM

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 53

26 WYSIWYG Plain Text ABLAGE Documentation as Code REDUNDANZEN Generierung TEXTWÜSTE Mehr Grafiken HANDARBEIT Automatisierung TOTE DOKU Lebendige Dokument.

Zusammenfassung ELFENBEINTURM Kümmerer

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 54

Verschiedene Szenarien

Foto von nikidinov: https://pixabay.com/en/ballet-swan-lake-ballerina-dance-2124652/ (CC0 Public Domain Lizenz)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 55

27 Szenario 1: Markdown, Pandoc, PlantUML, yEd

• Schreiben in Markdown in IDE (IntelliJ IDEA) inkl. Preview

• PDF-Erzeugung mit PanDoc über LaTex-Zwischenschritt inkl. Corporate Design

• UML-Diagramme mit PlantUML, Live-Ansicht/Export aus IDE

• andere Diagramme mit yEd, Export als *.png

• Stash/Bitbucket Server als Repo – rendert Markdown direkt in Weboberfläche – readme.md Verlinkungen auf wichtige Dokumente

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 56

Szenario 1: User-Feedback

"Generiertes PDF stellt alles bisherige "Entwickler finden es in den Schatten." klasse, Leser innerhalb der Firma: finden das "… fast alles ist generierte PDF sehr gut leicht versionier- und hübsch." und diffbar"

"… jeder Entwickler "Nie wieder anders! kann ändern…" Ich bin voll überzeugt."

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 57

28 Szenario 2: AsciiDoctor, Maven, PlantUML

• Erstellen AsciiDoc und PlantUML in IDE mit Preview

• Maven-Plugin zum Erzeugen des HTML/PDF

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 58

Szenario 3: Generierung aus Quellcode

• Quellcode parsen – Reflection – Spring Kontext – …

• in Unit-Test aus Klassen-Strukturen Diagramm-Markup erzeugen – z. B. PlantUML – als Text-Datei ablegen und in Markup-Dokumentation verlinken

• im Build-Prozess als Input für Markup-Konvertierung einlesen

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 59

29 Szenario 4: Schnittstellenbeschreibung

• Generierung aus WSDL, WADL, Swagger

• Einbindung in Build-Prozess

• Swagger2Markup

• JAX-RS Analyzer

• Spring REST Docs

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 60

Szenario 5: Ausführbare Dokumentation

• Quellcode-Struktur in Graph-Datenbank importieren

• Architektur-Regeln als Graph-Abfragen in AsciiDoc einbetten

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 61

30 ? ? ? ?Fragen ? ? ?

Orientation in Obj ects GmbH

Weinheimer Str. 68 ? 68309 Mannheim www.oio.de 62 [email protected] ?

Vielen Dank für Ihre Aufmerksamkeit !

Orientation in Obj ects GmbH

Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected]

31