Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende...

13
- Musterlösung - Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 Dr. Günter Kniesel Institut für Informatik III Universität Bonn 21. Januar 2013 Name: _______________________________________ Matrikelnummer: _______________________________________ Studiengang: _______________________________________ Aufgabe Zeit ca. Maximale Punkte Erreichte Punkte 1 Systementwurf 10 7,0 2 Pattern allgemein 5 6,0 3 Observer Pattern 7 11,0 4 Patterns im Code erkennen 12 10,0 5 Singleton Implementierung 12 8,0 6 Multiple Klassifikation (Bonus) 15 11,0 7 Assotiationsimplementierung 15 9,0 Summe 51,0 Note Wertung Es geht lediglich um die Klausurzulassung, nicht um eine Benotung. Für die Zulassung müssen im Testat 50% der Punkte erreicht werden (25,5 Punkte).

Transcript of Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende...

Page 1: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

- Musterlösung -

Zweites Testat zur Vorlesung

„Softwaretechnologie“ 2012/2013

Dr. Günter Kniesel

Institut für Informatik III Universität Bonn

– 21. Januar 2013 –

Name: _______________________________________

Matrikelnummer: _______________________________________

Studiengang: _______________________________________

Aufgabe Zeit ca.

Maximale Punkte

Erreichte Punkte

1 Systementwurf 10 7,0

2 Pattern allgemein 5 6,0

3 Observer Pattern 7 11,0

4 Patterns im Code erkennen 12 10,0

5 Singleton Implementierung 12 8,0

6 Multiple Klassifikation (Bonus) 15 11,0

7 Assotiationsimplementierung 15 9,0

Summe 51,0

Note

Wertung

Es geht lediglich um die Klausurzulassung, nicht um eine Benotung. Für die

Zulassung müssen im Testat 50% der Punkte erreicht werden (25,5 Punkte).

Page 2: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Weitere Hinweise

Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu

lösen.

Dinge die nicht in die Wertung einfließen sollen (z.B. Randüberlegungen, als

falsch erkannte Antworten, verworfene Versuche) bitte durchstreichen oder

sonstwie deutlich markieren.

Tragen sie Ihre Matrikelnummer oben rechts auf jedem Blatt ein. Antworten,

die auf nicht gekennzeichneten Blättern erfolgen, werden nicht gewertet. Sie

dürfen auch die Rückseiten der Blätter mitbenutzen. Wenn Sie für Ihre

Antworten zusätzliche Blätter brauchen, erhalten Sie diese von den Betreuern.

Bei einigen Aufgaben gibt es eine Lösungsschablone die Sie ausfüllen sollen.

Sollten Sie einen zweiten Versuch starten wollen, melden Sie sich durch

Handzeichen. Sie bekommen dann einen frischen Ausdruck der entsprechenden

Schablone. Streichen Sie in diesem Fall die vorherige Lösung eindeutig durch.

Bei Unklarheiten hinsichtlich der Aufgabenstellung melden Sie sich durch

Handzeichen. Ein Betreuer kommt dann zu Ihrem Platz.

Nicht mit Bleistift, sondern mit einem dokumentenechten Stift schreiben!

Page 3: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Aufgabe 1.. Systementwurf (7 Punkte) -- 10 Min.

a) (3 Punkte) Kreuzen Sie jeweils die richtige Aussage an (korrekt = +1 Punkt, falsch = -1 Punkt, kein Kreuz = 0 Punkte):

b) (1,5 Punkte) Nennen Sie drei unterschiedliche Systemarchitekturen, die nicht schon in den nächsten Teilaufgaben genannt sind:

Schichten, Client/Server, Peer-to-Peer, Repository, Pipe & Filter, MVC

Pro korrekter Angabe 1 Punkt, maximal 2 (da nur zwei gefordert sind). Kein Punktabzug für falsche Angaben. 2-Tier, 3-Tier,... sind alles Schichtenarchitekturen, d.h. nur 1 Punkt.

