TU Wien:Verteilte Systeme UE (Lachner)

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

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Clemens LachnerPhilipp Alexander Raith
ECTS 3
Alias Distributed Systems (en)
Letzte Abhaltung 2021W
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]

Die LVA vermittelt die Grundkonzepte von Networking (TCP&UDP mittels Sockets), Security (RSA&AES), Multithreading (Thread, ThreadPool), Hashing (HMac) und die Kommunikation von Java-Programmen übers Netzwerk mittels RMI.

Ablauf[Bearbeiten | Quelltext bearbeiten]

Es sind insgesamt drei Übungen zu absolvieren, wobei die dritte Übung in Gruppen zu drei Personen absolviert wird. Nach der zweiten und der dritten Übung gibt es jeweils ein Abgabegespräch mit einem Tutor. Abschließend gibt es eine kleine Multiple-Choice-Prüfung.

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

Solide Java-Kenntnisse (OOP, zumindest EP2) sind hilfreich, da man dann schon einmal mit Multithreading in Berührung gekommen ist. Ansonsten ist es ein leichter Vorteil, Introduction to Security bereits gemacht zu haben, da man dann mit RSA und AES etwas vertraut ist.

Vortrag[Bearbeiten | Quelltext bearbeiten]

Es gibt in dem Sinne keinen Vortrag, es werden allerdings auf TUWEL und in den Aufgabenblättern hilfreiche Ressourcen verlinkt.

Übungen[Bearbeiten | Quelltext bearbeiten]

- Übung 1 dient zur Zuweisung einer persönlichen Port-Range auf den Lab-Servern, damit dort später die eigenenen Programme getestet werden sollen. Dazu wird ein erstes kleines Programm geschrieben, das Sockets verwendet und die persönlichen Daten zur Registrierung an einen Server schickt. Tipp: https://www.youtube.com/watch?v=-xKgxqG411c

- Übung 2: Hier wird eine Art Email-System entworfen. Es wird ein Transfer Server programmiert, der Nachrichten an gewisse Zielpersonen entgegennimmt. Diese Nachrichten werden an den entsprechenden Mailbox Server weitergeleitet. Dort können sich User einloggen und ihre Nachrichten einsehen. Hier macht man sich intensiv mit den neuen Konzepten vertraut, was schon eine gewisse Zeit dauern kann.

- Übung 3: Diese findet in Gruppen zu 3 Personen statt. Als Basis dient die Lösung von Übung 1, also stellt eines der Gruppenmitglieder seine Lösung zur Verfügung. Die gesamte Struktur wird nun durch Hashing, Verschlüsselung der Kommunikation zwischen Mailbox und User und durch RMI erweitert. Da man sich die Arbeit hier gut aufteilen kann und nicht so viele neue Konzepte individuell zu bearbeiten sind, dauert es etwas kürzer als Übung 1.

Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]

War im Corona-Semester 2021W ein Multiple-Choice TUWEL Test, Open Book, ohne Zoom Meeting. Es war für die Beantwortung von 20 Fragen 20 Minuten Zeit. Die Prüfung ist nicht verpflichtend, wenn man bereits mit den Punkten aus den Übungen positiv ist. Trotzdem ist ein Antritt stark zu empfehlen, da die Fragen sehr nah den in den Übungen behandelten Themen sind. Mit einer Stunde Merkzettel schreiben sind 75% locker drin, wenn man die Übungen ordentlich gemacht und verstanden hat. Auf die Prüfung können 20 Punkte erhalten werden.

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

noch offen

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

- Übung 1: etwa 1 Stunde. 3 Punkte erhältlich.

- Übung 2: etwa 4-5 Tage. 32 Punkte erhältlich.

- Übung 3: etwa 3 Tage. 45 Punkte erhältlich.

- Prüfung: kaum Vorbereitung nötig, das Vorwissen aus den Abgabegesprächen reicht; zudem Open Book; etwa 1 Stunde

Unterlagen[Bearbeiten | Quelltext bearbeiten]

Für das zweite Übungsbeispiel gibt es ein Python-Testprogramm, dass die programmierte Server-Client-Struktur mit Nachrichten bombardiert. Hiermit lässt sich gut testen, ob das Multithreading korrekt implementiert worden ist.

Vor der Abgabe empfiehlt es sich, die Tests noch einmal auf den Lab Servern durchlaufen zu lassen. Da dies etwas umständlich ist, gibt es unten in den Materialen eine Erklärung, wie das funktioniert.

Tipps[Bearbeiten | Quelltext bearbeiten]

Vor allem Übung 2 sollte rechtzeitig begonnen werden, sodass man eine solide Lösung besitzt, auf die Übung 3 dann aufbauen kann.

Es gibt immer wieder Lab Hours, in denen Tutoren bei Problemen helfen können. Nahe der Abgabefristen sind diese natürlich überlaufen, deswegen empfiehlt es sich, eher früher anzufangen.

Ansonsten, wie bei allen Gruppenarbeiten, ist es zu empfehlen, sich für Übung 3 eine verlässliche Gruppe zu suchen.

Das Abgabgegespräch bei der zweiten Übung war recht entspannt, sofern man den Code selber geschrieben hat und ein bisschen Hintergrundwissen hat sollte es kein Problem sein.

Im dritten Abgabegespräch wurde aber überraschend viel Theorie sehr genau abgeprüft (vor allem zu den Codeteilen die man nicht selber geschrieben hat)! Es empfiehlt sich deswegen, sich den Code und die theoretischen Konzepte gegenseitig zu erklären und auch selbst ein bisschen Recherche zu den angesprochenen Themen (also Kryptographie, Hashing, RMI) zu betreiben. Unter anderem wurden Fragen gestellt wie: Was ist RMI? Was ist Base64, wie funktioniert es, warum verwendet man es? Was sind die Vor- und Nachteile von asymmetrischer/symmetrischer Verschlüsselung? Was sind die Vor- und Nachteile von rekursiven und iterativen Lookups bei Nameservern? etc.

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

Die Abwicklung der gesamten LVA läuft sehr kompetent und angenehm. Ein Kollege hat jedoch den Umstand sehr kritisiert, dass die in der LVA vermittelten Sicherheitskonzepte (RSA, AES), so wie sie in den Übungsbeispielen realisiert waren, nicht sicher sind. Man muss sich also dessen bewusst sein (und das wird auch in den Angaben angemerkt), dass die vermittelten Security-Konzepte stark vereinfacht sind und nicht so 1:1 in der realen Welt implementiert werden sollen.