Learning Outcomes
(WAS) Studierende sollen die Vorgehensweisen für die Entwicklung von System-Architekturen kennenlernen,
(WOMIT) indem sie Grundkonzepte der Softwaretechnik und Softwarearchitektur analysieren und anwenden, (WOZU) um eigenständig Softwarearchitekturen entwickeln und bewerten zu können.
Inhalt
- Bedeutung von System-Architekturen
- Beispiele für System-Architekturen
- Vorgehensweise bei der Entwicklung von System-Architekturen (V-Modell)
- Entwurfsprinzipien (SOLID-Prinzpien, Modularität, Abstraktion, ...)
- Domain Driven Design
- Architekturmuster (MVC, Schichten, Client/Server, Microservices, ...)
- Architekturdokumentation, Unified Modelling Language (UML)
- REST und HTTP
- Objektorientierter Entwurf
- Entwurfsmuster (Design Patterns)
- Qualitätsmetriken
- Refactoring
Literatur
- Gernot Starke, Effektive Softwarearchitekturen, Carl Hanser Verlag, 2020
- Ian Sommerville, Software Engineering, Pearson, 2018
- Robert C. Martin, Clean Architecture: A Craftsman's Guide to Software Structure and Design, Addison-Wesley, 2017
- Stefan Tilkov et al. , REST und HTTP: Entwicklung und Integration nach dem Architekturstil des Web, 2015
- Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software, Pearson International, 2003
Erläuterung zur Prüfungsvorleistung
Das erfolgreiche Absolvieren des Praktikums im Modul „Entwicklung von Systemarchitekturen“ setzt die regelmäßige Bearbeitung von Übungsaufgaben voraus. Die Aufgabenstellungen orientieren sich inhaltlich an den wöchentlichen Vorlesungen und die Lösungen sind über das ILU online einzureichen, wodurch die physische Anwesenheit nicht erforderlich ist. Im Anschluss werden die Lösungen der Übungsaufgaben in der jeweils folgenden Sitzung gemeinsam mit den Studierenden durchgesprochen.
Diese Art der Vorleistung fördert eine frühzeitige und kontinuierliche Auseinandersetzung mit den Vorlesungsinhalten. Sie leistet einen wesentlichen Beitrag zur systematischen Vor- und Nachbereitung des Lernstoffs und unterstützt damit die langfristige Verinnerlichung der Materie. Die Diskussion der eingereichten Lösungen vor jeder neuen Vorlesung ermöglicht Studierenden, zeitnah Rückmeldung zu ihrem Lernfortschritt zu erhalten. Dies eröffnet die Möglichkeit Wissenslücken aufzudecken, um sich effektiver auf Prüfungen vorzubereiten zu können.
Geförderter Kompetenzerwerb
Das Modul zahlt auf folgende Handlungsfelder und Kompetenzbereiche ein. Eine ausführliche Beschreibung der konkreten Komptenzen finden Sie weiter unten.
Designing for User Experiences
Developing Interactive and Distributed Systems
Exploring Advanced Interactive Media
Enhancing Interactions on Different Scales
Designing for User Experiences
-
Konzepte
-
Haben ein ausgeprägtes konzeptionelles Denkvermögen entwickelt, um komplexe Probleme zu analysieren, innovative Lösungsansätze zu konzipieren und diese in verständliche und erfahrbare Konzepte zu überführen.
-
Kennen Grundlagen des Interaktionsdesigns wie Modellierung von Benutzerflüssen, Erstellung von Wireframes und Prototypen, etc. und können diese in konkreten Projekten anwenden.
-
Können angemessene Informationsarchitekturen entwicklen, evaluieren, iterieren und optimieren.
-
Gestaltung
Developing Interactive and Distributed Systems
-
Technologie
-
Kennen State-of-the-art Technologie zur Umsetzung von software-basierten Anwendungen (insb. in den Bereichen Web, Mobile, IoT, AR/VR, AI), können konkurrierende alternative Technologien auswählen und evaluieren, sich neue technologische Möglichkeiten erschließen, diese bewerten, nutzen, und integrieren sowie zukunftsorientiert neue Möglichkeiten screenen.
-
Wissen wie Kommunikation zwischen Computern realisiert wird (bspw. req/res, pub/sub und Protokolle wie HTTP, MQTT).
-
Wissen was ein Computer ist und wie Software darauf ausgeführt wird.
-
Entwurf
-
Verstehen formale Strukturen.
-
Können abstrahieren, logisch denken und komplexe Zusammenhänge verstehen.
-
Können Aspekte realweltlicher Probleme zu identifizieren, die für eine informatische Modellierung geeignet sind, algorithmische Lösungen für diese (Teil-)Probleme bewerten und selbst so zu entwickeln, dass diese Lösungen mit einem Computer operationalisiert werden können.
-
Konzepte (bspw. Paradigmen, Architekturen, Pattern) für die web-basierte Verteilung von Komponenten (bspw. Frontend/Clients/Apps, Backend/Server/Cloud) für verteilte interaktive Anwendungen kennen und umsetzen können.
-
Implementierung
-
Kennen Entwicklungsumgebungen, Tools und entwicklungsnahe Prozesse und diese praktisch nutzen (insb. IDE, Compiler, Linker, Libraries, Debugging, Unit-Testing, Repositories für eigenen Code / git, Build Tools, Paketmanager).
-
Können (komplexe) Softwaresysteme im Team entwickeln.
-
Kennen Grundkonzepte agiler Entwicklung und agilen Arbeitens wie iterative und inkrementelle Entwicklung, selbstorganisierte Teams, Transparente Kommunikation, etc. und können diese in Projekten anwenden.
Enhancing Interactions on Different Scales
-
Selbstlernen
-
Können wissenschaftlich Arbeiten und Schreiben.
-
Können sich selbstständig neue Wissens- und Kompetenzbereiche zu Methoden, Technologien oder Domänen erschließen.
In der linken Spalte sehen Sie, welche Kompetenzen für das Modul vorausgesetzt werden (hellgrauer Balken). In der rechten Spalte sehen Sie, welche Kompetenzen Sie mit dem Modul erwerben können (farbiger Balken). Die Kompetenzen sind in Handlungsfelder und Bereiche gegliedert.
Wenn Sie auf den grauen oder farbigen Balken klicken, gelangen Sie zu einer Liste von Modulen, die auf diese Kompetenz einzahlen. Hier finden die eine Übersicht über alle Kompetenzen und die Module, die auf diese einzahlen.