HOCHWERTIGE ENTWICKLUNGSDOKUMENTATION AUTOMATISCH MIT ASCIIDOC

Die Seite wird erstellt Fiete Marx
 
WEITER LESEN
HOCHWERTIGE ENTWICKLUNGSDOKUMENTATION AUTOMATISCH MIT ASCIIDOC
HOCHWERTIGE
        ENTWICKLUNGSDOKUMENTATION
        AUTOMATISCH MIT ASCIIDOC
                                                                                                                            | von MARTIN SERNOW

       Je größer ein Softwareprojekt, desto                befindet und die „goldenen Henkel“ ganz          und die Dokumentation dort abzulegen,
       höher die Wahrscheinlichkeit, dass das              sicher später nachgeholt werden – so je-         wo sich die dokumentierte Problematik
       Anpassen der Entwickler-, System- und               denfalls der gute Vorsatz.                       befindet. Hier kann die Auszeichnungs-
       Releasedokumentation von den Bear-                                                                   sprache AsciiDoc Abhilfe schaffen. Wir
       beitern vergessen wird. Sei es, weil zu             Die Lösung für dieses Problem wäre, den          verwenden es, um den Releaseletter, die
       viel Dokumentation existiert oder weil              Medienwechsel zwischen Intellij+Git und          Installationsanleitung, das Systemhand-
       sich das Projekt in einer kritischen Phase          Word+SVN möglichst gering zu halten              buch und den Systementwurf durch Ascii-
                                                                                                            Doc automatisiert generieren zu können.
                                                                                                            Durch die Umstellung von einem Worddo-
                                                                                                            kument auf mehrere AsciiDoc-Dokumen-
                                                                                                            te ergeben sich verschiedene Vorteile, die
       WAS IST ASCIIDOC?
                                                                                                            nachfolgend erläutert werden.
       AsciiDoc ist eine Auszeichnungssprache, mit der man schnell und einfach formatierte Dokumente
       erstellen kann. AsciiDoc kann mithilfe des Tools AsciiDoctor1 direkt in den Softwareerstellungs-
                                                                                                            WELCHE PROBLEME BEI DER SYSTEM-
       und Build-Prozess integriert werden. Aus der Code-Dokumention werden Lieferartefakte erzeugt,
                                                                                                            UND RELEASEDOKUMENTATION
       die mit spezifischen Formatvorlagen für unterschiedlichste Ausgabeformate hinterlegt werden
                                                                                                            WERDEN DURCH ASCIIDOC GELÖST?
       können. Dadurch entfällt die neben oder nach der Entwicklungs- und Releasephase anfallende
       zusätzliche Dokumentationsphase. Die erzeugte Dokumentation kann durch viele Werkzeuge
                                                                                                            Softwareentwickler nutzen für ihre Ar-
       (zum Beispiel Intellj, Eclipse, Visual Studio) geöffnet, erweitert und angesehen werden, ohne dass
                                                                                                            beit eine Entwicklungsumgebung (zum
       weitere Anwendungen gestartet werden müssen.
                                                                                                            Beispiel IntelliJ) sowie gegebenenfalls
                                                                                                            weitere   Entwicklungswerkzeuge,      wie

52 | .public 01-21 | Informationstechnologie
HOCHWERTIGE ENTWICKLUNGSDOKUMENTATION AUTOMATISCH MIT ASCIIDOC
rieren. In vielen Fällen schreibt AsciiDoc
                                                                                                          sogar selbst vor, wie bestimmte Informa-
Eine Auszeichnungssprache ist eine maschinenlesbare Sprache für die Gliederung und Forma-
                                                                                                          tionen formatiert sein müssen (zum Bei-
tierung von Texten. So kann man mit einfachen Mitteln wie *Fett* schreiben, mit TIP: ein Icon
                                                                                                          spiel für Überschriften, Code Snippets,
einfügen und per image:icons/avatar.png[title="Avatar"] sogar ein Bild ins Dokument einfügen.
                                                                                                          Bilder oder Tabellen).
