Einführung

In diesem Modul sollen Studierende Grundlagen der Entwicklung von Webanwendungen erlernen. Dabei finden sechs Mal drei Sitzungen pro Woche statt, in denen jeweils theoretische Grundlagen (Vorlesung) und praktischen Aufgaben (Übung) bearbeitet werden. Deren Inhalte sind in diesem Modulhandbuch festgehalten. Außerhalb der festen Sitzungen arbeiten die Studierenden eigenständig und im Team weiter an den im Handbuch angegebenen Aufgaben. Im Verlauf der Sitzungen wird eine Beispielanwendung in Form einer Briefedition entwickelt, wobei eine Musterimplementierung zur Verfügung steht, die nach Bedarf zum Lernen am Code oder zum Vervollständigen der eigenständigen Arbeit genutzt werden kann.

Reflexion

Zu Beginn wollen wir reflektieren, was wir bereits zum Thema Webanwendungen wissen.

  1. Welche Webanwendungen nutzen wir?

  2. Wie unterscheiden sie sich von „Apps“?

  3. Welche Webtechnologien kommen dabei zum Einsatz (und welche ggf. nicht)?

  4. Wie müssen wir uns die Industrie vorstellen, die diese Anwendungen herstellt?

  5. Welche Prinzipien der Privatwirtschaft lassen sich Ihrer Erwartung nach auf Webanwendungen in den Geistes- und Kulturwissenschaften übertragen und welche nicht?

Webtechnologien

Webtechnologien haben sich in den vergangenen fünfzehn Jahren rasant verändert und weiterentwickelt. Konzentrierte sich die Webentwicklung im ersten Jahrzehnt dieses Jahrhunderts vor allem auf die Kernbereiche HTML, Cascading Stylesheets (CSS), JavaScript sowie eine überschaubare Anzahl serverseitiger Programmiersprachen, ist durch die „mobile Revolution“ und das „Cloud Computing“ in den vergangenen Jahren in vielen Bereichen ein Paradigmenwechsel erfolgt. Damit einher geht eine Erweiterung der Kompetenzfelder, die heute zu einer professionellen webbasierten Softwareentwicklung gehören.

Heutige Webanwendungen beschränken sich nicht mehr auf bestimmte Endgeräte (wie z.B. Desktop-Computer), werden zunehmend nicht mehr auf dedizierten Servern, sondern virtualisiert in der „Cloud“ gehostet, sind softwaretechnisch weniger monolithisch und bestehen zum Teil aus microservice-orientierten Architekturen, die mittels kurzer, agiler Entwicklungszyklen entwickelt und veröffentlicht werden können.

Ein umfassendes Wissen in allen für die moderne Webentwicklung benötigten Feldern aufzubauen stellt eine große Herausforderung dar. Häufig entsteht für Entwickler:innen ein nicht zu unterschätzendes Spannungsverhältnis, da sich die Vielzahl, die Schnelllebigkeit, die Komplexität und der Lernaufwand für die eingesetzten Technologien gegenüberstehen. In den Digital Humanities ist der Überblick über das ganze Feld und seine Technologien dennoch von zentraler Bedeutung.

Im Verlauf von Seminar und Übung werden wir Webtechnologien sowohl aus der Projektmanagementperspektive (Überblick, Methodik, Risikobewertung, Nachhaltigkeit) und andererseits aus der Entwicklungsperspektive (Konzeption, Modellierung, Umsetzung, Praxis) betrachten.

Sich einen Überblick verschaffen

Wer sich einen besseren Überblick über die zahlreichen Kompetenzfelder im Bereich moderner Webanwendungsentwicklung erhalten möchte, kann die drei Aufgabenfelder Frontend, Backend und DevOps in der Developer Roadmap von Kamran Ahmed erkunden:

  1. Frontend

  2. Backend

  3. DevOps

Wer darüber hinaus Gamification als Teil der eigenen Lernbiografie bevorzugt, kann sich einen Talentbaum auf der Seite Dungeons & Developers erstellen und im Verlauf des Moduls weiter erkunden.

