295

Programmierung · Backend

Backend für Applikationen realisieren

Du programmierst eine REST-Schnittstelle, die Daten in einer Datenbank speichert, Eingaben prüft und nur berechtigten Benutzer:innen Zugriff gibt.

Fortgeschritten Fortgeschritten ca. 30 Std. SelbststudiumApplikationsentwicklung: 2. Lehrjahr · üK
#REST#API#Backend#Spring Boot#ASP.NET Core#ORM#JWT#OpenAPI#HTTP#Integrationstests

Überblick

Worum geht es?

Das Backend ist der Teil einer Applikation, den niemand sieht, auf den sich aber alle verlassen. Du entwirfst eine REST-API mit sinnvollen Ressourcen, HTTP-Methoden und Statuscodes und setzt sie mit einem Framework wie Spring Boot oder ASP.NET Core um. Die Daten speicherst du über ein ORM in einer relationalen Datenbank. Du validierst Eingaben, gibst verständliche Fehler zurück, schützt Endpunkte mit Authentifizierung und Rollen und prüfst alles mit Tests und einer OpenAPI-Dokumentation.

Wofür brauchst du das?

Hinter jeder App und jeder Webapplikation steht ein Backend: Kundenportale, Zeiterfassungen, Lagersysteme. Im Lehrbetrieb wirst du Endpunkte ergänzen, Fehler in der Geschäftslogik suchen und Schnittstellen für andere Teams bereitstellen. Wer saubere APIs baut, macht die Arbeit für Frontend (294), Mobile (335) und Tests (450) deutlich einfacher.

Das solltest du schon können

  • Klassen, Interfaces und Objekte in Java, C# oder einer ähnlichen Sprache sicher einsetzen (Modul 320)
  • Tabellen mit Primär- und Fremdschlüsseln anlegen und mit Daten füllen (Modul 164)
  • SQL-Abfragen mit Joins schreiben und Daten ändern (Modul 106)
  • Grundverständnis von HTTP und JSON, z.B. aus dem Arbeiten mit Postman oder dem Browser

Typische Tools & Technologien

Java mit Spring BootC# mit ASP.NET CoreNode.js mit ExpressJPA / Hibernate / Entity FrameworkMySQL / PostgreSQLPostman / BrunoSwagger / OpenAPIDocker

Lernziele

Was musst du können?