Ziel ist es, mit wenig Aufwand ein einheitliches und gut formatiertes Dokument zu schreiben.2

                                                                                                          Grafiken sind bei der System- und Ent-
                                                                                                          wicklerdokumentation oft ein wich-
                                                                                                          tiges Mittel, um die Technik dahinter
                                                                                                          verständlich zu machen. Man möchte
zum Beispiel Konsole, Datenbankviewer                      Andere Entwickler, die sich genau mit          die Medien so ablegen, dass sie im ge-
und Browser und verwalten ihre Arbeit                      diesem Code befassen, können prob-             nerierten Dokument richtig angezeigt
in einer modernen Versionsverwaltung                       lemlos das entsprechende AsciiDoc-Do-          werden. Bei MS Word werden die Medi-
(zum Beispiel Git). Die Dokumentation                      kument aufrufen, das entsprechende In-         en einfach per Drag & Drop in das Do-
dagegen findet über MS Word und die                        formationen für die Arbeit an der Klasse       kument „gezogen“. Allerdings ist danach
Verwaltung über eine „klassische“ Ver-                     bereitstellt. Zudem können Änderungen          das Aktualisieren der Bilder schwierig.
sionsverwaltung statt (zum Beispiel                        aufgrund von Change Requests oder              Dafür bietet Word nur an, die Medien
svn). Der an dieser Stelle entstehende                     Bugs sofort und an Ort und Stelle vorge-       über eine Referenz zu ihrem Ablage-
Medienbruch und zusätzliche Aufwand                        nommen werden.                                 ort zu speichern. AsciiDoc ermöglicht
führen häufig dazu, dass die Anpassung                                                                    das analog über die Referenzierung via
oder Aktualisierung der Dokumentation                      Code und Dokumentation können in ei-           URL-Notation des Ablagepfads. Dabei
verschoben oder sogar ganz vergessen                       nem gemeinsamen Review-Prozess der             reicht auch eine relative Referenz mit
wird. Auch die Suche nach Informatio-                      Entwicklung geprüft werden. Den Revie-         Bezug zu einem zentralen Webserver
nen in der Dokumentation erweist sich                      wern stehen beide Prüfobjekte gemein-          aus, so dass man die Medien zentral
oft als schwierig, da viele Entwicklungs-                  sam zur Verfügung, und sie erkennen am         bearbeiten, zum Download anbieten
umgebungen nicht sehr leistungsfähig in                    Fehlen des AsciiDoc-Dokuments, dass            und Duplikate vermeiden kann.
der separat abgelegten Dokumentation                       eine Dokumentation noch aussteht.
suchen können.                                                                                            Das Ausgabeformat von AsciiDoctor
                                                           Ein weiteres Problem ist das einheitliche      ist standardmäßig auf PDF und HTML5
                                                           Layout von MS-Word-Dokumenten. Da              beschränkt. Das Tool Pandoc3, das oft
                                                           es sehr viele Möglichkeiten und Optio-         für Medienkonvertierungen       über die
                                                           nen gibt, ein Dokument „wunschgemäß“           Kommandozeile verwendet wird, bietet
                                                           zu formatieren, steigt die Vielfalt der        weitere Ausgabeformate an. Zusätzlich
                                                           „Layouts“ und Formatierungen, je län-          kann man Dokumente in mehreren For-
                                                           ger ein Dokument bearbeitet wird und je        maten exportieren: So kann man für Pro-
                                                           mehr Personen daran arbeiten. Die Ent-         jektmitarbeiter die Dokumentation auf
                                                           wickler verlieren sich immer mehr darin,       einem Siteserver hosten, den Beteiligten
                                                           Design über Inhalte zu stellen.                ein PDF schicken und gegebenenfalls für
                                                                                                          die nachträgliche Bearbeitung noch ein
