Kurs »Application Design« (CS23)

Kursverantwortlich
Prof. Dr. Stefan Bente
Sprache
deutsch
Kreditpunkte
3 ECTS
Arbeitsaufwand
40h Kontaktzeit / 50h Selbstlernzeit
Kompetenzcluster
Software Development and Architecture
Gehört zum Modul
Coding Software 2
Teilmodulprüfung
Präsentation, am 2. Freitag im Block (benotet)

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

Lehr- und Lernformen

  • 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)