Das sind die Fähigkeiten, die am Ende des Moduls sitzen sollten. Jedes Ziel mit einem Beispiel aus dem Lehrbetrieb.

  1. 1

    Eine REST-Schnittstelle fachlich sauber entwerfen

    Kompetenz A

    Du leitest aus einer Anforderung Ressourcen ab, wählst sprechende URLs im Plural und ordnest jeder Aktion die passende HTTP-Methode und die richtigen Statuscodes zu. So können andere die API nutzen, ohne dich fragen zu müssen.

    Situation

    Ein Sportverein mit 300 Mitgliedern möchte die Hallenbelegung online verwalten. Ein Frontend-Team wartet auf deine API.

    Deine Aufgabe

    Entwirf die Endpunkte für Hallen und Reservationen.

    Gutes Ergebnis

    GET /hallen, GET /hallen/{id}/reservationen?datum=2026-11-03, POST /reservationen (Antwort 201 mit Location-Header), DELETE /reservationen/{id} (204). Eine Doppelbuchung führt zu 409 Conflict mit einer klaren Meldung.

    RessourceHTTP-MethodenStatuscodesPfad- und Query-ParameterIdempotenzDTO
  2. 2

    Endpunkte in einer klaren Schichtenarchitektur umsetzen

    Kompetenz B

    Du trennst Controller (HTTP), Service (Geschäftslogik) und Repository (Datenzugriff). Der Controller nimmt nur Anfragen entgegen und gibt Antworten zurück, Regeln stehen im Service. So bleibt der Code testbar und änderbar.

    Situation

    Im Lagersystem eines Onlinehändlers für Velozubehör steckt die ganze Bestelllogik in einem 600 Zeilen langen Controller.

    Deine Aufgabe

    Setze den Endpunkt POST /bestellungen neu in drei Schichten um.

    Gutes Ergebnis

    BestellController nimmt ein BestellungRequest-DTO an. BestellService prüft den Lagerbestand, berechnet den Total inkl. 8.1 % MWST und speichert über das BestellRepository. Der Controller gibt 201 mit der neuen Bestell-ID zurück.

    ControllerServiceRepositoryDependency InjectionDTO vs. Entity
  3. 3

    Daten über ein ORM in einer relationalen Datenbank speichern

    Kompetenz B

    Du bildest Tabellen als Entity-Klassen ab, definierst Beziehungen und lässt das ORM die SQL-Befehle erzeugen. Du weisst, welche Abfragen dabei entstehen, und erkennst Performance-Fallen.

    Situation

    Die Hallenreservation soll in PostgreSQL gespeichert werden. Jede Reservation gehört zu einer Halle und einem Mitglied.

    Deine Aufgabe

    Lege die Entities an und schreibe eine Abfrage für alle Reservationen einer Halle an einem Tag.

    Gutes Ergebnis

    Entities Halle, Mitglied und Reservation mit @ManyToOne-Beziehungen. Im Repository eine Methode 'findByHalleIdAndDatum(hallenId, datum)'. Im SQL-Log sieht man genau eine Abfrage mit WHERE auf halle_id und datum.

    EntityORMBeziehungen (1:n, n:m)Repository-PatternMigrationenN+1-Problem
  4. 4

    Eingaben prüfen und Fehler einheitlich zurückgeben

    Kompetenz C

    Du validierst jede Anfrage auf dem Server, egal was das Frontend bereits prüft. Fehler gibst du in einem einheitlichen JSON-Format mit passendem Statuscode zurück, statt Stacktraces an den Client zu senden.

    Situation

    Bei der Hallenreservation kommen Anfragen mit Endzeit vor Startzeit und mit nicht existierenden Hallen-IDs an. Der Server antwortet mit 500 und einem Java-Stacktrace.

    Deine Aufgabe

    Sorge für saubere Validierung und Fehlerantworten.

    Gutes Ergebnis

    Bean-Validation-Annotationen auf dem Request-DTO, eine eigene Prüfung 'Ende nach Start' im Service und ein globaler Exception-Handler. Ungültige Daten liefern 400 mit {"feld": "ende", "meldung": "muss nach Start liegen"}, unbekannte Halle 404.

    Serverseitige ValidierungBean Validation / Data AnnotationsException-HandlerFehlerformat (Problem Details)400 vs. 404 vs. 500
  5. 5

    Endpunkte mit Authentifizierung und Rollen schützen

    Kompetenz D

    Du stellst sicher, dass nur angemeldete Personen die API nutzen und dass sie nur das dürfen, was ihre Rolle erlaubt. Passwörter speicherst du nur als Hash, Tokens prüfst du bei jeder Anfrage.

    Situation

    In der Hallenreservation sollen Mitglieder nur eigene Reservationen löschen dürfen, der Vorstand alle.

    Deine Aufgabe

    Sichere die API ab und setze die Regel durch.

    Gutes Ergebnis

    Login unter POST /auth/login liefert ein JWT. Alle anderen Endpunkte verlangen das Token im Authorization-Header. DELETE /reservationen/{id} gibt 403 zurück, wenn das Mitglied nicht Besitzer ist und nicht die Rolle VORSTAND hat. Passwörter liegen als bcrypt-Hash in der Datenbank.

    Authentifizierung vs. AutorisierungJWTRollenPasswort-Hashing (bcrypt)401 vs. 403Secrets in Umgebungsvariablen
  6. 6

    Die API testen und für andere dokumentieren

    Kompetenz E

    Du prüfst Endpunkte mit Postman-Collections und automatisierten Integrationstests, inklusive Fehlerfällen. Aus dem Code erzeugst du eine OpenAPI-Beschreibung, die das Frontend-Team direkt in Swagger UI ausprobieren kann.

    Situation

    Das Frontend-Team der Hallenreservation fragt täglich, welche Felder ein Endpunkt erwartet und welche Fehler kommen können.

    Deine Aufgabe

    Stelle eine Dokumentation und Tests bereit, die mit dem Code mitwachsen.

    Gutes Ergebnis

    Springdoc (Spring Boot) bzw. Microsoft.AspNetCore.OpenApi mit einer Oberfläche wie Swashbuckle oder Scalar (ASP.NET Core) erzeugt eine interaktive Swagger-UI mit allen Endpunkten und Beispielen. Eine Postman-Collection deckt Erfolg, 400, 401, 403 und 409 ab. Fünf Integrationstests mit Testcontainers laufen in der CI bei jedem Push.

    Postman-CollectionIntegrationstestTestdatenbankOpenAPI / SwaggerTestabdeckung der Fehlerfälle

