Software Engineering II 2011

Aufgabe 1 [Enterprise-Architekturen] (14 Punkte)

  1. Nennen und Erläutern sie 3 Merkmale von Enterprise-Architekturen. (6 Punkte)
  2. Jede Transaktion sollte die ACID-Eigenschaften erfüllen. Erläutern sie die Abkürzung ACID. (4 Punkte)
  3. Beschreiben sie pessimistisches und optimistisches Locking. Wozu wird es eingesetzt? (4 Punkte)

Aufgabe 2 [Typen] (16 Punkte)

Betrachten sie die Sprache ganzzahliger Ausdrücke, deren Syntax in erweiterter BNF folgendermaßen definiert ist:

  • u ::= 0 | [1-9][0-9]*
  • n ::= u | -u
  • var ::= [a-z][a-z]*
  • e ::= n | var | (e+e) | -e

Es wird also zwischen vorzeichenfreien (u) und beliebigen (v) ganzzahligen Literalen unterschieden. Ausdrücke (e) sind ganzzahlige Literale, Variablen oder zusammengesetzte Ausdrücke. Die zusammengesetzten Ausdrücke entstehen durch Anwendung des zweistelligen +-Operators für die Addition ganzer Zahlen oder des einstelligen --Operators für den Vorzeichenwechsel.

Definieren sie geeignete Typregeln für diese Ausdruckssprache, wobei zwischen Typen unsigned und int unterschieden werden soll:

t ::= unsigned | int

Variablen dürfen für jeden dieser beiden Typen definiert werden, vorzeichenfreie Literale sind zunächst vom Typ unsigned, andere Literale vom Typ int. Eine Umwandlung von unsigned in int ist zulässig, die umgekehrte Umwandlung jedoch nicht, auch nicht durch Vorzeichenwechsel. Alle Ihre Typregeln sollen Typumgebungen berücksichtigen.

Aufgabe 3 [Testen] (23 Punkte)

  1. Unterscheiden sie statische und dynamische Verifikations- und Validierungsverfahren. Nennen sie jeweils 2 statische und dynamische Verfahren. (6 Punkte)
  2. Erläutern sie kurz das traditionelle Vorgehen beim Testen. Sie können diese Aufgabe auch mit Hilfe eines Blockdiagramms beantworten. (4 Punkte)
  3. Was ist ein Systemtest? (3 Punkte)
  4. 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! (2 Punkte)
  5. Schreiben sie für die Klasse in Abbildung 1 einen Unit-Test mit JUnit Dabei sollen sie folgende Eigenschaften prüfen (8 Punkte):
    • Testen sie das Anlegen eines Kontos.
    • Testen sie, ob Geld eingezahlt oder abgehoben werden kann.
    • Testen sie, ob 2 angelegte Konten identisch sind.
  6. BONUS: Erklären sie den Zusammenhang zwischen Testen und eXtreme Programming. (4 Punkte)
public class Geld {
  private double betrag;
  private String waehrung;
  
  public Geld(double betrag, String waehrung) {
    this.betrag = betrag;
    this.waehrung = waehrung;
  }
  
  public double getBetrag() {
    return this.betrag;
  }
  
  public String getWaehrung() {
    return this.waehrung;
  }
  
  public Geld add(Geld addBetrag) {
    return new Geld(this.betrag + addBetrag.getBetrag(), this.waehrung);
  }
}

Aufgabe 4 [Java Modeling Language] (7 Punkte)

In Abbildung 2 ist eine (…) Java-Klasse mit einer Methode gegeben.

public class Mathe {
  private int q;
  private int r;
  
  public int methode01(int a, int b) {
    q = 0;
    r = a;
    
    while (!(r < b)) {
      r = r - b;
      q = q + 1;
    }
    return q;
  }
}
  1. Welchen Algorithmus beschreibt die Methode methode01? Hinweis: Als Hilfsmittel können sie eine Wertetabelle benutzen. (1 Punkt)
  2. Die Invariante der Schleife lautet a = qb + r. Beschreiben sie in JML die Vor- und Nachbedingungen der Methode methode01, sodass diese sinnvolle Werte berechnet. (6 Punkte)

Aufgabe 5 [UML2Java] (12 Punkte)

Implementieren sie das in Abbildung 3 dargestellte Klassendiagramm in Java. Die Java-Klassen sollen alle Parameter und Methodensignaturen enthalten. Beschreiben sie die Methodenrümpfe in Kommentaren (…). Achten sie dabei insbesondere auf die Multiplizitäten und Rollen (Einzahl, Mehrzahl).

(Klassendiagramm muss noch portiert werden)

Aufgabe 6 [Software-Wartung] (12 Punkte)

  1. Unterscheiden sie die Begriffe Betrieb, Wartung und Evolution. (3 Punkte)
  2. Nennen und beschreiben sie 3 verschiedene Arten von Wartung. (6 Punkte)
  3. Sie bekommen ein unbekanntes Stück Quellcode und sollen einen (…) finden. Beschreiben sie drei Tätigkeiten, die sie als erstes durchführen. Achten sie dabei auf eine sinnvolle Reihenfolge.
  4. BONUS: Nennen und erläutern sie kurz die Gesetze von Lehman und Beladys.

Aufgabe 7 [Produktlinien] (8 Punkte)

Die Firma Eshopi vertreibt Software für Warenhäuser im Internet. Die Software kann beim Kauf aus verschiedenen Komponenten zusammengestellt werden. Ein Webshop besteht (…) aus einem Warenkatalog, einem Bezahlsystem und verschiedenen Sicherheitsstufen. Eine Suche kann (…) hinzugebucht werden. Als Bezahloptionen werden Kreditkarten oder Bankeinzug angeboten. Für die Kreditkartenzahlung ist ein hohe Sicherheitsniveau notwendig, (…) wird alternativ als Standard genutzt.

Zeichnen sie ein Feature Diagramm zum E-Shop-System.