TU Wien:Verteilte Systeme UE (Raith)

Aus VoWi
Zur Navigation springen Zur Suche springen
Ähnlich benannte LVAs (Materialien):

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Alireza FurutanpeyPhilipp Alexander Raith
ECTS 3
Alias Distributed Systems (en)
Letzte Abhaltung 2022W
Sprache Deutsch
Mattermost verteilte-systemeRegisterMattermost-Infos
Links tiss:184167, eLearning
Zuordnungen
Bachelorstudium Wirtschaftsinformatik
Bachelorstudium Medieninformatik und Visual Computing
Bachelorstudium Medizinische Informatik
Bachelorstudium Software & Information Engineering
Bachelorstudium Technische Informatik


Inhalt[Bearbeiten | Quelltext bearbeiten]

Das Ziel dieser Lehrveranstaltung besteht darin, zentrale Konzepte wie Sockets, Multithreading und Java RMI in einer verteilten Systemarchitektur praktisch anzuwenden. Studierende werden dabei herausgefordert, eine Reihe von Clients und Servern mithilfe von Java zu implementieren. Die Kommunikation zwischen diesen Clients und Server erfolgt mithilfe eigener Plaintext-Protokolle. Schwerpunkt ist ebenso die Sicherstellung einer hohen Performance durch Concurrent Programming. Im zweiten Aufgabenteil wird die Sicherheit der implementierte Protokolle durch kryptografische Verfahren ergänzt. Insgesamt steht die Anwendung der genannten Konzepte im Mittelpunkt dieser Lehrveranstaltung.

Ablauf[Bearbeiten | Quelltext bearbeiten]

Die Übung besteht aus zwei Aufgabenblättern und einem Test (freiwillig).

  • 1 Einzelbeispiel & Abgabegespräch (15m)
  • 1 Gruppenbeispiel, in 3er Gruppe & Abgabegespräch (45m)
  • 1 UE-Test, freiwillig - TUWEL Multiple-Choice (20 Fragen & 20m)

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]

Ein guter Umgang mit Java wird in dieser LVA vorausgesetzt. Auch sollte das synchronized Keyword aus Java kein Fremdwort sein.

Schwerpunkt dieser LVA liegt in der Programmierung von Sockets, diversen Protokollen (DMAP, DMTP), Remote Method Invocation (RMI), Verschlüsselung (RSA, AES) und Hashing (HMAC).


Hilfreiches Vorwissen:

  • Java Concurrent API (Thread / Runnable)
  • Nebenläufige Programmierung
  • Sockets + Input-, Output-Streams in Java
  • Eigenschaften von TCP und UDP
  • Funktionsweise eines DNS
  • Umgang mit symmetrischen und asymmetrischen Verschlüsselungsverfahren
  • Hashingalgorithmen

...

Vortrag[Bearbeiten | Quelltext bearbeiten]

Zur Übung gab es keinen Vortrag. Es gibt ganz am Anfang eine kurze Einführung wie die LVA abgehalten wird.

Übungen[Bearbeiten | Quelltext bearbeiten]

Assignment 0 - Registration (3 Punkte): Für diese Übung ist es quasi "unumgänglich", dass man sich etwas mit der Materie von Sockets in Java auseinandersetzt. Es soll mithilfe von Sockets auf LVA-seitig gegebene Schnittstellen zugegriffen werden um sich für die LVA offiziell registrieren. Nach der Registrierung erhält man eine Port-Range, welche zum Testen auf den Übungsrechnern verwendet werden müssen, damit man sich nicht mit anderen Studierenden portmäßig nicht in die Quere kommt. Zudem bekommt man nach der Registrierung 3 Punkte gutgeschrieben und es wird ab diesen Zeitpunkt auf jeden Fall ein Zeugnis ausgestellt (vgl. Eingangstest bei anderen LVAen).

Assignment 1 - Einzelübung (32 Punkte): In dieser Übung werden einige Protokolle implementiert, die dem Nachrichtenaustausch zwischen Server/Server und Server/Client dienen. Grundsätzlich kann man sich das Ganze wie eine vereinfachte Implementierung von IMAP (DMAP - DSLab Message Access Protocol) und SMTP (DMTP - DSLab Message Transfer Protocol) vorstellen.

Konkret wird implementiert:

  • DMTP - Ein Protokoll zur Übertragung zwischen Servern (TCP)
  • DMAP - Ein Protokoll für den Zugriff von Nachrichten in einem Postfach (TCP)
  • Transfer Server - Sind für die Weiterleitung der Nachrichten an den Ziel-Mailbox Server zuständig
  • Mailbox Server - Empfangen Nachrichten von Transfer Servern und stellen diese in das entsprechende Postfach zu
  • Monitoring Server - Empfängt Nutzungsstatistiken von Transfer Servern (UDP)

Von vielen dieser Implementierungen wird vorausgesetzt, dass diese parallel (nebenläufig) verarbeitet werden und nicht sequenziell. Die Verwendung von thread-safe Datenstrukturen sowie ein korrekter Umgang mit Programmsynchronisation ist unumgänglich. Es soll auch darauf geachtet werden, kleinstmögliche Sychronisationsbereiche zu definieren, damit die Applikation performant bleibt.

Es wird ein Template bereitgestellt. Dieses behinhaltet aber nur einige Basics. Programmimplementierungen können mit PUTTY, Netcat, etc. getestet werden. Auch werden automatisierte Tests LVA-seitig bereitgestellt, welche aber nur das "Minimum" an Funktionalität abtesten. Beim Abgabegespräch werden viele weitere Tests ausgeführt, welche etwaige Implementierungsfehler aufdeckt. Daher gilt es die Applikation selbständig gut zu testen und sich nicht nur auf die mitgegebenen Tests zu verlassen.

Assignment 2 - Gruppenübung (45 Punkte): tbd

Lab Test (20 Punkte): TUWEL Abschlusstest mit freiwilliger Teilnahme. Der Test erfolgt unüberwacht (quasi Open Book Format), ist jedoch die Zeit mit 20 Minuten relativ knapp bemessen.

Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]

Benotungsschema
S1 U2 B3 G4 N5
≥ 85P ≥ 70P ≥ 60P ≥ 50P < 50P

Ein negatives Zeugnis bei:

Registration (Assigment 0) abgeschlossen und mind. eines der nachfolgenden Punkte zutreffend:

  • Assignment 1: < 15 Punkte
  • Assigment 1 + 2: < 40 Punkte
  • Gesamtpunkte (A0, A1, A2): < 50

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

WS22 - ca. 12 Tage nach dem Abschlusstest

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

noch offen

Unterlagen[Bearbeiten | Quelltext bearbeiten]

noch offen

Tipps[Bearbeiten | Quelltext bearbeiten]

noch offen

Highlights / Lob[Bearbeiten | Quelltext bearbeiten]

noch offen

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

noch offen