Aufgabe 1 [Design-Patterns] (10 Punkte)
Wählen sie aus den nachfolgend aufgelisteten Design-Patterns zwei aus und erläutern sie diese näher:
- Strategy (Strategie)
- Facade (Fassade)
- Composite (Kompositum)
- Singleton (Einzelstück)
- Mediator (Vermittler)
- Factory Method (Fabrikmethode)
Aufgabe 2 [Observer-Pattern] (5 Punkte)
Das Observer-Pattern ist durch folgendes Klassendiagramm gegeben:
(… Bild muss noch portiert werden …)
Nehmen sie an, KonkreterObserver
sei bereits als Beobachter von KonkretesSubjekt
registriert. Nun soll KonkretesSubjekt
den Beobachter über den aktuellen Wert eines seiner Attribute benachrichtigen. Dieser Wert wird von der Methode getStatus()
zurückgegeben.
Notieren sie die komplette Reihenfolge der Methodenaufrufe, um eine solche Benachrichtigung im Sinne des Observer-Patterns zu realisieren. Vermerken sie dabei auch, von wem die jeweilige Methode aufgerufen wird.
BONUS: Notieren sie diese Interaktion mit Hilfe eines UML-Sequenzdiagramms.
Aufgabe 3 [SIB-Implementierung] (15 Punkte)
Bis auf import
-Anweisungen sei ein SIB folgendermaßen definiert:
@SIBClass("se2/klausur/WhatSIB")
public class WhatSIB implements Executable {
public static final String[] BRANCHES = {SIB.ERROR, SIB.DEFAULT};
public ContextExpression value = new ContextExpression("${input}", Integer.class, false);
public ContextKey result = new ContextKey("result", Scope.LOCAL, true);
public String trace(ExecutionEnvironment env) {
try {
Integer inc = (Integer) value.evaluate(env);
inc++;
env.put(result, inc);
return SIB.DEFAULT;
} catch (Exception e) {
return SIB.ERROR;
}
}
}
- Welche Rolle spielt die Annotation in Zeile 1?
- Welche Branches und welche Parameter
sind im SIB-Inspektor-Fenster des jABC-Tools sichtbar, wenn im
SLG-Editor (Hauptfenster) ein Exemplar des
WhatSIB
durch Anklicken aktiviert ist? - Wodurch wird die
trace
-Methode aufgerufen? - Auf welcher Datenstruktur basiert der Ausführungskontext
env
? - Welche Ausführungssemantik hat der Methodenaufruf
value.evaluate(env)
? - Welche Ausführungssemantik hat der Methodenaufruf
env.put(result, inc)
? - Welche Bedeutung hat der Rückgabewert vom Typ
String
dertrace
-Methode? - Welche Funktionalität realisiert der
WhatSIB
? (Eine verbale Erklärung genügt. Benutzen sie aber die korrekten Termini zur Bezeichnung der Eingabe- und Ausgabewerte.)
Aufabe 4 [Testen] (15 Punkte)
- Erläutern Sie die Begriffe Black-Box- und White-Box-Testen.
- Wenn ein Test mit optimal gewählten Testfällen (bei 100% Abdeckung) keine Fehler offenbart, ist dann die getestete Software sicher fehlerfrei? Begründen sie!
- Schreiben sie für die Klasse in Abbildung 2 einen Zweigüberdeckungstest (C1) mit JUnit.
public class Coverage {
public int x = 0;
public int y = 0;
public int z = 0;
public void methode01(int a, int b) {
if (a < b) {
x = b;
z = 1;
}
if (a + b < 10) {
y = x + z;
}
else {
y = x + a;
}
}
}
Aufgabe 5 [Enterprise Applications] (15 Punkte)
- Was verstehen sie unter dem Begriff Inconsistent Read?
- Definieren sie den Begriff der Transition im Sinne der Architektur von Enterprise Applications. Erläutern sie die Bedeutung aller definierenden Eigenschaften.
Aufgabe 6 [Das statische Typsystem] (20 Punkte)
Die Sprache JAUS+ ist folgendermaßen definiert.
Syntax in erweiterter BNF:
-
n ::= 0 | [1-9][0-9]*
-
x ::= m | p
-
b ::= true | false
-
e ::= n | b | x | (e+e) | (e*e) | !e
Typsprache in BNF:
-
t ::= int | boolean
Typregeln:
Berechnungsregeln:
- Welche der folgenden Ausdrücke sind in JAUS+ syntaktisch korrekt? (Ankreuzen!)
-
(m+p)
-
(17+(m*2))
-
(p!+(p*false))
-
(p+!(p*false))
-
- Es seien die Variablen
m
undp
wie folgt definiert und initialisiert:
int m = 6;
boolean p = true;
Notieren sie die dadurch definierte Typumgebung! - Weisen sie die Typkorrektheit des Ausdrucks
e=!(!p+(true*p))
mit Hilfe eines Herleitungsbaums nach. - Wird die Information der Typkorrektheit zur Compile-Zeit oder zur Laufzeit gewonnen? Welche Fehler sind dadurch zu welchem Zeitpunkt ausgeschlossen?
- Werten sie diesen Ausdruck
e
mit Hilfe der Berechnungsregeln aus und rechtfertigen sie den ersten Berechnungsschritt mit einem Herleitungsbaum.