Selbsteinschätzung

Wo stehst du?

Die Kompetenzmatrix zerlegt das Modul in Themenstränge und drei Stufen. Für den Kompetenznachweis solltest du überall mindestens Stufe 2 erreichen. Dein Stand bleibt in diesem Browser gespeichert und färbt Lernweg und Übungen ein.

Tippe auf eine Aussage, um deinen Stand zu setzen: offen unsicher sitzt
A

REST-Schnittstelle entwerfen

Ziel 1

Grundlagen

Fortgeschritten

Erweitert

B

Schichten und Persistenz

Ziel 2Ziel 3

Grundlagen

Fortgeschritten

Erweitert

C

Validierung und Fehlerbehandlung

Ziel 4

Grundlagen

Fortgeschritten

Erweitert

D

Endpunkte absichern

Ziel 5

Grundlagen

Fortgeschritten

Erweitert

E

Testen und dokumentieren

Ziel 6

Grundlagen

Fortgeschritten

Erweitert

Praxisfall

Die Bestell-API für Hofläden

Gian ist im 2. Lehrjahr als Informatiker Applikationsentwicklung bei der Frischvomhof AG in Sursee, einem Startup mit 20 Mitarbeitenden, das Bauernhöfe mit Kundschaft aus der Region verbindet. Heute bestellen Kundinnen und Kunden Eier, Käse und Gemüse per Telefon oder WhatsApp direkt beim Hof. Gian soll das Backend für eine Plattform bauen, auf der Höfe ihre Produkte pflegen und Kunden Bestellungen zur Abholung aufgeben.

  1. Kapitel 1

    Höfe, Produkte, Bestellungen

    Gian legt die Ressourcen /hoefe, /produkte und /bestellungen fest. Sein erster Entwurf enthält Pfade wie /getProdukte und /deleteBestellung, worauf ihn die Teamleiterin im Review auf die HTTP-Methoden hinweist. Er überarbeitet den Entwurf und definiert 201 mit Location-Header für neue Bestellungen und 409, wenn ein Produkt ausverkauft ist. Die OpenAPI-Skizze schickt er dem App-Team, bevor er eine Zeile Code schreibt.

    Ziel 1

  2. Kapitel 2

    Vom Speicher in die Datenbank

    Gian baut die API mit Spring Boot in den Schichten Controller, Service und Repository und startet PostgreSQL per docker compose. Ein Hof hat viele Produkte, eine Bestellung viele Positionen. Die Bestellliste eines Hofs braucht zwei Sekunden, und im Log sieht er für jede Position eine eigene Abfrage, was er mit einem JOIN FETCH behebt. Den Bestandsabzug und das Speichern der Bestellung fasst er in eine Transaktion, damit nie nur die Hälfte gespeichert wird.

    Ziel 2Ziel 3

  3. Kapitel 3

    Minus drei Eier

    Ein Tester bestellt minus drei Eier, und die API erhöht dabei den Lagerbestand. Gian ergänzt die DTOs mit Regeln wie @Positive und prüft im Service, dass das Abholdatum in der Zukunft liegt und auf einen Öffnungstag des Hofs fällt. Bisher kam bei Fehlern ein Stacktrace mit Tabellennamen zurück. Ein globaler Exception-Handler liefert jetzt ein einheitliches Problem-Details-JSON mit einer Liste der fehlerhaften Felder.

    Ziel 4

  4. Kapitel 4

    Nur der eigene Hof

    Gian führt die Rollen KUNDE und HOF ein, speichert Passwörter mit bcrypt und gibt beim Login ein JWT aus. Im Test ändert eine Bäuerin von Hof 3 mit ihrem eigenen Token die Preise von Hof 5, und die API lässt es zu. Gian ergänzt im Service eine Besitzprüfung, die in diesem Fall 403 zurückgibt. Abgelaufene Tokens werden mit 401 abgewiesen, was er mit einem bewusst manipulierten Token prüft.

    Ziel 5

  5. Kapitel 5

    Übergabe ans App-Team

    Gian schreibt 18 Integrationstests mit Testcontainers für Erfolgsfälle, Validierungsfehler, 403 und 409. Dabei deckt ein Test auf, dass eine stornierte Bestellung den Lagerbestand nicht zurückbucht, und er korrigiert den Fehler. In Swagger UI ergänzt er Beispiele für jede Anfrage und jede Fehlerantwort. Das App-Team bindet die Schnittstelle danach in zwei Tagen an, ohne eine einzige Rückfrage zu stellen.

    Ziel 6