c) ( 1 Punkt) Geben Sie eine Stärke der Pipe-&-Filter-Architektur an:

dynamische Rekonfigurierbarkeit, minimale Kopplung, hohe Parallelität

Kohärenz ist ein Maß der Abhängigkeiten ...

X innerhalb der Kapselungsgrenzen (z.B.: innerhalb eines Subsystems)

zwischen den Kapselungsgrenzen (z.B.: zwischen Subsystemen)

zwischen Ober- und Untertyp bei Vererbung von Kapselungsgrenzen (z.B.: zwischen Subsystemen)

Kopplung ist ein Maß der Abhängigkeiten ...

innerhalb der Kapselungsgrenzen (z.B.: innerhalb eines Subsystems)

X zwischen den Kapselungsgrenzen (z.B.: zwischen Subsystemen)

zwischen Ober- und Untertyp bei Vererbung von Kapselungsgrenzen (z.B.: zwischen Subsystemen)

Subsysteme …

X sollten maximale Kohärenz und minimale Kopplung haben

sollten minimale Kohärenz und maximale Kopplung haben

sind identisch zu Packages in Java

Page 4: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

d) (1,5 Punkte) Geben Sie jeweils an, welche Komponente in der MVC-Architektur die

folgende Aufgabe erfüllt

1. Ist zuständig für das Wissen der Anwendungsdomäne und Benachrichtigung der Views bei Änderungen im Model.

Model

2. Verantwortlich für die Abfolge der Interaktionen mit dem Nutzer.

Controller

3. Stellt die Objekte der Anwendungsdomäne für den Nutzer dar

View

Page 5: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Aufgabe 2. Pattern – Multiple Choice (6 Punkte) -- 5 Min. Bewerten Sie die Korrektheit der Aussagen mit Ja oder Nein. Es sind eventuell mehrere Aussagen richtig oder keine Einzige:

Eine richtig angekreuzte Aussage zählt +1 Punkte.

Eine nicht angekreuzte Aussage zählt 0 Punkte.

Eine falsch angekreuzte Aussage zählt –1 Punkte.

Man kann in der gesamten Aufgabe nicht weniger als 0 Punkte erreichen.

Die Eigenschaften von Pattern in der Welt der Software

Pattern dokumentieren bekannte Lösungen wiederkehrender Probleme.

Ja □ Nein

Pattern schaffen einer gemeinsamen Sprache, um über Probleme und ihre Lösungen zu sprechen.

Ja □ Nein

Pattern sind Erweiterung der UML-Sprache um Modellierungskon-zepte auf einer sehr hohen Abstraktionsebene.

□ Ja Nein

Pattern lösen typischerweise eine Menge sich teilweise (scheinbar) widersprechender Anforderungen (‚forces‘).

Ja □ Nein

Pattern wurden entwickelt um die Implementierung der „Java Virtual Machine“™ zu ermöglichen.

□ Ja Nein

Außerhalb von Java™ haben Pattern wegen mangelhafter API keine Relevanz.

□ Ja Nein

Page 6: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 6: ______

Aufgabe 3. Observer Pattern (11 Punkte) -- 5 Min. Nummerieren Sie im nachfolgenden Diagramm die Methoden und Felder in der Reihenfolge in der sie typischerweise genutzt werden, wenn

es genau einen Observer und einen Subject gibt,

der Observer anfangs noch nicht bei dem Subject registriert ist.

Nutzen sie die Punkt-Notation die zur Angabe der Ausführungsreihenfolge in Kommunika-tionsdiagrammen Anwendung findet um die Schachtelung von Methodenausführungen sichtbar zu machen.

Markieren sie durch ein X jede Methode die in diesem Ablauf zur Laufzeit nicht ausgeführt wird und jedes Feld auf das nicht zugegriffen wird.

