Die Studierenden erlernen die Architektur großer Software-Systeme selbstständig zu entwerfen, zu gestalten und zu bewerten. Dies umfasst, neben der logischen Organisation von Funktionalität und Abläufen, der konkreten Zerlegung in Komponenten und Konnektoren auch die Auswahl und Bewertung geeigneter Frameworks.
Im ersten Teil der Vorlesung werden die Konzepte der nebenläufigen Programmierung vorgestellt, aufgefrischt, vertieft und mit Hilfe der Möglichkeiten der Programmiersprache Java und des JDK praktisch in Übungen erprobt und angewendet. Der zweite Teil der Vorlesung bespricht verschiedene aktuelle praktische Anwendungsfelder der nebenläufigen Programmierung in Form kurzer, kompakter Einführungen. Darunter befinden sich Themen wie Betriebssysteme und Nebenläufigkeit am Beispiel Linux, mobile Plattformen und Nebenläufigkeit am Beispiel Android, Map/Reduce und das Hadoop Ökosystem, Web und Nebenläufigkeit, Nebenläufigkeit in Go und Rust, Reactive Extensions (Rx), Cloud, Cluster und verteilte Systeme, Microservice Architekturen, Deep Learning,
Die erfolgreiche Teilnahme an der Vorlesung wird durch die eigenständige Bearbeitung der Übungen dokumentiert und begutachtet. Im zweiten Teil der Vorlesung werden diverse aktuelle Quellen und Präsentationen vorgestellt und diskutiert.
In the first part of the lecture central modeling techniques for the design of components are developed. In the second part of the lecture well known architectural patterns are examined. Students learn to identify their structures, properties and characteristics to understand and recognize these structures as patterns. The third part of the lecture deals with frameworks. Using various scenarios, the use of architectural frameworks is presented and evaluated.
The lecture will take the form of seminars with exercises.