Angestrebte Lernergebnisse / Learning Outcomes
Die Studierenden sind in der Lage, effizient und nachhaltig Softwareapplikationen zu erstellen, indem sie
- in einer bewussten, kriteriengestützten Entscheidung das beste Werkzeug (Sprache, Tool, Methode, Framework) für die aktuelle Aufgabe auswählen,
- bekannte Paradigmen, Technologien, Patterns und Architekturstile für den Entwurf und die Umsetzung eines Softwaresystems nutzen können, sowie
- in der Lage sind, diese problembezogen und pragmatisch anzupassen,
so dass sie digitale Produkte mit hohem Softwareanteil schnell und mit Blick auf spätere Weiterentwicklung herstellen können.
Inhalt
- Konzept von Software-Patterns verstehen
- Idee von Patterns
- Verwendung von Pseudocode
- Schichtenarchitektur
- Rolle der einzelnen Schichten
- Patterns pro Schicht
- Gängige Patterns erkennen, einschätzen können und nutzen
- Basispatterns
- Dependency Injection
- Inversion of Control
- Beyond OOP
- Composition over Inheritance
- Vererbungstiefen
- Weiterführende Konzepte
- Kernprinzipien (Separation of Concerns, …)
- Konzept von Architekturstilen
- Modularisierung, Austauschbarkeit
- Re-Use von Software-Komponenten
- Event-Handling, Event-Patterns, Event-driven Architecture
- Vorlesung
- Gastvortrag externer Referenten
- Seminar
- Übung
- Anwendung auf konkretes Projekt:
- Patterns: gezielt Muster im eigenen Code identifizieren und/oder einbauen; über den Nutzen gemeinsam reflektieren
- Modularisierung für ein Code-Beispiel (eigenes oder vom Dozent vorgegeben) analysieren / umsetzen
- Messaging für eigenes Projekt aufsetzen
Materialien/ Ressourcen
- Blaupausen und Tutorials für Software-Entwicklung (IDEs, Sourcecode-Management, …)
- Vorgefertigte Umgebungen für das Deployment von Software-Prototypen und -Lösungen (insb. Infrastruktur für Continuous Integration / Deployment)
- Modellierungswerkzeuge (digital und/oder Whiteboard)