Stellen Sie sicher, dass am Ende der Interaktion der Observer nicht (mehr) registriert ist. Tipp: Schreiben Sie Ihre Nummerierung in die gestrichelten Kästchen neben den Methoden. Folgende Lösungen wären richtig, wenn Sie die Punkt-Notation genutzt haben. Sie unterscheiden sich in den rot hervorgehobenen Positionen, je nachdem ob man bei der Auswertung von Aufrufparametern von „Lazy Evaluation“ oder „Eager Evaluation“ ausgeht. Falls Sie keine Punkt-Notation genutzt haben, würden sich die Nummern entprechend verschieben. Es wurden Punkte für die richtige Reihenfolge vergeben, nicht für die richtige absolute Position.

Bewertungsschema (Man kann insgesamt nicht weniger als 0 Punkte erreichen):

Es gibt zwei Punkte für den Fall, dass die Reihenfolge attach, setState, notify, update, detach erkennbar ist (+2 Punkte).

Darüberhinaus o Eine richtige Angabe (Reihenfolge oder X) zählt +1 Punkte. o Eine falsche Angabe (Reihenfolge oder X) zählt –1 Punkte. o Falls mindestens ein Kästchen nicht ausgefüllt wurde gibt es einen

Minuspunkt (–1 Punkte). o Falls die Punkt-Notation nicht genutzt wurde gibt es einen Minuspunkt (–1

Punkte). Siehe dazu nachfolgende Erläuterung!

Falls keine Punkt-Notation verwendet:

Page 7: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 7: ______

o Die ungeschachtelte Reihenfolge (1, 2, 3, 4, 5) ergibt jeweils einen Punkt (falls korrekt), denn der Autor hat offensichtlich die Reihenfolge verstanden.

o Zusätzlich gibt es -1 Punkte als Abzug für die Unkenntnis / fehlende Anwendung der geforderten Notation.

Falls Dezimalnotation verwendet: o Falls ein Aufruf der auch geschachtelt hätte angegeben werden müssen

ungeschachtelt (aber im Prinzip in der richtigen Reihenfolge) erscheint, wird er als falsch gewertet, denn der Autor kennt offensichtlich die Notation, hat sie aber falsch genutzt.

o Es gibt dafür aber keinen Abzug für die Notation.

Page 8: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 8: ______

Aufgabe 4. Design Patterns aus Code (10 Punkte) -- 12 Min.

Gegeben sei folgender Java-Quellcode:

interface IOutput {

public void sendToOutput(String text);

}

class OutputChannel implements IOutput {

public void sendToOutput(String text) {

// write to output channel

}

}

class OutputFilter implements IOutput {

OutputChannel outChannel;

public void sendToOutput(String text) {

if (text.startsWith("%ignore")) {

// do nothing / ignore text

} else {

outChannel.sendToOutput(text);

}

}

}

a) (4 Punkte) Erstellen Sie ein Klassen-Diagramm, das den obigen Code beschreibt.

je 1 Punkt für jede der drei Klassen komplett mit ihrer jeweiligen Methode

0,5 Punkte für die Assoziation

0,5 Punkte für beide Implements-Beziehungen zusammen

Page 9: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 9: ______

b) (3 Punkte) Das Entwurfsmuster das durch obigen Code implementiert wird ist das

3 Punkte für Proxy.

2 Punkte für Decorator (obwohl es keine zusätzliche Funktionalität gibt und keine Aggregation eines Obertyps, wie sie für Decorator charakteristisch sind).

c) (3 Punkte) Beschriften Sie in ihrem Diagramm jede Klasse mit deren Rolle im Muster.

1 Punkt pro korrekt zugeordnete Bezeichung:

IOutput Subject,

OutputFilter Proxy,

OutputChannel RealSubject

Page 10: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 10: ______

Aufgabe 5. Singleton Implementierung (8 Punkte) -- 12 Min.

Wählen Sie aus den folgenden Teilen A, B, C und D jeweils die Zeile aus, die Sie brauchen, um eine korrekte Implementierung des Singleton-Patterns zu erhalten.