Weborientierte Programmiersprachen

Weborientierte Programmiersprachen bilden das Rückgrat der modernen Webentwicklung. Während man noch vor einigen Jahren darauf Rücksicht nahm, dass Nutzer:innen JavaScript in ihren Browsern deaktiviert haben könnten und Webseiten nur mit HTML und CSS auskommen können sollten, hat eine „Renaissance“ von JavaScript in den vergangenen Jahren dazu beigetragen, dass die Grenze zwischen serverseitigen und clientseitigen Programmiersprachen verschwimmt. Dies wurde insbesondere durch die Entwicklung von node.js ausgelöst und spielt nun eine als serverseitige Programmiersprache neben dem lange etablierten PHP (sowie Python) eine Rolle.

Das Web gehört durch seine Schnelllebigkeit zu den Bereichen, in denen Entwicklungsansätze und Programmiersprachen häufig Trends bzw. Moden unterliegen. Die richtige Einschätzung, wie sich bestimmte Sprachen und Frameworks entwickeln, gehört zu den zentralen Aufgaben von Projektmanager:innen und Softwareentwickler:innen. In den Digital Humanities muss diese Einschätzung sogar noch etwas nuancierter passieren als in der Privatwirtschaft. So genießen beispielsweise die sogenannten X-Technologien (XML, XPath, XQuery, etc.) in der Privatwirtschaft zur Zeit eher einen Abschwung. Für Wissensmanagement, Editorik, Textannotation und auch das W3C als einem von mehreren Standardisierungsgremien für Webtechnologien spielen sie jedoch weiterhin eine zentrale Rolle.

Das Web wird technologisch vor allem von den großen Internetkonzernen (Google, Amazon, Apple, Meta u.a.), den Browserherstellern (Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, usw.) sowie den Informations- und Code Hosting-Plattformen (z.B. GitHub, GitLab, BitBucket, Stack Overflow etc.) geprägt. Eine kontinuierliche Beobachtung, in welche Technologien, Standards und Sprachen diese Firmen investieren, ist daher wichtig.

Einige der genannten Anbieter geben in regelmäßigen Abständen Berichte zum state-of-the-art der weborientierten Softwareentwicklung heraus. Diese Berichte sind zentrale Informationsquellen für die Einschätzung, auf welche Technologien ein Projekt unter dem Gesichtspunkt der Nachhaltigkeit setzen sollte. Daneben stellen diese Berichte gute Entscheidungshilfen bei der Auswahl von Programmiersprachen für die eigene entwicklerische Ausbildung dar.

Wissen aus Webtechnologie-Surveys erschließen

Zur Projektplanung ist es wichtig, die Technologielandschaft im Auge zu behalten. In dieser Übung schauen wir uns Surveys als Anlaufstellen für strategische Einschätzungen zu Anwendungs-, Nutzungs- und Entwicklungsperspektiven an. Wählen Sie einen oder mehrere aus:

  1. GitHub Octoverse Report 2023

  2. RedMonk Programming Languages Ranking 2023 (letzte Ausgabe)

  3. StackOverflow Survey 2023

  4. Tiobe Index

Einige Leitfragen bei der Durchsicht können sein:

  • Welche Programmiersprachen liegen momentan stark im Trend?
  • Wie war es in der Vergangenheit?
  • Welche Frameworks und Plattformen sind gerade vorherrschend?
  • Wie verteilen sich die Tätigkeiten und Berufsbilder in der Community?
  • Welche Ausbildungshintergründe gibt es?

Architektur von Webanwendungen

Webanwendungen können sehr unterschiedlich aussehen. Das folgende Schaubild kann als Grundgerüst einer prototypischen Architektur dienen, von denen man tendenziell nur in einzelnen Punkten mit einem bestimmten Ziel abweicht. Vor allem auf der Seite der Backend-Technologien kann es aber dennoch auch sehr große Unterschiede geben bis hin zu Anwendungen, in denen hauptsächlich eine Datenbank über eine eigene Serversoftware mit einem Client kommuniziert.

