Nach erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, die Architektur großer Software-Systeme selbstständig zu entwerfen, zu gestalten und kritisch zu bewerten. Sie können Software in Komponenten und Konnektoren zerlegen, geeignete Frameworks auswählen, deren Einsatz bewerten und Funktionalitäten sowie Abläufe logisch organisieren. Dabei planen und gestalten sie auch parallele und nebenläufige Abläufe und integrieren diese in Architekturen für verschiedene Anwendungsfelder. Darüber hinaus haben die Studierenden ihre technischen, sozialen und persönlichen Kompetenzen sowie ihre Kommunikationsfähigkeit und ihr Selbstmanagement gezielt weiterentwickelt und gelernt, diese Fähigkeiten im Kontext großer Softwareprojekte effektiv einzusetzen.
Das "Parallele Programmierung Labor" vermittelt praxisorientierte Kenntnisse zur nebenläufigen Programmierung und deren Anwendung in verschiedenen modernen Technologien und Systemen.
Im ersten Teil der Veranstaltung werden die Grundlagen der nebenläufigen Programmierung wiederholt, vertieft und durch praktische Übungen mit der Programmiersprache Java und dem Java Development Kit (JDK) angewendet. Dabei erlernen die Studierenden, wie sie nebenläufige Prozesse effizient gestalten und typische Herausforderungen wie Race Conditions oder Deadlocks bewältigen können.
Im zweiten Teil der Veranstaltung wird das Wissen durch kompakte Einführungen in aktuelle Anwendungsfelder der nebenläufigen Programmierung erweitert. Dabei werden verschiedene Technologien und Plattformen beleuchtet, darunter:
Durch die Kombination aus theoretischer Einführung und praktischer Anwendung werden die Studierenden befähigt, nebenläufige Programmierung in unterschiedlichen Kontexten zu verstehen, anzuwenden und weiterzuentwickeln.
Die Literatur des zweiten Teils wird in jedem Semester neu zusammengestellt.
Die erfolgreiche Teilnahme am Labor wird durch die eigenständige Bearbeitung der Übungen dokumentiert und begutachtet. Im zweiten Teil des Labors werden diverse aktuelle Quellen und Präsentationen vorgestellt und diskutiert.
Die Lehrveranstaltung "Software-Architekturen" vermittelt vertiefte Kenntnisse und Fähigkeiten zur Entwicklung und Analyse moderner Software-Architekturen.
Im ersten Teil der Vorlesung werden relevante Prozessmodelle wiederholt und darauf aufbauend Ansätze für eine agile Architekturentwicklung erarbeitet. Studierende lernen verschiedene View-Modelle kennen, vergleichen diese und vertiefen ihre Kenntnisse in Modellierungstechniken für Komponenten und Konnektoren. Bereits erlernte Entwurfsmethoden werden erweitert, insbesondere im Hinblick auf die Nutzung von Szenarien zur Beschreibung und Bewertung nicht-funktionaler Anforderungen.
Im zweiten Teil der Vorlesung stehen elementare Architekturmuster im Fokus, darunter Schichten-Architektur, hexagonale Architektur, Onion-Architektur, Blackboard, Pipes-and-Filters und Event-Driven Architecture. Studierende erlernen die Strukturen, Eigenschaften und Anwendungsmöglichkeiten dieser Muster und verstehen ihre Rolle in typischen Middleware-Konzepten. Die Vorlesung zeigt, wie solche Architekturvorlagen Ansatzpunkte für die Organisation flexibler und evolutionärer Systeme bieten.
Der dritte Teil der Vorlesung widmet sich der Architektur auf Modulebene. Anhand praxisnaher Szenarien und Beispiele wird der Einsatz von Patterns für den Business Layer thematisiert und im jeweiligen Kontext analysiert. Ziel ist es, den Studierenden ein fundiertes Verständnis für die Gestaltung und Bewertung modularer Software-Architekturen zu vermitteln.
Seminaristischer Unterricht, Übungsblätter und Präsentationen