Aktuelle Themen der Web-Entwicklung

Software- und Web-Engineering I

Informatik – 3. Semester

Software- und Web-Engineering I · TH Lübeck
Was ihr inzwischen könnt
HTML5 CSS3 JavaScript TypeScript Spring Boot

Struktur, Gestaltung, Verhalten, Typisierung, Abhängigkeitsinjektion, REST und ein Back-End-Framework. Damit habt ihr einen kompletten Stack von Hand gebaut.

Heute geht es um das, was in der Industrie darauf aufsetzt, und um die Frage, die euch seit dem ersten Front-End-Code im Projekt begleitet: warum eigentlich kein React?
Logos: upload.wikimedia.org
Software- und Web-Engineering I · TH Lübeck
1 Frontend-Frameworks
2 SSR, SSG & Hydration
3 KI-gestützte Entwicklung
4 Web-Security-Basics
5 Wie geht es weiter?

Vier Kurzthemen. Nichts davon ist klausurrelevant.

Software- und Web-Engineering I · TH Lübeck
Erinnert ihr euch an A4?

Was in eurem Front-End mühsam war:

  • Nach jeder Datenänderung von Hand die richtigen DOM-Knoten suchen und aktualisieren
  • Der Zustand lag verteilt: teils in Variablen, teils im DOM, teils in data--Attributen
  • Eine vergessene Stelle, und die Anzeige passte nicht mehr zu den Daten
  • Dieselbe Kartenkomponente an drei Stellen leicht unterschiedlich gebaut
Das war keine Ungeschicklichkeit, sondern ein bekanntes Problem. Genau dafür gibt es Frontend-Frameworks.
Software- und Web-Engineering I · TH Lübeck
Die Kernidee: State → View als Funktion

Imperativ (was ihr gemacht habt)

Ihr beschreibt die Schritte: Element suchen, Text setzen, Klasse umschalten, Kind anhängen.

Ihr seid dafür verantwortlich, dass der DOM den Daten folgt.

Deklarativ (Framework)

Ihr beschreibt das Ergebnis: so sieht die Oberfläche für diesen Zustand aus.

Das Framework berechnet die nötigen DOM-Änderungen selbst.

Die Formel lautet view = f(state). Ändert sich der Zustand, wird die Ansicht neu abgeleitet, nicht von Hand nachgezogen.
Software- und Web-Engineering I · TH Lübeck
Dieselbe Liste, zweimal

Vanilla JS (bekannt aus web-05)

function render(items) {
  const ul = document.querySelector("#list");
  ul.innerHTML = "";
  for (const it of items) {
    const li = document.createElement("li");
    li.textContent = it.title;
    ul.appendChild(li);
  }
}

React (nur lesen, nicht lernen)

function List({ items }) {
  return (
    <ul>
      {items.map(it =>
        <li key={it.id}>{it.title}</li>
      )}
    </ul>
  );
}
Links steht, wie die Liste entsteht. Rechts steht, wie sie aussieht. Den Rest erledigt das Framework.
Software- und Web-Engineering I · TH Lübeck
Was ein Framework sonst noch mitbringt

Komponenten

Wiederverwendbare Bausteine mit eigener Logik und eigenem Aussehen.

Zustandsverwaltung

Ein definierter Ort für den Zustand statt verteilter Variablen.

Routing

Mehrere Ansichten ohne vollständigen Seitenwechsel.

Ökosystem

Build-Werkzeuge, Testbibliotheken, Komponentensammlungen.

Nichts davon ist magisch. Alles davon könntet ihr selbst bauen, und in eurem Projekt habt ihr Teile davon selbst gebaut.
Software- und Web-Engineering I · TH Lübeck
Die Kurslandschaft

React

Größte Verbreitung, Bibliothek statt Framework, sehr viele Zusatzentscheidungen.

Vue

Sanfter Einstieg, Template-Syntax nah an HTML.

Angular

Vollständiges Framework, TypeScript und Dependency Injection von Haus aus.

Svelte

Verlagert die Arbeit in den Compiler, wenig Laufzeit-Overhead.