Lernweg

Wie lernst du das?

  1. 1

    HTTP verstehen

    ca. 3 Std.

    Bevor du selbst eine API baust, untersuchst du bestehende: Was steht im Request, was in der Response, und warum gibt es welche Statuscodes?

    • Mit Postman eine öffentliche API wie transport.opendata.ch abfragen und Header, Body und Status notieren
    • Für ein Thema deiner Wahl (Bibliothek, Kantine, Werkstatt) Ressourcen und Endpunkte auf Papier entwerfen

    Trainiert Kompetenz A1

    Lernziel1

  2. 2

    Erste API mit dem Framework

    ca. 5 Std.

    Du erzeugst ein Projekt mit Spring Initializr oder 'dotnet new webapi' und setzt erste Endpunkte mit Daten im Speicher um.

    • CRUD-Endpunkte für eine Ressource mit einer Liste im Speicher umsetzen
    • Controller und Service trennen und den Service per Dependency Injection einbinden
    • Alle Endpunkte in einer Postman-Collection festhalten

    Trainiert Kompetenz B1A2

    Lernziel21

  3. 3

    Datenbank anbinden

    ca. 6 Std.

    Du ersetzt die Liste im Speicher durch eine echte Datenbank, die du mit Docker startest, und arbeitest mit Entities und Repositories.

    • MySQL oder PostgreSQL per docker compose starten
    • Zwei Entities mit einer 1:n-Beziehung anlegen und das erzeugte SQL im Log prüfen
    • Eine eigene Abfrage-Methode im Repository ergänzen

    Trainiert Kompetenz B2

    Lernziel3

  4. 4

    Validierung und Fehlerbehandlung

    ca. 4 Std.

    Du machst die API robust: ungültige Eingaben, fehlende Datensätze und Konflikte werden sauber beantwortet.

    • DTOs mit Validierungsregeln versehen
    • Einen globalen Exception-Handler mit einheitlichem Fehlerformat bauen
    • Mit Postman bewusst kaputte Anfragen schicken und die Antworten prüfen

    Trainiert Kompetenz C1C2

    Lernziel4

  5. 5

    Absichern

    ca. 5 Std.

    Du baust Login, Token-Prüfung und Rollen ein und prüfst, dass niemand fremde Daten sehen oder ändern kann.

    • Registrierung mit bcrypt-Hashing und Login mit JWT umsetzen
    • Zwei Rollen definieren und Endpunkte unterschiedlich freigeben
    • Versuchen, mit dem Token von Benutzer A Daten von Benutzer B zu ändern

    Trainiert Kompetenz D1D2D3

    Lernziel5

  6. 6

    Tests, Doku und Abschlussprojekt

    ca. 7 Std.

    Du sicherst deine API mit Tests ab, erzeugst die OpenAPI-Doku und baust ein kleines vollständiges Backend wie im Kompetenznachweis.

    • Integrationstests für Erfolg und drei Fehlerfälle schreiben
    • Swagger UI einbinden und Beispiele ergänzen
    • Ein Backend mit zwei bis drei Ressourcen in einem Tag umsetzen und präsentieren

    Trainiert Kompetenz E1E2E3

    Lernziel625

Üben

Übungen aus der Praxis

Medien-API für die Gemeindebibliothek

Einstieg Einstieg

Die Gemeindebibliothek Muri möchte ihren Katalog (Bücher, DVDs, Hörbücher) über eine API anbieten, damit eine neue Website darauf zugreifen kann.

Weist nach A2B1

  1. Endpunkte für Auflisten, Suchen nach Titel, Anzeigen, Erfassen, Ändern und Löschen entwerfen
  2. Controller, Service und Repository mit einer Datenbanktabelle umsetzen
  3. Alle Endpunkte in Postman testen und die Statuscodes dokumentieren
Tipp anzeigen

Die Suche ist kein eigener Ressourcentyp. Ein Query-Parameter wie '/medien?titel=...' passt besser als '/suche'.

Lösungsskizze anzeigen

