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 Java, 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] [plantuml,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