Your browser doesn't support the features required by impress.mod.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

17.09.2018 | Workshop "Nachhaltigkeit Digitaler Editionen"
Akademie der Wissenschaften und der Künste, Düsseldorf

Annotate, Generate, Test, Deploy

Aktuelle Software-Engineering Methoden zur Steigerung der Nachhaltigkeit Digitaler Editionen

Slides: https://digicademy.github.io/2018-sustainable-editions

Torsten Schrade, Mainz | @digicademy | Twitter digicademy | CC-BY 4.0

Gliederung

  1. Vorüberlegungen
    Dynamik von Editions-, Präsentations und Bereitstellungsprozessen Digitaler Editionen als Herausforderung für die Nachhaltigkeit
  2. Annotate
    Integrative Kapselung von Daten-, System- und Präsentationsschichten
  3. Generate
    Static Site Generator: Dynamik im Editionsprozess, Archivierbarkeit der Präsentationsschicht
  4. Test
    Nachvollziehbarkeit der Funktionalität von Präsentationsschichten durch Behaviour Driven Development
  5. Deploy
    Übertragbarkeit und dauerhafte Bereitstellung durch abstrahierte Systemarchitekturen
  6. Fazit

01

Vorüberlegungen

Warum?

...gehen Digitale Editionen nur immer so schnell kaputt!

  • Technologiegebunden: Notwendigkeit, technischem Wandel kontinuierlich zu folgen
  • Personengebunden: Wissen um die technischen Funktionalitäten liegt bei Personen (Sysadmins, Entwickler*innen, Editor*innen)
  • Dynamisch: Ressourcen werden im Moment des Zugriffs von Programmlogik erzeugt
  • Nachfolgend geht es um Möglichkeiten zur Steigerung der softwaretechnischen Kuratierbarkeit und nicht um forschungsdatenbezogene (inhaltliche) Kuratierbarkeit

Technische Kuratierbarkeit

Systemschichten digitaler Editionen

DER STURM

Digitale Quellenedition zur Geschichte der internationalen Avantgarde

  • Projekt:
    Verbindet Forschung (Digital Humanities, Geschichte, Kunstgeschichte, Literaturwissenschaft) und Lehre (Digitale Methodik)
  • So...
    ...standardisiert...
    ...offen...
    ...gekapselt...
    ...nachvollziehbar...
    ...nachhaltig...
    ...wie möglich.
  • Kontinuierlicher Prozess!

Kapselung

All-in-one Webanwendung

  • Forschungsdaten + Programmschicht + Präsentationsschicht
    in einem Paket
  • LIVE Demo:
    1. Herunterladen
    2. Einspielen in lokale Instanz
    3. Verwenden
  • Grundprinzipien:
    1. Annotieren / Edieren
    2. Generieren
    3. Testen
    4. Ausrollen (Deployen)

02

Annotieren & Generieren

Static Site Generators

Eine wiederkehrende Technologie

STURM Edition

Trennung von Geschäftslogik und Präsentationsschicht mittels „Static Site Generator“ (eXist-db)

LIVE DEMO

Static Site Generator

  • Beispiel 1:
    Inhalte ändern und Präsentationsschicht neu erzeugen
    eXide (lokale Instanz)
  • Beispiel 2:
    Präsentationsschicht exportieren und als statisches HTML verwenden
    ZIP Release

03

Testen

Präsentationsschicht

Beispiele für dynamische Funktionalitäten

  • Haupt-/Subnavigation (einschl. aktiven Zuständen)
  • Paginierung
  • Verschiedene Zugriffe auf das Material (chronologisch vs. nach KünstlerIn)
  • Versionierung
  • Zitierhinweis
  • Seitentitel
  • Brieflisten
  • Register + Quellenverweise

Akzeptanztests

Behaviour Driven Development (BDD)

  • BDD beschreibt die Funktionalität einer Anwendungsdomäne mittels formalisierter Szenarien.
  • BDD ist ein "outside-in"-Ansatz, der mit dem Blick der Nutzer_innen auf eine Forschungssoftware blickt und deren Funktionalität in ausführbaren Tests dokumentiert.
  • Die Tests werden in natürlicher Sprache nach einem festen Dreischritt-Prinzip formuliert.
  • Dadurch kann die oftmals "flüchtige" (= wenig nachhaltige) Präsentationsschicht einer Software in Zusammenarbeit mit den Fachwissenschaftler_innen gemeinsam beschrieben und nachhaltig dokumentiert werden.
  • LIVE Demo: Ausführung von BDD-Tests auf die Präsentationsschicht der STURM-Edition

04

Ausrollen (Deploy)

Systemumgebung

Beispiele für Systembindung

Systemumgebung:

  • eXist-db =>
  • basiert auf Java =>
  • ausgeliefert von Jetty =>
  • als Proxy hinter einem Apache =>
  • installiert auf Debian Jessie =>
  • als virtuelle Maschine.

DevOps

Nachhaltigkeit durch "Infrastructure as Code"

  • DevOps benutzt Werkzeuge, um eine automatische Reproduzierbarkeit der Softwareanwendung einschließlich ihrer Umgebung zu erreichen.
  • Der große Vorteil liegt in der automatisch enstehenden Dokumention und Nachvollziehbarkeit spezialisierter Software-Infrastrukturen. Es gibt kein implizites Wissen mehr, dass nur "der Admin" hat.
  • Gleichzeitig wird die Laufzeitumgebung von der Hardware abstrahiert (bspw. durch Virtualisierung). Eine Forschungssoftware wird somit "cloud-fähig", bzw. kann in beliebigen Infrastrukturen reproduziert werden.
  • Die Konfigurationen sind meist einfache Textdateien in einer bestimmten Syntax, die sich gut versionieren lassen. Somit lässt sich jede Modifikation an einer Anwendungsumgebung sauber dokumentieren und protokollieren.

DevOps

Nachhaltigkeit durch "Infrastructure as Code"

  • LIVE Demo: Ausführung eines Ansible-Playbooks zum Build der STURM-VM

05

Fazit

Technische Nachhaltigkeit

Möglichkeiten zur Steigerung der Nachhaltigkeit

  • Wissen um die Funktionalitäten einer digitalen Edition (funktionales Wissen) ist meist an bestimmte Personen gebunden (Sysadmins, Entwickler*innen, Editor*innen). Es ist "personengebundenes" Wissen.
  • Für eine nachhaltige technische Kuratierbarkeit muss dieses Wissen auf jeder Systemschicht abstrahiert und formalisiert werden.
  • Dokumentation ist gut, aber nur ein Teil der Formalisierung des "personengebundenen" funktionalen Wissens.
  • Das formalisierte Wissen um die Funktionalität einer digitalen Edition muss nachvollziehbar (im Sinne von Versionkontrolle) und nachprüfbar (im Sinne maschineller Überprüfungen) sein.
  • Hierfür existieren bereits unterstützende Methoden:
    - Abstraktion/Überprüfbarkeit durch Akzeptanztests (BDD)
    - Abstraktion/Überprüfbarkeit/Ausführbarkeit durch Automation (DevOps)
  • Systemische Abhängigkeiten sollten dabei so gut wie möglich aufgelöst werden: statische Erzeugung des überwiegenden Teils einer digitalen Edition.

F I N I S

Danke für die Aufmerksamkeit

Links, Software & Nachnutzung

Benutze Software

Lizenzhinweis