Grafik: Architekturübersicht einer prototypischen Webanwendung

Quelle: Jonatan Jalle Steller

Konzeption der STURM-Webanwendung

In den Digital Humanities wird eine Vielzahl verschiedener Webanwendungen entwickelt, von projektspezifischen Editionswebsites über Tools zur Analyse für Korpora oder Graphdatenbanken bis hin zu generischen Softwarelösungen, die auch über die Grenzen der Geistes- und Kulturwissenschaften hinaus in Schwerpunkte wie z.B. Wissensmanagement, GLAM-Institutionen (Galleries, Libraries, Archives, and Museums) oder Geowissenschaften hineinreichen. Mit der Etablierung des Fachs in der deutschen Wissenschaftslandschaft ist eine Tendenz zur Forderdung nach wiederverwendbaren oder auch über lange Zeit pflegbaren Softwarelösungen einhergegangen. Als Experimentierräume sind aber auch kleinere Einzelprojekte ohne konkrete Strategie zur Nachnutzbarkeit weiterhin verbreitet, auch weil Personalstruktur und Finanzsituation in den Geistes- und Kulturwissenschaften oft nichts anderes zulassen.

Zur Vorbereitung einer neuen Webanwendung ist es zunächst üblich, sich einen Überblick über vorhandene Lösungen für die zu bewältigende Aufgabe zu verschaffen und sie auf ihre Passgenauigkeit bzw. ggf. Anpassbarkeit zu prüfen. Im Falle der STURM-Webanwendung, die wir im Verlauf dieses Moduls entwickeln wollen, handelt es sich um eine experimentelle Publikationsumgebung für eine Edition, deren Inhalte bereits in einer „echten“ STURM-Edition veröffentlicht wurden und von dort per Schnittstelle (API) abrufbar sind.

„Der Sturm“ bezeichnet ein Berliner Publikationsorgan und angrenzende Projekte zu avantgardistischer Literatur, Poesie, Kunst und Theorie der Kunstgeschichte, die von 1910 bis 1932 auch eine bewegte politische Geschichte erlebten. Die aktuell verfügbare Onlinepublikation enthält Briefe und andere Schriften von Künstler:innen. Die Briefe und zugehörige Register möchten wir auch in unserer Beispiel-Webanwendung verfügbar machen.

Mindmaps, Flowcharts und Wireframes

Dem Bau einer Editionsseite geht für gewöhnlich eine Konzeptions- und Gestaltungsphase voraus, die wir hier nur sehr verkürzt durchlaufen werden. Zu diesem Zweck verschaffen wir uns einen schnellen Überblick über die „echte“ STURM-Edition und entwerfen dann eine Mindmap (Mindmaps) der Navigation und ein paar schnelle Wireframes (Draw.io, quickMockup), wie die Seite unserer anfänglichen Vorstellung nach aussehen (user interface, UI) und sich anfühlen (user experience, UX) sollte. Die folgende Informationsarchitektur soll dabei berücksichtigt werden:

  • Startseite
  • Briefübersicht und Brief-Einzelansicht
  • Registerübersichten und Registereintrags-Einzelansicht (Personen, Orte, Werke)
  • Normale Text/Bild Seiten (Projektbeschreibung, Daten, Impressum)

Wer bereits einen Blick in die Struktur der Daten werfen möchte, mit denen wir arbeiten werden, kann sich beispielhaft folgende XML-Datei anschauen: einen Brief von Franz Marc vom 15.03.1915. Üblicherweise würde man vorhandene Ausgangsmaterialien wie diese in der Konzeptionsphase intensiv einbeziehen.

Die folgenden Links könnten im Rahmen des Moduls wiederholt nützlich sein:

Wer möchte kann auch ChatGPT, Bard oder Bing Chat nutzen, um Fragen zu stellen. Dabei sollte man jedoch davon ausgehen, dass die Antworten nicht immer korrekt sein werden und nicht ausführbaren Code enthalten können.