TU Wien:Verteilte Systeme UE (Lachner)

From VoWi
Jump to navigation Jump to search
Similarly named LVAs (Resources):

Daten[edit]

Lecturers Clemens LachnerPhilipp Alexander Raith
ECTS 3
Alias Distributed Systems (en)
When winter semester
Last iteration 2021WS
Language Deutsch
Mattermost verteilte-systemeRegisterMattermost-Infos
Links tiss:184167
Zuordnungen
Bachelor Wirtschaftsinformatik Pflichtmodul INT/SEN - Systems Engineering
Bachelor Medieninformatik und Visual Computing Pflichtmodul Verteilte Systeme
Bachelor Medizinische Informatik Wahlmodul Verteilte Systeme
Bachelor Software & Information Engineering Pflichtmodul Verteilte Systeme
Bachelor Technische Informatik Wahlmodul Verteilte Systeme


Inhalt[edit]

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[edit]

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[edit]

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[edit]

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

Übungen[edit]

- Ü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.

- Ü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[edit]

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[edit]

noch offen

Zeitaufwand[edit]

- Ü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[edit]

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[edit]

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 (auch 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[edit]

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.