Angular ist der direkte Anschluss an web-09: dieselbe DI-Idee, die ihr bei Spring gesehen habt, im Front-End.
Keine Versionsdetails: diese Folie altert schnell und wird jedes Jahr aktualisiert
Software- und Web-Engineering I · TH Lübeck
Warum der Kurs Frameworks verboten hat

Die Regel war didaktisch, nicht ideologisch:

  • Wer querySelector nie benutzt hat, versteht nicht, was React ihm abnimmt
  • Wer nie eine Fetch-Antwort von Hand ins DOM gebracht hat, debuggt später blind
  • Frameworks wechseln, das darunterliegende Plattformwissen bleibt
Reihenfolge
Erst das Fundament, dann die Abstraktion. Eine Abstraktion, deren Problem man nie hatte, ist nur zusätzliche Komplexität.
Ab jetzt dürft ihr. In SWE II und in euren eigenen Projekten ist ein Framework die normale Wahl.
Software- und Web-Engineering I · TH Lübeck
Der frameworklose Mittelweg

Web Components (web-06)

  • Standard im Browser, keine Abhängigkeit
  • Custom Elements, Shadow DOM, Slots
  • Framework-übergreifend einsetzbar

Aber

  • Kein deklaratives Rendering out of the box
  • Zustandsverwaltung müsst ihr selbst lösen
  • Weniger Werkzeuge und Beispiele
Für ein Design-System oder eine Handvoll wiederverwendbarer Bausteine sind Web Components oft die ruhigere Wahl. Für eine ganze Anwendung greift man meist zum Framework.
Custom Elements und Shadow DOM in web-06
Software- und Web-Engineering I · TH Lübeck
1 Frontend-Frameworks
2 SSR, SSG & Hydration
3 KI-gestützte Entwicklung
4 Web-Security-Basics
5 Wie geht es weiter?

Wo das HTML herkommt, das im Browser ankommt.

Software- und Web-Engineering I · TH Lübeck
Drei Wege zum HTML

CSR
Client-Side Rendering

Server schickt ein fast leeres HTML plus JavaScript. Der Browser baut die Seite.

SSR
Server-Side Rendering

Server baut das fertige HTML pro Anfrage und schickt es.

SSG
Static Site Generation

HTML wird beim Build erzeugt und liegt als Datei bereit.

Das kennt ihr schon

Thymeleaf (web-10) und Handlebars (web-12) sind SSR.

Software- und Web-Engineering I · TH Lübeck
Was jeweils wann ankommt
Erste Anzeige
Gut geeignet für
CSR
spät: erst nach dem JavaScript
Anwendungen hinter dem Login, Dashboards
SSR
früh: HTML kommt fertig angut für Suchmaschinen
Inhalte, die pro Nutzer:in unterschiedlich sind
SSG
sofort: nur eine Datei ausliefern
Blogs, Dokumentation, Marketing-Seiten
Software- und Web-Engineering I · TH Lübeck
Hydration
HTML vom Serversichtbar, aber tot
→
JavaScript lädtFramework startet
→
Ereignisse werden verknüpftSeite wird bedienbar
Hydration
Das Framework übernimmt im Browser das bereits vorhandene, serverseitig erzeugte HTML und macht es interaktiv, statt es neu aufzubauen.
Die Lücke dazwischen ist spürbar: die Seite ist sichtbar, aber Klicks passieren noch nichts. Ein häufig unterschätztes Problem.
Software- und Web-Engineering I · TH Lübeck
Meta-Frameworks verbinden beide Welten
  • Next.js (React), Nuxt (Vue), SvelteKit (Svelte), Analog (Angular)
  • Pro Seite entscheidbar: statisch erzeugen, pro Anfrage rendern oder erst im Browser
  • Routing, Datenabruf und Build gehören zum Paket
Der Trend geht nicht zu „alles auf dem Server“ oder „alles im Browser“, sondern zur Wahl pro Seite.
Herstellerdokumentation; Details altern schnell und werden jährlich aktualisiert
Software- und Web-Engineering I · TH Lübeck
Warum das überhaupt gemessen wird

Largest Contentful Paint

Wann ist der größte sichtbare Inhalt da?

Interaction to Next Paint