Ressource /medien mit GET (Liste, optional gefiltert), GET /{id}, POST, PUT /{id} und DELETE /{id}. Ein Medium hat ID, Titel, Typ, Erscheinungsjahr und Verfügbarkeit. 201 bei Erstellung, 404 bei unbekannter ID.

Spesenabrechnung mit Regeln

Fortgeschritten Fortgeschritten

Ein Elektroinstallationsbetrieb mit 40 Mitarbeitenden digitalisiert die Spesen. Pro Beleg werden Datum, Kategorie, Betrag in CHF und Projekt erfasst. Mahlzeiten über CHF 35 brauchen eine Begründung.

Weist nach B2C2

  1. Entities für Mitarbeiter, Projekt und Spesenbeleg mit Beziehungen anlegen
  2. Validierung umsetzen: Betrag grösser 0, Datum nicht in der Zukunft, Begründung je nach Regel Pflicht
  3. Einheitliches Fehlerformat mit Feldnamen und Meldung zurückgeben
  4. Endpunkt für die Monatssumme pro Mitarbeiter ergänzen
Tipp anzeigen

Einfache Feldregeln gehören auf das DTO. Regeln, die mehrere Felder kombinieren, wie die CHF-35-Grenze, gehören in den Service.

Lösungsskizze anzeigen

SpesenbelegRequest mit Annotationen für Betrag und Datum. Im Service eine Prüfung der Kategorie 'Mahlzeit' mit Betrag über 35 ohne Begründung, die eine eigene ValidationException wirft. Ein globaler Handler wandelt sie in 400 mit Feldfehlern um. Die Monatssumme kommt aus einer Repository-Abfrage mit SUM und GROUP BY.

Terminbuchung für eine Arztpraxis

Anspruchsvoll Anspruchsvoll

Eine Gruppenpraxis in Olten mit vier Ärztinnen will Online-Terminbuchungen anbieten. Patient:innen dürfen nur eigene Termine sehen und stornieren, das Praxisteam alle. Gesundheitsdaten sind besonders schützenswert.

Weist nach A3C3D3E3

  1. API für Ärztinnen, freie Zeitfenster und Termine entwerfen
  2. Doppelbuchungen verhindern und mit 409 beantworten
  3. Login mit JWT und zwei Rollen umsetzen
  4. Integrationstests für Buchen, Doppelbuchung und fremden Termin stornieren schreiben
  5. OpenAPI-Dokumentation mit Beispielen bereitstellen
Tipp anzeigen

Prüfe die Berechtigung nicht nur über die Rolle, sondern auch über den Besitz: Gehört dieser Termin wirklich der angemeldeten Person?

Lösungsskizze anzeigen

Ressourcen /aerztinnen, /aerztinnen/{id}/zeitfenster und /termine. Ein Unique-Constraint auf Ärztin und Startzeit plus Prüfung im Service verhindert Doppelbuchungen. Der Service vergleicht die Patienten-ID aus dem Token mit dem Termin und wirft sonst 403. Tests laufen gegen eine Testcontainers-Datenbank. Logs enthalten keine Diagnosen oder Namen.

Selbstcheck

Kannst du das beantworten?

Welchen Statuscode gibst du nach erfolgreichem Erstellen einer Ressource zurück?

201 Created, idealerweise mit einem Location-Header, der auf die neue Ressource zeigt.

Was ist der Unterschied zwischen 401 und 403?

401: Die Person ist nicht oder ungültig angemeldet. 403: Sie ist angemeldet, hat aber keine Berechtigung für diese Aktion.

Warum gibst du nicht direkt die Entity als JSON zurück?

Sonst landen interne oder sensible Felder wie Passwort-Hashes in der Antwort, und jede Datenbankänderung verändert die API. Ein DTO legt bewusst fest, was nach aussen geht.

Was gehört in den Service und nicht in den Controller?

Die Geschäftslogik, also Regeln, Berechnungen und Prüfungen über mehrere Felder oder Datensätze. Der Controller übersetzt nur zwischen HTTP und Service.

Was ist das N+1-Problem?

Für eine Liste von N Datensätzen werden zusätzlich N einzelne Abfragen für verknüpfte Daten ausgeführt. Lösung: die Daten mit einem Join oder Fetch in einer Abfrage laden.

Wie speicherst du Passwörter richtig?

Nie im Klartext und nie nur verschlüsselt, sondern als langsamer, gesalzener Hash, z.B. mit bcrypt oder Argon2.

Ist PUT idempotent? Und POST?

