Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das Vorgehen und nennen Sie Vorteile gegenüber anderer Herangehensweisen. 1
b) Welche Rolle spielt das Prinzip des Pair-Programming im TDD?. 2
Aufgabe 2 (20 Minuten) Ein System zur Abwicklung von Informatikprojekten im Kundenauftrag funktioniert folgendermaßen: 1. Der Projektleiter kann ein neues Projekt anlegen. 2. Ein angelegtes Projekt kann von ihm geändert werden. 3. Im Normalfall ist es beim Anlegen eines Projektes erforderlich, Mitarbeiter anzulegen 4. Auch beim Ändern eines Projektes können neue Mitarbeiter angelegt werden, allerdings ist dies nicht die Regel 5. Mitarbeiter können auch unabhängig vom Anlegen oder Ändern eines Projektes angelegt werden. 6. Weiterhin kann der Projektleiter eine Projektauswertung erstellen. 7. Jeden Monat muss der Projektleiter den Monatsplan für den kommenden Monat detaillieren. Dies ist ein eigener Vorgang und nicht identisch mit dem Ändern eines Projektes. 8. Andererseits kann es gelegentlich beim Detaillieren des Monatsplans erforderlich sein, dabei auch das Projekt zu ändern. 9. Um den Monatsplan zu detaillieren ist es außerdem immer erforderlich, eine Projektauswertung zu erstellen. 10. Die Mitarbeiter des Projektes müssen regelmäßig ihre geleistete Arbeit erfassen. 11. Ein Sonderfall bei der Erfassung der geleisteten Arbeit besteht darin, dass eine Änderung für eine bereits erfasste Periode durchgeführt werden muss. Hierzu muss in dem Erfassungsdialog ein Häkchen bei Änderung erfassen gesetzt werden und das Datum eingetragen werden. 12. Über die im Projekt erbrachte Arbeit erstellt ein Buchhalter regelmäßig eine Rechnung. 13. Die erstellte Rechnung wird sodann vom Projektleiter genehmigt. 14. Anschließend druckt und versendet der Buchhalter die Rechnung. Erstellen Sie ein Use Case-Diagramm für den beschriebenen Ablauf. Sollten einer oder mehrere der genannten Punkte nicht direkt im Use Case-Diagramm sichtbar sein, so erläutern Sie, wo Sie die entsprechende Information dokumentieren würden. 3
4
Aufgabe 3 (20 Minuten) Gegeben sind die folgenden zwei Java-Klassen: public class Raumschiff { private Raumschiffcontroller hauptcontroller = new Raumschiffcontroller(); private ArrayList<Triebwerk> triebwerke = new ArrayList<Triebwerk>(); public void starte(){ boolean allesinordnung = hauptcontroller.allesinordnung(); if (allesinordnung){ for(triebwerk t:triebwerke){ t.starte(); else { brechestartab(); public void brechestartab(){ //... public class Triebwerk { private Duese duese1, duese2; public Triebwerk(Duese duese1, Duese duese2){ this.duese1 = duese1; this.duese2 = duese2; public void starte(){ duese1.zuende(); duese2.zuende(); Erstellen Sie ein UML Klassendiagramm inkl. Sichtbarkeiten, Navigationsrichtungen, Datentypen und Parametern. Modellieren Sie auch die Klassen, deren Code hier nicht angegeben ist, soweit ihre Methoden aus dem obigen Code hervorgehen. 5
6
Aufgabe 4 (6 Minuten) Unterschiede unidirektionaler und bidirektionaler Navigierbarkeit von Assoziationen a) Welchen Vorteil hat die Implementierung von Assoziationen mit unidirektionaler Navigierbarkeit im Gegensatz zu bidirektionaler Navigierbarkeit? b) Zeichnen Sie eine Assoziation mit unidirektionaler Navigierbarkeit. c) Zeichnen Sie eine Assoziation mit bidirektionaler Navigierbarkeit. 7
Aufgabe 5 (20 Minuten) Gegeben ist die folgende Java-Methode: public static void einefunktion(int a, int b){ if((a<5)&&(b>7)){ if(b > 9){ tueetwas(1); else if (b<2){ tueetwas(2); else { tueetwas(3); else if ((a<9) (b<5)){ tueetwas(4); tueetwas(5); Lösungshinweis: einer der fünf Zweige ist nicht erreichbar; dieser Zweig zählt bei den folgenden Teilaufgaben b) - d) nicht, wenn eine vollständige Überdeckung gefordert ist. a) Zeichnen Sie den Kontrollflussgraphen dieser Methode. 8
b) Geben Sie ein oder mehrere Kombinationen von Werten für die Eingangsparameter an, um eine vollständige Anweisungsüberdeckung zu erreichen (aber nur so viele Kombinationen wie mindestens erforderlich). c) Geben Sie ein oder mehrere Kombinationen von Werten für die Eingangsparameter an, um eine vollständige Zweigüberdeckung zu erreichen (aber nur so viele Kombinationen wie mindestens erforderlich). d) Geben Sie ein oder mehrere Kombinationen von Werten für die Eingangsparameter an, um eine einfache Bedingungsüberdeckung in allen Bedingungen zu erreichen (aber nur so viele Kombinationen wie mindestens erforderlich). 9
Aufgabe 6 (10 Minuten) a) Nennen Sie die drei Arten von Versionsverwaltungssystemen. b) In welche Art ist GIT einzuordnen und warum? c) Nennen Sie Vorteile beim Einsatz von GIT gegenüber Subversion. 10
Aufgabe 7 (10 Minuten) Wie funktioniert das Architekturprinzip shared-data? 11