Lösungsvorschlag - Programmierung und Softwaretechnik (PST)

Ludwig-Maximilians-Universität München
Institut für Informatik
Prof. Dr. M. Hölzl, J. Rinke
Probeklausur Softwaretechnik
Wintersemester 2015/16
3. Februar 2016
Lösungsvorschlag
WS 2015/16
Softwaretechnik WS 2015/16 Klausur
Seite 1/8
Musterlösung
Aufgabe 1: Multiple Choice Fragen (10 Punkte)
Kennzeichnen Sie bei den folgenden Fragen deutlich, welche Antworten richtig sind. Falsch angekreuzte
Antworten werden mit Minuspunkten bewertet! Machen Sie insbesondere bei Korrekturen klar, ob eine
Antwort angekreuzt ist oder nicht.
(a) Der prototypbasierte Entwicklungsprozess hat folgende positiven Eigenschaften:
Falls während der Implementierung des Systems festgestellt wird, dass die vorhergesehenen
Kosten überschritten werden, kann der Prototyp in die Produktentwicklung übernommen
werden.
Die Anforderungen können besser verstanden werden als beim Wasserfallprozes und zwischen Kunden und Entwicklern besprochen werden.
Der prototypbasierte Entwicklungsprozess ist leicht zu verstehen.
Beim prototypbasierten Entwicklungsprozess sind auch während der Implementierungsphase des Produktivsystems noch Änderungen an den Requirements möglich.
(b) Tasks haben folgende Eigenschaften
Tasks beschreiben, wie ein Element implementiert wird, nicht was implementiert wird.
Die geschätzte Dauer eines Tasks soll zwischen 2 und 4 Tagen liegen.
Tasks werden normalerweise nicht entsprechend der Vorlage für User Stories
geschrieben.
Die Entwicklungszeit für Tasks wird vom Produkteigentümer nach den Bedürfnissen des
Kunden festgelegt.
(c) Im Scrum-Prozess gibt es die folgenden Rollen
Produktinhaber
Produktmanager
Systemanalyst
Scrum-Master
Unit-Tester
(d) Welche der folgenden Prizipien werden vom Lean Software Development vertreten?
Geschwindigkeit ist wichtiger als Defekte zu beseitigen (velocity over correctness).
Optimiere das Gesamtsystem (optimize the whole system).
Möglichst viele Entscheidungen werden vom Management getroffen, nicht dem Entwicklungsteam (management decides, team develops).
Eliminiere Verschwendung (eliminate waste).
Projektmanagement soll durch langfristige Zeitpläne erfolgen (manage long-term timebox)
(e) Welche der folgenden Aussagen treffen auf zustandsbasiertes Testen mittels der Methode der Distinguising Sequence (DS) zu?
Eine Folge von Events ist eine unterscheidende Sequenz (distinguishing Sequence, DS), falls sie für jeden Zustand eine unterschiedliche Folge von Aktivitäten/Ausgaben erzeugt.
Durch Testen mittels einer DS kann man fehlerhafte Zustandsübergänge erkennen und den fehlerhaften Zustand lokalisieren.
Eine DS kann für jede Zustandsmaschine berechnet werden.
Mittels des Dijkstra-Algorithmus ist es möglich für jede Zustandsmaschine mit n Zuständen eine DS in höchstens O(n2 ) Schritten zu berechnen.
Lösung:
Bewertung: 1 Punkt pro richtiger Antwort, 1 Punkt Abzug auf jede falsche Antwort. (Hinweis:
In der Klausur ist nicht garantiert, dass jede richtige Antwort mit 1 Punkt bewertet wird.)
(2)
(2)
(2)
(2)
(2)
Softwaretechnik WS 2015/16 Klausur
Aufgabe 2: Wasserfall-Modell
Seite 2/8
Musterlösung
(6 Punkte)
(a) Nennen Sie die acht Phasen des in der Vorlesung angegebenen Wasserfallmodells in richtiger Reihenfolge.
(4)
Lösung:
1. Machbarkeitsanalyse (feasability analysis)
2. Anforderungsanalyse und Projektplanung (requirements analysis and project planning)
3. Systemdesign
4. Detaildesign
5. Implementierung
6. Integration und Systemtest
7. Installation
8. Betrieb und Wartung (operation and maintenance)
Bewertung: 1/2P pro Phase
(b) Was sollte für ein Projekte gelten, bei dem das Wasserfallmodells einggesetzt wird? (1–2 Sätze)
Lösung:
Die Anforderungen sollten schon zu Beginn des Projekts gut verstanden und klar zu formulieren
sein.
(2)
Softwaretechnik WS 2015/16 Klausur
Aufgabe 3: Scrum
Seite 3/8
Musterlösung
(10 Punkte)
(a) Nennen Sie die Phasen, die im Scrum-Prozess bei einem Sprint durchlaufen werden in richtiger
Reihenfolge.
(21/2)
Lösung:
• Backlog Grooming
• Sprint-Planung
• Sprint-Durchführung (Execution)
• Sprint-Review
• Sprint-Retrospektive
(b) Wer ist aktiv am Stand-Up Meeting (Daily Scrum) beteiligt? Welche Fragen werden dabei von
jedem Team-Mitglied beantwortet?
(21/2)
Lösung:
• Das Scrum Team (1P)
• Jedes Team-Mitglied berichtet (je 1/2 P)
– Was habe ich erreicht?
– Was plane ich als nächstes?
– Welche Probleme sind aufgetreten?
(c) Beschreiben Sie das Vorgehen bei der Abschätzung von Produkt-Backlog-Items nach der WidebandDelphi-Methode.
Lösung:
1. Entwickler und Produkteigentümer diskutieren ein Backlog-Item
2. Jeder Entwickler schreibt seine Abschätzung (verdeckt) auf eine Karteikarte
3. Wenn die Abschätzungen abweichen erläutern die Entwickler mit der höchsten und der
niedrigsten Abschätzung die Gründe für ihre Entscheidungen
4. Das Entwicklungsteam diskutiert mit den neuen Informationen erneut und geht zu 2.
zurück
5. Wenn die Abschätzungen grob konvergieren einigt sich die Gruppe auf eine Zahl, typischerweise die größte
Berwertung: 1 Punkt pro Item
(5)
Softwaretechnik WS 2015/16 Klausur
Aufgabe 4: UML - Klassendiagramme
Seite 4/8
Musterlösung
(10 Punkte)
(a) Gegeben sei das folgende Klassendiagramm, das eine Implementierung in Java modellieren soll.
Leider hat sich der Fehlerteufel eingeschlichen und das Diagramm ist an drei Stellen fehlerhaft.
Markieren Sie die Stellen im Klassendiagramm eindeutig mit einer Nummer (von 1–3) und begründen Sie in einem Satz was an der markierten Stelle falsch ist.
(3)
Lösung:
1. In Klassendiagrammen für Java muss Mehrfachvererbung aufgelöst werden
2. Die Instanzvariable b ist private in B
3. Komposition beschreibt Existenzabhängigkeit, daher kann das Teil immer nur von höchstens einem Ganzen abhängen
Bewertung: 1/2P jeweils für richtige Stelle und 1/2P für richtige Erklärung
(b) Übersetzen Sie das folgende Klassendiagramm nach Java
Lösung:
public class Vehicle {
private Set<Motor> myMotors = new HashSet<Motor>();
private int idNumber;
(5)
Softwaretechnik WS 2015/16 Klausur
Seite 5/8
Musterlösung
public void drive(Location log) {}
}
public class Motor {
}
public class Car extends Vehicle {
}
public class Motorbike extends Vehicle {
private double maxSpeed;
}
Bewertung: 2P für Vehicle, jede andere Klasse 1P
(c) Was versteht man unter Subtyp-Polymorphismus?
Lösung:
Eine Operation einer Oberklasse (bzw. einer Schnittstelle) kann für alle Objekte von Unterklassen (bzw. realisierenden Klassen) aufgerufen werden.
(2)
Softwaretechnik WS 2015/16 Klausur
Seite 6/8
Musterlösung
Aufgabe 5: Design Patterns (14 Punkte)
Sie sind für das Design eines Frameworks verantwortlich, mit dem automatisierte Handelssysteme für
Waren oder Dienstleistungen erstellt werden können. Sie haben zwei Designprobleme identifiziert:
1. Innerhalb des Frameworks benötigen Sie eine flexible Möglichkeit, Produktfamilien zu erzeugen, die
aus mehreren zusammengehörigen Klassen bestehen, ohne dass Anwender des Frameworks dabei
die konkreten Klassen spezifizieren müssen.
2. Die Benutzeroberfläche soll so weit wie möglich von der Anwendungslogik getrennt sein, damit Sie
z.B. Versionen der Software für PCs und für Smartphones entwickeln können ohne den Kern der
Anwendungslogik jedesmal anzupassen.
Geben Sie zwei Design-Patterns an, mit denen Sie diese Probleme lösen könnten. Begründen Sie für jedes
Pattern kurz warum das Pattern auf das jeweilige Problem anwendbar ist, zeichnen Sie ein Klassendiagramm, das die statische Struktur des Patterns zeigt, und erläutern Sie kurz, welche Konsequenzen die
Anwendung des Patterns hat.
Lösung:
1. Abstract Factory
• Intent
Provides an interface for creating families of related or dependent objects
without specifying their concrete classes.
• Applicability Use the Abstract Factory pattern when
– a system should be independent of how its products are created, composed, and
represented
– a system should be configured with one of multiple families of products
– a family of related product objects is designed to be used together, and you need to
enforce this constraint
– you want to provide a class library of products, and you want to reveal just their
interfaces, not their implementations
•
• Consequences: The Abstract Factory pattern
–
–
–
–
–
isolates concrete classes
makes exchanging product families easy
promotes consistency among products
makes it difficult to support new kinds of products
(significantly) increases code complexity
Softwaretechnik WS 2015/16 Klausur
Seite 7/8
Musterlösung
2. MVC
• Kontext
Sie entwickeln eine Applikation mit graphischer Benutzeroberfläche und wollen Benutzeroberfläche und Geschäftslogik unabhängig voneinander halten
•
• Konsequenzen
– Modell und Benutzeroberfläche sind vollständig entkoppelt
– Es können leicht verschiedene Benutzeroberflächen für die gleiche Geschäftslogik erstellt werden
– Das Modell muss einen generischen Notifikationsmechanismus bereitstellen um Views
und Controller über Änderungen informieren zu können
Bewertung: Je 1P pro Pattern für richtiges Pattern, 2P für richtige Motivation/Applicability, richtige Struktur und richtige Konsequenzen. 1–2 Sätze zu den aufgelisteten Punkten sind ausreichend;
die Antwort muss (bzw. soll) nicht so ausführlich sein wie hier bei der Abstract Factory angegeben.
Die dabei am besten passenden Teile aus dem kompletten Pattern sind hervorgehoben, aber die
anderen Punkte sind als Lösung auch akzeptabel.
Softwaretechnik WS 2015/16 Klausur
Aufgabe 6: Testen
Seite 8/8
Musterlösung
(8 Punkte)
(a) Wie geht man beim Testen entsprechend der Boundary-Value-Analysis Methode vor? Beschreiben
Sie kurz die Vorteile und Schwierigkeiten bei diesem Vorgehen?
(4)
Lösung:
• Man testet Werte an der Grenze oder geringfügig außerhalb des Definitionsbereichs von
Operationen
• Vorteil:
– man testet bevorzugt empirisch häufige Fehlerquellen
• Schwierigkeiten:
– Oft ist nicht klar, was Randwerte sind
– Werte außerhalb des Definitionsbereichs können manchmal zu undefinierten Verhalten des Systems führen
– Kombinatorische Explosion von Randwerten bei Operationen mit vielen Parametern.
(b) Wir betrachten folgendes Programm:
1
if (x == 0) {
2
x = 1;
3
y = 2;
4
}
5
z = 3;
Das Programm hat folgenden Kontrollflussgraphen:
(2)
Sie haben eine Test-Suite geschrieben, die für das Program 100% Anweisungsüberdeckung erzielt. Haben Sie damit bei diesem Programm zwangsläufig auch 100% Entscheidungsüberdeckung?
Warum, bzw. warum nicht?
Lösung:
Nein. Eine Test-Suite, die nur den Pfad 1 → 2 − 3 → 5 enthält deckt alle Anweisungen ab, aber
nicht alle Kanten im Flussgraph.
(c) Wie viele Tests muss eine Testsuite mit 100% Entscheidungsüberdeckung für dieses Programm
mindestens enthalten? Begründen Sie die Antwort kurz.
Lösung:
Mindestens 2. Ein Test, der die Kante 1 → 2 − 3 abdeckt kann nicht die Kante 1 → 5 auch
abdecken.
(2)