PUT ja: mehrfach ausgeführt ergibt es denselben Zustand. POST nein: jeder Aufruf kann eine neue Ressource erzeugen.

Prüfung

Stolpersteine & Prüfungstipps

Typische Stolpersteine

  • Für alles 200 OK zurückgeben und Fehler nur im Text der Antwort verstecken.
  • Verben in URLs verwenden, z.B. '/getAllKunden' statt GET /kunden.
  • Datenbank-Passwort oder JWT-Secret im Code einchecken statt in Umgebungsvariablen.
  • Nur prüfen, ob jemand angemeldet ist, aber nicht, ob der Datensatz dieser Person gehört.
  • Stacktraces und SQL-Fehlermeldungen an den Client senden und damit Interna verraten.
  • Ausschliesslich den Erfolgsfall testen und die Fehlerantworten nie anschauen.

Tipps für den Kompetenznachweis

  • Schreibe zuerst eine kurze Endpunktliste mit Methode, URL, Request und Statuscodes. Daran kannst du dich während der Umsetzung halten.
  • Lege früh eine Postman-Collection an und spiele sie nach jeder Änderung komplett durch.
  • Halte die Datenbank in Docker bereit, damit du sie bei Problemen in Sekunden neu aufsetzen kannst.
  • Kommentiere kurz, warum du einen bestimmten Statuscode gewählt hast. Das zeigt Verständnis.

Glossar

Begriffe kurz erklärt

API
Schnittstelle, über die Programme miteinander kommunizieren.
REST
Architekturstil, bei dem Ressourcen über URLs adressiert und mit HTTP-Methoden bearbeitet werden.
Endpunkt
Kombination aus HTTP-Methode und URL, z.B. GET /kunden/42.
DTO
Data Transfer Object: Klasse, die genau die Daten enthält, die über die Schnittstelle gehen.
ORM
Object-Relational Mapping: bildet Datenbanktabellen auf Klassen ab und erzeugt das SQL automatisch.
JWT
JSON Web Token: signiertes Token, das die Identität und Rollen einer angemeldeten Person enthält.
Dependency Injection
Das Framework übergibt einer Klasse ihre Abhängigkeiten, statt dass sie sie selbst erzeugt.
OpenAPI
Standardformat zur Beschreibung von REST-Schnittstellen, aus dem z.B. Swagger UI eine interaktive Doku erzeugt.

Mit KI-Tutor

Jeder Kurs hat einen persönlichen KI-Tutor

  • Erklärt in deinem Tempo
  • Debuggt mit dir
  • Fachgespräch wie im QV
  • Unbegrenzt neue Übungen

Denkanstösse statt fertiger Lösungen. In der Gratis-Lektion zum Ausprobieren.

KI-Tutor · Modul 164Nur Tipps

Mein JOIN liefert plötzlich doppelte Zeilen. Was mache ich falsch?
Gute Frage! Schau dir die Spalte an, über die du verbindest: Ist sie in beiden Tabellen eindeutig? Was passiert mit einer Kundin, die zwei Bestellungen hat?
Ah, dann kommt sie zweimal vor …
Genau. Willst du die Bestellungen zählen oder nur die Kundinnen sehen? Je nachdem hilft dir GROUP BY oder DISTINCT.

Tutavio

So helfen wir dir bei Modul 295

  • Wir entwerfen mit dir die Endpunktliste deines ÜK-Projekts und prüfen Methoden, URLs und Statuscodes, bevor du programmierst.
  • Wir helfen dir, Fehler zwischen Controller, ORM und Datenbank zu finden, z.B. anhand des SQL-Logs und der Postman-Antworten.
  • Wir richten mit dir JWT-Login und Rollen ein und testen gemeinsam, ob sich fremde Daten wirklich nicht ändern lassen.
  • Vor der Abgabe machen wir ein Code-Review mit Fokus auf Schichtentrennung, Validierung und Tests der Fehlerfälle.

Unverbindlich anfragen. Wir melden uns innert 24 Stunden.

Tutor:in für Modul 295 finden

Passende Module

Diese Seite ist eine eigene Lernhilfe von Tutavio und keine offizielle Modulbeschreibung. Nummer, Titel und Einordnung stammen aus den öffentlichen Bildungsplänen. Die verbindliche Modulidentifikation findest du im Modulbaukasten von ICT-Berufsbildung Schweiz.

Gratis-LektionNachhilfe