Bewertung: Für eine richtig angekreuzte Zeile gibt es 2 Punkte, für eine Falsche -2 Punkte. Mehrfache Kreuze in einem Teil zählen als falsch (-2). Kein Kreuz zählt als 0 Punkte.

zu Teil D bitte umblättern

Teil A

X class Singleton {

static class Singleton {

interface Singleton {

abstract Singleton {

Teil B

X private static Singleton instance;

public static Singleton instance;

protected Singleton instance;

private static Singleton <instance>;

private abstract Singleton instance;

Teil C

public Singleton() { }

public Singleton() { this.instance = new Singleton(); }

X private Singleton() { }

private static Singleton() { }

protected Singleton{ }

Page 11: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 11: ______

Teil D

public static Singleton getInstance() {

return this;

}

public static Singleton getInstance() {

if (this.instance == null) {

this.instance = new Singleton();

}

return this;

}

public static Singleton getInstance() {

return this.instance;

}

X

public static Singleton getInstance() {

if(this.instance == null) {

this.instance = new Singleton();

}

return this.instance;

}

public static Singleton getInstance() {

if(this.instance == new Singleton()) {

this.instance = null;

}

return this.instance;

}

Page 12: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 12: ______

Aufgabe 6: Multiple / dynamische Klassifikation (11 Punkte) -- 15 Min. Ein genialer Erfinder mit gutem Geschäftssinn hat sich ein Gerät ausgedacht, das gelegent-lich verschiedene Arten eines „nützlichen Dings“ sein kann aber vor allem jederzeit zwingend ein „Statussymbol“ für den Besitzer ist:

Als „Statussymbol“ zeigt es entweder den „Trendsetter“ oder den „Nachmacher“ an, wobei diese beiden Rollen die einzigen möglichen Statussymbol-Varianten sind, sich gegenseitig ausschließen, aber durchaus schnell wechseln können.

Als „nüzliches Ding“ ist es möglicherweise ein „Kalender“, „Notizblock“ oder „Telefon“, wobei es durchaus sein kann, dass es noch weitere Rollen annimmt und die „nützliches-Ding“-Varianten sich auch durchaus kombinieren lassen (z.B. ein Kalender mit Notizen wäre nicht auszuschließen). Auch die „nützliches-Ding“-Varianten können sich zur Laufzeit ändern.

Ergänzen Sie das nachfolgende Diagramm, so dass obige Klassifikationen mit all ihren Facetten (was zwingend ist oder nicht, fest oder änderbar, etc.) ausgedrückt werden: Je 1 Punkt für jede blaue Annotation und je 0,5 für die beiden Vererbungspfeile:

Page 13: Zweites Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 · Weitere Hinweise Folgende Aufgaben sind selbstständig, ohne Verwendung von Hilfsmitteln zu lösen. Dinge die nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

Zweites Testat zur Vorlesung „Softwaretechnologie (BA-INF 033)“ Punkte auf Seite 13: ______

Aufgabe 6. Implementieren von Assoziationen (9,0 Punkte) -- 15 Min. Implementieren Sie die drei Klassen des Klassendiagramms inklusive den Assoziationen in Java. Implementieren Sie nur, was auch wirklich da steht!

Nutzen Sie für ihre Implementierung die vorgegeben Kästen: Student (1+1+1)

Universität (1+1)

(Muss kein Set sein, List geht z.B. auch. Generics ebenfalls optional.)

Professor (1+1)

2 Punkte wenn erkennbar, dass verstanden wurde, dass der Rollenname zum Feldnamen wird und die Klasse am gegenüberliegenden Ende der Assoziation zum Feldtyp wird.

je 1 für Sichtbarkeiten die sich aus dem Diagramm ergeben

je 1 pro Typ

je 1pro Rollen-/Feldname

je 0 für die Klassen

class Student{

private Universität universität;

}

class Universität{

… Set<Professor> professoren;

}

class Professor{

… Universität arbeitsplatz;

}