Kontinuierliche Architekturdokumentation im agilen Umfeld

Orientation in Objects 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 Co-Organisator Codequalität

Feedback gern an: @sippsack, [email protected]

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 2 , 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 von offenen, unternehmens- • Software Wartung • Inhouse Outsourcing weiten Systemen

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 3 Abstract

Man kann zwar an vielen Stellen nachlesen, wie man Architekturdokumentation strukturiert. Aber auf der Suche nach einer praktikablen Handhabung zur Erstellung und Pflege enden die meisten Versuche in der WYSIWYG-Hölle einer Textverarbeitung oder im tiefen Schlund eines Wikis. In diesem Vortrag wollen wir uns anschauen, wie aufbauend auf bestehenden Tools und Textformaten eine möglichst redundanzfreie Dokumentation erstellt und für verschiedene Zielgruppen in ansprechenden Formaten ausgeliefert werden kann. Es wird dabei um Begriffe wie Continuous Documentation und Documentation as Code gehen.

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 4 Kontinuierliche Architekturdokumentation

Warum? Agil? Was? Wie?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 5 Kontinuierliche Architekturdokumentation

Warum? Agil? Was? Wie?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 6 Anforderungen klären

Architektur Architektur bewerten entwerfen

Architektur kommunizieren aus: Effektive

Warum dokumentieren? Warum Softwarearchitekturen

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 7 "In software, there is always architecture. You can’t have no architecture." "But with it’s documentation, there are two options: you can have one or not."

"If you have one, there are two options: the documentation matches with the real

architecture or not." Warum dokumentieren? Warum

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 8 "… dass auch eine perfekte Architektur nutzlos bleibt, wenn sie nicht verstanden wird …"

"Die Architektur zu dokumentieren, ist der kritische, krönende Schritt zur Erschaffung."

Warum dokumentieren? Warum Aus: Software Architecture Documentation in Practice von Bachmann, Bass

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 9 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 10 Gründe für eine Architektur-Dokumentation

Entwurfsunterstützung

Kommunikation

Bewertbarkeit

Frage nach Warum

Neue Mitarbeiter

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 11 Kontinuierliche Architekturdokumentation

Warum? Agil? Was? Wie?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 12 "Wenn ein Projekt den Bach runter geht, Scrum ist "murcS" dann nennt man das wohl Wasserfall."

rückwärts! Agil Agil dokumentieren?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 13 Agile Teams brauchen nicht dokumentieren! Endlich ...

Häh?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 14 Wer ist schuld?

Laufende Software wichtiger als ausführliche Dokumentation

http://agilemanifesto.org/background.jpg © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 15 Worauf das agile Manifest eigentlich abzielte …

Documentation through the Software Development Lifecycle

http://www.agilemodeling.com/essays/agileDocumentationBestPractices.htm

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 16 Agile Methoden kennen keinen Architekten!

"Who needs an Architect?"

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 17 Architekt als Ratgeber/Mentor und Moderator

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 18 Vorbereiten Planen Erinnern Dokumentation braucht einen Delegieren Integrieren Prüfen Kümmerer

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 19 Agile Projekte

iterativ kontinuierlich

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 20 Anpassen Reviewen Nachbessern

Continuous Documentation

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 21 Redundanzen vermeidbar?

Quellcode verlinken Platzhalter einbetten Single Source of Truth

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 22 Inhalte generierbar?

WSDL, Swagger DB-Schema Annotationen JavaDoc

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 23 Schnittstellenbeschreibung

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 24 Validierung

SanityChecks Broken Links PDFUnit

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 25 Ausführbare Dokumentation

Ausführbare Tests Einbettung in Dokument Reportgenerierung

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 26 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 27 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 28 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 29 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 30 Kontinuierliche Architekturdokumentation

Warum? Agil? Was? Wie?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 31

Inhalt Was dokumentieren? Was

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 32 Was ist nochmal Architektur? fundamentale Strukturen, Konzepte, Entscheidungen und Lösungsansätze

... die wesentlich sind, damit Systeme ihren Anforderungen genügen! ... die man nicht mehr leicht losbekommt!

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 33 Was gehört in die Architektur-Dokumentation? Bausteine und Schnittstellen

Zusammenarbeit zur Laufzeit

Integration in techn. Infrastruktur

Technische Konzepte