Wie schnell reagiert die Seite auf Eingaben?

Cumulative Layout Shift

Springt das Layout beim Laden?

Diese Werte sind messbar, vergleichbar und beeinflussen die Sichtbarkeit in Suchmaschinen. Deshalb ist die Frage „wo entsteht das HTML“ eine Geschäftsfrage, keine Geschmacksfrage.
Core Web Vitals, web.dev
Software- und Web-Engineering I · TH Lübeck
1 Frontend-Frameworks
2 SSR, SSG & Hydration
3 KI-gestützte Entwicklung
4 Web-Security-Basics
5 Wie geht es weiter?

Ehrlich über das, was die meisten von euch längst benutzen.

Software- und Web-Engineering I · TH Lübeck
Wo Assistenten stark sind

Gut

  • Wiederkehrendes Gerüst: DTOs, Konfiguration, Boilerplate
  • Testfälle zu vorhandenem Code
  • Fremden Code erklären lassen
  • Fehlermeldungen einordnen
  • Erste Fassung, die man selbst überarbeitet

Schwach

  • Die richtigen Anforderungen finden
  • Architekturentscheidungen mit Folgen
  • Konsistenz über viele Dateien hinweg
  • Alles, was Domänenwissen aus eurem Projekt braucht
  • Erfundene Bibliotheken und Methoden, überzeugend formuliert
Software- und Web-Engineering I · TH Lübeck
Der Bogen zum Semester
Ein Assistent kann euch Code schreiben. Er kann nicht wissen, was eure Nutzer:innen brauchen.
  • Anforderungen und Anwendungsszenarien (P2) entstehen aus Gesprächen, nicht aus Prompts
  • Die MVP-Auswahl (P4) ist eine Entscheidung über Wert und Aufwand in eurem Kontext
  • Die Architektur muss zu eurem Team passen, nicht zum Durchschnitt des Trainingsdatensatzes
Die Anforderungsarbeit bleibt eure Arbeit. Genau sie ist der Teil des Berufs, der nicht wegautomatisiert wird.
Anforderungserhebung in swt-04 und swt-05
Software- und Web-Engineering I · TH Lübeck
Verantwortung bleibt bei euch
  • Ihr gebt Code ab, den ihr erklären können müsst: im Praktikum wird genau danach gefragt
  • Generierter Code ist ungeprüfter Code, bis ihn jemand gelesen und getestet hat
  • Lizenz- und Datenschutzfragen: was ihr in ein Werkzeug eingebt, verlässt euren Rechner
  • Prüfungsrechtlich gelten die Regeln des Kurses und der Hochschule, nicht die Gewohnheit
Die Präsentationskriterien in P4 prüfen Hintergrundwissen. Wer den eigenen Code nicht erklären kann, verliert dort Punkte, unabhängig davon, wie er entstanden ist.
Software- und Web-Engineering I · TH Lübeck
Diskussion

In die Runde gefragt, ehrlich und ohne Bewertung:

  • Wofür habt ihr im Projekt Assistenten benutzt?
  • Wo hat es euch wirklich Zeit gespart?
  • Wo habt ihr am Ende mehr Zeit mit Nachbessern verbracht als gespart?
5 Min
Software- und Web-Engineering I · TH Lübeck
1 Frontend-Frameworks
2 SSR, SSG & Hydration
3 KI-gestützte Entwicklung
4 Web-Security-Basics
5 Wie geht es weiter?

Drei Angriffe, die euer Projekt heute betreffen.

Software- und Web-Engineering I · TH Lübeck
Cross-Site Scripting (XSS)

Der Angriff: Fremder Text landet als Code in eurer Seite.

// Kommentar aus einem Formular
el.innerHTML = kommentar;

Enthält kommentar ein <script> oder ein
<img onerror="...">, führt der Browser es aus.

Die Gegenmaßnahme:

el.textContent = kommentar;
  • textContent schreibt Text, niemals Markup
  • Frameworks maskieren beim Rendern automatisch
  • Wer die Maskierung umgeht, ist wieder angreifbar