Abbildung 1: Projektstruktur mit integrierter ADOC-Datei   AsciiDoc bietet zwar ebenfalls eine gute       Docx bereitstellen. Um jedoch Kommen-
                                                           Auswahl an Dokumentdesign- und For-            tare von Nutzern zurück ins System zu
                                                           matierungsmöglichkeiten,          allerdings   spielen und dort weiterzuverarbeiten,
                                                           wird das Design erst bei der Erzeugung         wäre ein noch zu erstellendes Tool not-
                                                           des Artefakts (wie PDF, HTML, DOCX,            wendig, das diese Kommentare aus dem
Dagegen liegen bei der Verwendung von                      PPT) auf Basis von Formatvorlagen (Tem-        dem Dokument extrahiert und zum Bei-
AsciiDoc die Dateien für die Dokumen-                      plates) von AsciiDoctor über den Inhalt        spiel als To-dos an das entsprechende
tation direkt beim Code, im selben Ver-                    „gestülpt“. So müssen und können sich          AsciiDoc-Dokument anhängt.
zeichnis wie die implementierte Klasse.                    Entwickler vor allem den Inhalt konzent-

                                                                                                             Informationstechnologie | .public 01-21   | 53
WIE INTEGRIERT MAN DEN BUILD-
       PROZESS IN SEIN PROJEKT?

       Ein einfaches Beispiel zeigt, wie man eine
       Datei in einem Build Tool wie Maven inte-
       grieren kann, damit beim Build-Process
       das entsprechende Dokument mitgene-
       riert und an die Beteiligten ausgeliefert
       werden kann:

       • Im   ersten Schritt bindet man das
          asciidoctor-maven-Plugin ein, am bes-
          ten im Build Process mit dem Profil
          asciidoc, damit man über dieses Pro-
          fil steuern kann, wann man die Doku-
          mente generiert.
       • A ls Nächstes legt man die verschiede-
          nen Konvertierungen (executions) fest–
          in diesem Fall für den Systementwurf

                                                                                       Abbildung 2: Projekt Object Model um ADOC Plugin erweitert

                            export
             Jira         Jira Issues    Open Issues                                                                            generate
                                                                                                                                  PDF
                                                                         arc                                                                   PDF
                                                                       asciidoc
                            export
                          Chance Log                                   template                       asciidoctor
                                         Chance Log                                                                                                                          Confluence
                                                                                                                                                           publish to
            Git-                                                                                  diagram       PDF                                       Confluence
         Repository                                                  is derived from
                                                                                                   plugin      plugin
                                                                                                                                                                               Pages
                                        Contributors                                                                            generate     HTML5
                           export                                                                                                HTML
                         Contributors
                                                          include    your solution read                                                                    htmlSanityCheck
                                                                     architecture                  plant     reveal.js
                                           Element                  documentation                  UML       template          generate                                      HTML Error
                         export                                                                                                              DocBook
                           EA               Notes                                                                              DOCBook                                         Report
          Sparx EA
           Model
                                                                                                                                               read
                                           Diagram                     fix   prepend
                                            PNGs                    Encoding filename                                                                        convert
         Visio Project                                                                                                                                       to Docx
                         export                                                                                                              pandoc                            DOCX
                          Visio
                                                                                                             generate
                                          Speaker-                                                             Deck                                         convert
                                           Notes                                                                                                            to EPub

            PPT-                                                                                                                             Reveal.js
                                                                                                                                              Deck                             EPub
        Presentation     export
                          PPT              Slide as
                                             JPG
                                                                           LEGEND

                            export       Worksheets                               your documentation                    build task                    under version control
         xlsx-Sheet          Exel       as csv and adoc
                                                                                  output document                       software component            gradle task

                           export                                                 Intermediate document                 proposed                      direction of control
         Markdown         Markdown        Asciidoc

       Abbildung 3: Übersicht der Möglichkeiten von DocToolchain6