Wichtige Entscheidungen

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 34 nur so viel wie nötig, wenig Änderungen, Zielgruppenbedürfnisse, Feedback einpflegen

Pragmatik/Effektivität

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 35 Kontinuierliche Architekturdokumentation

Warum? Agil? Was? Wie?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 36

Prozess Werkzeugkette Wie dokumentieren? Wie

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 37 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 38 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 39 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 40 arc42 Templates

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 41 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 42 Blog/Wiki

Präsentation Dokument

PDF Video, Podcast HTML E-Reader Papier

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 44 Zielgruppen identifizieren

Entwickler Projektleiter

Fach- Architekt experten Produkt- manager

Tester Betrieb

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 45 Braucht jeder alles?

• Inhalte pro Zielgruppe festlegen • möglichst ein zentrales Dokument • (automatisiert) verschiedene Ausgabedokumente generieren

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 46 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 47 Hauptsache, du machst es nicht mit Word!

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 48 Unser täglich Entwickler-Brot:

• Plain-Text • Entwicklungsumgebung • Kommandozeilen- werkzeuge • Versionsverwaltung

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 49 Code-Nähe Ablage im Repo Versionier-/diffbar Synchrone Auslieferung Offlinefähig Teil des Build-Prozess Generierung Automatisierung Flexible Ausgabeformate

Documentation as Code

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 50 Entwickler Workflow

HTML PDF

Leser

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 51 Alternative Datenformate

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

Plain-Text

kollaborativ eingeschränkte Lesbarkeit

Wikis LaTex/DocBook kurz & knapp Austauschformat Mindmaps Richtext

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 52 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 53 AsciiDoc

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 54 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 55 Markup generieren

• JavaDoc/Annotations

• Enumwerte/Zustandsübergänge (Enum-Werte)

• Schnittstellenbeschreibung (WSDL, Swagger, WADL)

• DB-Schema (SchemaCrawler)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 56 Tools

… und Sublime, Atom, IntelliJ IDEA, Eclipse, …

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 57 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 58 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 59 Tools

yEd ist ein kostenloses Visualisierungsprogramm

… und Enterprise Architect, Magic Draw, …

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 60 Quelle für Bilder/Grafiken

• UML-Modelle • Bildverarbeitung/Visualisierungsprogramme

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

• Textuelle Beschreibung (ASCII-Art)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 61 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 62 Generation Plain-Text Diagramme

Quellen:

Sourcecode DB-Schema XML-Modell

Muss nicht aktuell gehalten werden!

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 63 © Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 64 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 65 Verschiedene Szenarien

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 66 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 67 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 68 Szenario 2: AsciiDoctor, Maven, PlantUML

• Erstellen AsciiDoc und PlantUML in IDE mit Preview

• Maven-Plugin zum Erzeugen des HTML/PDF

Demo

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 69 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 70 Szenario 4: Schnittstellenbeschreibung

• Generierung aus WSDL, WADL, Swagger

• Einbindung in Build-Prozess

• Swagger2Markup • JAX-RS Analyzer • Spring REST Docs Demo

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 71 Szenario 5: Ausführbare Dokumentation

• Quellcode-Struktur in Graph-Datenbank importieren

• Architektur-Regeln als Graph-Abfragen in AsciiDoc einbetten

Demo

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 72 Ziel- gruppen? Werkzeuge? Struktur? Medien?

Doku-

Wie dokumentieren? Wie Grafiken? Format?

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 73 Wiki

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 74 Zusammenarbeit

Verlinkung Review-/Redaktions-Prozess Prozess-Unterstützung Abbildung Workflow Erweiterung über Plugins Alles in einer Box!

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 75 Strukturiert? Plain-Text? Offlinefähigkeit? Versionierung? Code-Nähe? Automatisierung? Druckausgabe? Zielgruppen? Kontextwechsel

Schlund des Wiki

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 76 Tasks Mentions

Kommentare Jira

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 77 Balsamiq Mockups

Gliffy (Diagramme, UML)

© Orientation in Objects GmbH Kontinuierliche Architekturdokumentation im agilen Umfeld 78 ? ? ? Fragen ? ?

Orientation in Objects GmbH

Weinheimer Str. 68 ? 68309 Mannheim www.oio.de 79 [email protected] Vielen Dank für Ihre Aufmerksamkeit !

Orientation in Objects GmbH

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