Das betrifft euer Projekt direkt: innerHTML mit Daten aus einem Eingabefeld ist der häufigste XSS-Weg.
OWASP Top Ten · innerHTML in web-05
Software- und Web-Engineering I · TH Lübeck
SQL-Injection

Der Angriff: Eingaben werden Teil der Abfrage.

"SELECT * FROM users WHERE name = '"
  + name + "'"

Mit name = ' OR '1'='1 liefert die Abfrage alle Datensätze.

Die Gegenmaßnahme: Werte binden statt zusammenkleben.

  • JPA und TypeORM erzeugen parametrisierte Abfragen
  • Repository-Methoden und Query-Parameter sind bereits sicher
  • Gefährlich wird es erst bei selbst gebautem SQL
Wer Spring Data oder TypeORM so benutzt, wie es in web-10 und web-12 gezeigt wurde, ist hier bereits geschützt.
OWASP Top Ten · Repositories in web-10, ORM in web-12
Software- und Web-Engineering I · TH Lübeck
Unsichere Eingaben und Authentifizierung

Typische Fehler

  • Nur im Front-End validieren
  • Passwörter im Klartext speichern
  • Autorisierung nur über eine ausgeblendete Schaltfläche
  • Geheimnisse im Repository

Im Kurs-Stack

  • Validation Pipes und DTO-Validierung (web-12)
  • Spring Security mit gehashten Passwörtern (web-10)
  • Prüfung im Back-End, bei jeder Anfrage
  • Konfiguration über Umgebungsvariablen
Front-End-Validierung ist Bedienkomfort, keine Sicherheit. Wer die Anfrage direkt schickt, umgeht sie vollständig.
OWASP Top Ten · Spring Security in web-10, Validation in web-12
Software- und Web-Engineering I · TH Lübeck
Der Merksatz
Frameworks schützen euch nur so lange, wie ihr sie nicht umgeht.

Die drei typischen Umgehungen:

  • innerHTML statt textContent, weil Markup gebraucht wird
  • Selbst gebautes SQL statt Repository-Methode, weil die Abfrage komplizierter war
  • Ein Endpunkt ohne Berechtigungsprüfung, weil er „nur intern“ benutzt wird
Wenn ihr eine Abkürzung nehmt, schreibt einen Kommentar dazu, warum sie sicher ist. Wenn euch keiner einfällt, ist sie es nicht.
Software- und Web-Engineering I · TH Lübeck
1 Frontend-Frameworks
2 SSR, SSG & Hydration
3 KI-gestützte Entwicklung
4 Web-Security-Basics
5 Wie geht es weiter?

Das Semester läuft aus, die Themen nicht.

Software- und Web-Engineering I · TH Lübeck
Wie es weitergeht

Im Studium

  • SWE II: baut auf diesem Stack auf
  • Projekte und Praktika: hier zahlt sich Plattformwissen aus
  • Abschlussarbeiten mit Web-Anteil

Selbst weitermachen

  • Ein kleines Framework-Projekt bauen: euer Projekt-Front-End noch einmal, diesmal mit React oder Vue
  • MDN als Referenz, nicht als Tutorial-Sammlung
  • Den eigenen Projektcode in einem halben Jahr noch einmal lesen
Der Unterschied zwischen „kann ein Framework bedienen“ und „versteht Web-Entwicklung“ ist genau das, was ihr dieses Semester aufgebaut habt.
Software- und Web-Engineering I · TH Lübeck
Nächste Woche

Diese Woche

  • Endabgabe P4 am Sonntag, 17.01.
  • Danach: Abschlussgespräche im Praktikum

Nächste Woche

  • Projekt-Pitches in der Vorlesung
  • Hinweise zur Klausuranmeldung
  • Fragen zur Klausur mitbringen
Denkt an die Klausuranmeldung. Die Frist liegt vor dem Prüfungszeitraum und wird nicht verlängert.
Software- und Web-Engineering I · TH Lübeck

Fragen?

Software- und Web-Engineering I · TH Lübeck

- Vorletzte Mi-Vorlesung, Endabgabe P4 am Sonntag darauf (17.01.) - Bewusst leichterer Termin in der Endphase der Umsetzung - Vier Kurzthemen statt eines Monolithen

