Software Engineering II

  • Type: Exam (PR)
  • Semester: WS 22/23
  • Time: Mo 2023-02-20
    13:00 - 15:00, once
    Übersicht gebuchte Klausuren
    Virtuell


    Mo 2023-02-20
    13:00 - 15:00, once
    30.21 Gerthsen-Hörsaal
    30.21 Gerthsen-Hörsaalgebäude (EG)

    Mo 2023-02-20
    13:00 - 15:00, once
    50.35 Fasanengarten-Hörsaal (HS a.F.)
    50.35 Fasanengarten-Hörsaalgebäude (EG / 1. OG)

    Mo 2023-02-20
    13:00 - 15:00, once
    30.95 Forum Hörsaal (Audimax)
    30.95 Hörsaal-Gebäude am Forum (AUDIMAX) (EG)


  • Lecturer: Prof. Dr. Ralf Reussner
  • SWS: 4
  • Lv-No.: 7500054
Voraussetzungen

Empfehlungen:

Die Lehrveranstaltung Softwaretechnik I sollte bereits gehört worden sein.

Beschreibung

Die Studierenden erlernen Vorgehensweisen und Techniken für systematische Softwareentwicklung, indem fortgeschrittene Themen der Softwaretechnik behandelt werden.

Literaturhinweise

Craig Larman, Applying UML and Patterns, 3rd edition, Prentice Hall, 2004. Weitere Literaturhinweise werden in der Vorlesung gegeben.

Arbeitsbelastung

Vor- und Nachbereitungszeiten 1,5 h / 1 SWS

Gesamtaufwand:
(4 SWS + 1,5 x 4 SWS) x 15 + 30 h Klausurvorbereitung = 180 h = 6 ECTS

Ziel

Softwareprozesse: Die Studierenden verstehen die evolutionäre und inkrementelle Entwicklung und können die Vorteile gegenüber dem sequentiellen Vorgehen beschreiben. Sie können die Phasen und Disziplinen des Unified Process beschreiben.

Requirements Engineering: Die Studierenden können die Begriffe des Requirements Engineering beschreiben und Aktivitäten im Requirements Engineering Prozess nennen. Sie können Anforderungen nach den Facetten Art und Repräsentation klassifizieren und beurteilen. Sie können grundlegende Richtlinien zum Spezifizieren natürlichsprachlicher Anforderungen anwenden. Sie können den Zweck und die Elemente von Anwendungsfall-Modellen beschreiben. Sie können Anwendungsfälle anhand ihrer Granularität und ihrer Ziele einordnen. Sie können Anwendungsfalldiagramme und Anwendungsfälle erstellen. Sie können aus Anwendungsfällen Systemsequenzdiagramme und Operationsverträge ableiten und können deren Rolle im Software-Entwicklungsprozess beschreiben.

Software-Architektur: Die Studierenden können die Definition von Software-Architektur und Software-Komponenten wiedergeben und erläutern. Sie können den Unterschied zwischen Software-Architektur und Software-Architektur-Dokumentation erläutern. Sie können die Vorteile expliziter Architektur und die Einflussfaktoren auf Architekturentscheidungen beschreiben. Sie können Entwurfsentscheidungen und -elemente den Schichten einer Architektur zuordnen. Sie können beschreiben, was Komponentenmodelle definieren. Sie können die Bestandteile des Palladio Komponentenmodells beschreiben und einige der getroffenen Entwurfsentscheidungen erörtern.

Enterprise Software Patterns: Die Studierenden können Unternehmensanwendungen charakterisieren und für eine beschriebene Anwendung entscheiden, welche Eigenschaften sie erfüllt. Sie kennen Muster für die Strukturierung der Domänenlogik, architekturelle Muster für den Datenzugriff und objektrelationale Strukturmuster. Sie können für ein Entwurfsproblem ein geeignetes Muster auswählen, die Auswahl anhand der Vor- und Nachteile der Muster begründen und das ausgewählte Muster anwenden.

Software-Entwurf: Die Studierenden können die Verantwortlichkeiten, die sich aus Systemoperationen ergeben, den Klassen bzw. Objekten im objektorientierten Entwurf anhand der GRASP-Muster zuweisen und damit objektorientierte Software entwerfen.

Software-Qualität: Die Studierenden kennen die Prinzipien für gut lesbaren Programmcode, können Verletzungen dieser Prinzipien identifizieren und Vorschläge zur Lösung entwickeln.

Modellgetriebene Software-Entwicklung: Die Studierenden können die Ziele und die idealisierte Arbeitsteilung der modellgetriebenen Software-Entwicklung (MDSD) beschreiben und die Definitionen für Modell und Metamodell wiedergeben und erläutern. Sie können die Ziele der Modellierung diskutieren. Sie können die Model-driven Architecture beschreiben und Einschränkungen in der Object Constraint Language ausdrücken. Sie können Fragmente von Modell-zu-Text-Transformationen in einer Template-Sprache ausdrücken. Sie können die Vor- und Nachteile von MDSD abwägen.

Eingebettete Systeme: Die Studierenden können das Prinzip eines Realzeitsystems und warum diese für gewöhnlich als parallele Prozesse implementiert sind erläutern. Sie können einen groben Entwurfsprozess für Realzeitsysteme beschreiben. Sie können die Rolle eines Realzeitbetriebssystems beschreiben. Sie können verschiedene Klassen von Realzeitsystemen unterscheiden.

Verlässlichkeit: Die Studierenden können die verschiedenen Dimensionen von Verlässlichkeit beschreiben und eine gegebene Anforderung einordnen. Sie können verdeutlichen, dass Unit Tests nicht ausreichen, um Software-Zuverlässigkeit zu bewerten, und können beschreiben, wie Nutzungsprofil und realistische Fehlerdaten einen Einfluss haben. Sie können die Zuverlässigkeit eines Systems anhand statistischer Tests bewerten.

Sicherheit (i.S.v. Security): Die Studierenden können die Grundideen und Herausforderungen der Sicherheitsbewertung beschreiben. Sie können häufige Sicherheitsprobleme erkennen und Lösungsvorschläge machen.

Prüfung

Die Erfolgskontrolle erfolgt in Form einer schriftlichen Prüfung im Umfang von 90 Minuten nach § 4 Abs. 2 Nr. 1 SPO.