54 | .public 01-21 | Informationstechnologie
DocBook (dies kann später zu dem                      Das Werkzeug DocToolchain4 ermöglicht                       ZUSAMMENFASSUNG
      Word-Dokumententyp docx konver-                       es, dynamisch noch mehr entwicklungs-
      tiert werden). In der Konfiguration                   relevante Informationen automatisiert                       Mit dem Wechsel von MS Word auf eine
      sagt man mit dem Tag „backend“,                       in die AsciiDoc-Dokumente einzufügen.                       Dokumentation direkt am Code durch
      dass man ein docbook wünscht. Für                     Ursprung der mittlerweile zahlreichen,                      AsciiDoc werden den Entwicklern ma-
      das DocBook-Dokument kann man                         automatisch          Dokumentationsfunktio-                 nuelle Arbeiten abgenommen. Dies min-
      html oder auch pdf verwenden, na-                     nen unterstützenden DocToolchain war                        dert das Fehlerpotenzial und versetzt
      türlich immer mit dem entsprechen-                    der Wunsch, Diagramme aus dem Enter-                        Entwickler in die Lage, Code schneller zu
      dem Doctype.                                          prise Architekt5 in AsciiDoc-Dokumente                      verstehen und, neben JavaDoc7, besser
• B eliebig      weitere executions kann                   einzubinden (siehe Abbildung 3).                            zu dokumentieren. Der Release-Prozess
      man erzeugen, um entweder den                                                                                     wird durch die automatische Zusam-
      Systementwurf in weitere Formate                      Beispielszenario                                            menstellung von Release-Dokumentati-
      zu konvertieren oder auch andere                      Ein gutes Beispiel für „Documentation                       onen schlanker, die manuelle Arbeit ent-
      Dokumente zu erzeugen.                                am Code“ aus der Projektpraxis ist der                      fällt zum großen Teil. Alles in allem „lebt“
• In    der Konfiguration werden allge-                    Einsatz von AsciiDoc im Ticketprozess.                      die    Entwicklungsdokumentation         und
      meine, für alle executions gültige
      Werte übergeben, wie beispielsweise
                                                            Änderungen im Programmcode auf-
                                                            grund eines Tickets werden über ein
                                                                                                                        wird stetig aktualisiert und publiziert.   •
      das Ausgabeverzeichnis (hier out-                     spezielles Commit in Git abgebildet. Ab-
      putDirectory), welche            Logeinträge          schließende Commits wurden um das
      geschrieben werden und woher die                      Kennzeichen „#releaseletter“ erweitert.
      Quelldateien kommen.                                  DocToolchain          sammelt         automatisch
                                                            für den Releaseletter alle Commits aus
DOCTOOLCHAIN                                                der Git-Historie und schreibt sie in den
                                                            Releaseletter. Somit werden wichtige-
Doch was, wenn man mit mehreren Tools                       Feature-Entwicklungen oder Fehlerkor-
wie Sparx EA, Git, Jira oder Visio arbeitet                 rekturen im Releaseletter verzeichnet,
und daraus die Inhalte in seinem Ascii-                     ohne dass ein Release-Verantwortlicher
Doc -Dokument anzeigen und aktuell                          die entsprechenden Tickets suchen und
halten möchte?                                              manuell hinzufügen muss.

1    https://asciidoctor.org/ (abgerufen am 26.10.2020).
2     Eine genaue Auflistung der AsciiDoc Formatierungen siehe hier: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/ (abgerufen am 30.03.2021).
3    https://pandoc.org/ (abgerufen am 30.03.2021).
4     https://doctoolchain.github.io/docToolchain/ (abgerufen am 26.10.2020).
5    https://www.sparxsystems.de/ (abgerufen am 26.10.2020).
6     https://doctoolchain.github.io/docToolchain/#_overview_of_available_tasks (abgerufen am 26.10.2020).
7    https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html (abgerufen am 26.10.2020).

                                                                                                                              Informationstechnologie | .public 01-21   | 55
Sie können auch lesen