- Kurz wuerdigen, was sie geschafft haben, das ist ehrlich gemeint - Direkt die React-Frage ansprechen, sie kommt sonst als Zwischenruf

- Ausdruecklich sagen, dass nichts davon in der Klausur vorkommt - Das nimmt den Druck und erhoeht die Aufmerksamkeit

- An konkrete Erlebnisse aus den Praktika anknuepfen - Wichtig fuer die Motivation: das Problem zuerst, die Loesung danach

- Das ist die eine Idee, die sie mitnehmen sollen - Alles andere an React ist Beiwerk gegenueber dieser Umkehrung

- Code nicht Zeile fuer Zeile erklaeren, nur den Unterschied im Blick zeigen - Ausdruecklich sagen: JSX muessen sie nicht koennen

- Komponenten kennen sie aus web-06 als Web Components - Zustandsverwaltung ist der Punkt, an dem eigene Loesungen am schnellsten kippen

- Keine Empfehlung aussprechen, die Wahl haengt am Team und am Projekt - Bruecke zu web-09 betonen, DI ist kein Back-End-Thema

- Die Aufloesung, auf die sie das ganze Semester gewartet haben - Ehrlich sagen: die Regel war unbequem und trotzdem richtig

- Nicht als Framework-Ersatz verkaufen, sondern als anderen Zuschnitt - Beispiel: Firmen-Designsystem, das in mehreren Frameworks benutzt wird

- Anknuepfen: serverseitiges Templating kennen sie schon

- Vierte Spalte ist der Aha-Moment: SSR ist fuer sie nichts Neues - Der Begriff ist neu, die Sache nicht

- Nicht auswendig lernen lassen, die Logik dahinter reicht - Faustregel: je persoenlicher der Inhalt, desto weniger vorab erzeugbar

- Die tote Phase ist der Punkt, den man erlebt haben muss - Beispiel: Cookie-Banner, der erst nach zwei Sekunden auf Klicks reagiert

- Keine Version, keine API-Details, das altert zu schnell - Kernbotschaft: die Entscheidung ist granularer geworden

- Nur nennen, nicht vertiefen, Details gehoeren nicht in dieses Semester - Bruecke: Performance ist eine Qualitaetsanforderung, vgl. swt-05

- Offener, ehrlicher Ton, keine Verbotsvorlesung

- Die rechte Spalte an einem eigenen Beispiel belegen, wenn moeglich - Der letzte Punkt rechts ist der gefaehrlichste, weil er plausibel aussieht

- Das ist die wichtigste Folie des Abschnitts - Motivierend formulieren, nicht als Drohung

- Klar und ohne Drohgebaerde formulieren - Auf die Kursregeln im Lernraum verweisen

- Ausdruecklich sagen, dass das keine Pruefungssituation ist - Selbst ein eigenes Beispiel beisteuern, das senkt die Hemmschwelle - Erfahrungsgemaess kommt viel bei „mehr Zeit mit Nachbessern“

- Bewusst nur drei, dafuer mit konkretem Bezug zum Kurs-Stack

- Direkt in ihrem eigenen Code zu finden, das macht es konkret - Kurz zeigen, wie ein onerror-Payload aussieht, nicht ausfuehrlich

- Entwarnung ist hier ehrlich: ihr ORM schuetzt sie - Aber: native queries und String-Konkatenation heben den Schutz auf

- Der Merksatz unten ist die Botschaft des Abschnitts - Kurz zeigen, wie leicht man eine Anfrage mit curl direkt schickt

- Der letzte Satz ist eine brauchbare Heuristik fuer die Praxis - Verweis auf die Code-Qualitaetskriterien der P4 im Leitfaden

- Ruhiger Abschluss

- Ehrlich motivierend abschliessen - Der Vorschlag, das eigene Front-End mit einem Framework nachzubauen, ist praktisch und machbar

- Konkrete Daten aus dem Terminplan einsetzen - Anmeldefrist ausdruecklich nennen, das wird jedes Jahr vergessen

- Zeit fuer Rueckfragen lassen - Falls keine kommen: nach Wuenschen fuer die Pitch-Vorlesung fragen