14
- Musterlösung - Erstes Testat zur Vorlesung „Softwaretechnologie“ 2012/2013 Dr. Günter Kniesel Institut für Informatik III Universität Bonn 19. November 2012 Name: ________________________________________ Matrikelnummer: ________________________________________ Studiengang: ________________________________________ Aufgabe Zeit ca. Maximale Punkte Erreichte Punkte 1 SCM 7 7.0 2 Git 6 4.0 3 Klassendiagramme 26 13.0 4 Aktivitätsdiagramm 12 7.5 5 Sequenzdiagramm 16 9.0 6 Zustandsdiagramm 15 7.0 Summe 82 47.5 Note Wertung Es geht lediglich um die Klausurzulassung, nicht um eine Benotung. Für die Zulassung müssen im Testat 50% der Punkte (also 24 Punkte) erreicht werden.

- Musterlösung - Erstes Testat zur Vorlesung · nur halb gewertet 2 andeutungsweise korrekte Methoden = 1 Korrekte Methode) Siehe Skript, Kapitel „Objektdesign“ für die hier

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

- Musterlösung -

Erstes Testat zur Vorlesung

„Softwaretechnologie“ 2012/2013

Dr. Günter Kniesel

Institut für Informatik III Universität Bonn

– 19. November 2012 –

Name: ________________________________________

Matrikelnummer: ________________________________________

Studiengang: ________________________________________

Aufgabe Zeit ca.

Maximale Punkte

Erreichte Punkte

1 SCM 7 7.0

2 Git 6 4.0

3 Klassendiagramme 26 13.0

4 Aktivitätsdiagramm 12 7.5

5 Sequenzdiagramm 16 9.0

6 Zustandsdiagramm 15 7.0

Summe 82 47.5

Note

Wertung

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

Zulassung müssen im Testat 50% der Punkte (also 24 Punkte) erreicht werden.

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!

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Aufgabe 1. SCM (7 Punkte) -- 7 Min. Bewerten Sie die Korrektheit der Aussagen mit Ja oder Nein. Es sind eventuell mehrere Aussagen richtig oder keine Einzige. Bewertungsschema:

Eine richtig angekreuzte Aussage zählt +0,5 Punkte.

Eine nicht angekreuzte Aussage zählt 0 Punkte.

Eine falsch angekreuzte Aussage zählt –0,5 Punkte. Man kann in der gesamten Aufgabe 1 nicht weniger als 0 Punkte erreichen. Bei Aussagen, die Sie als falsch hätten ankreuzen sollen, sind nachfolgend zum Verständnis warum sie (so wie sie in dem Testat formuliert waren) falsch sind, die falschen Anteile gestrichen und durch Korrekte ersetzt worden (falls es nichts Falsches zu streichen gab wurden nur die zu einer korrekten Aussage fehlenden Teile ergänzt). a) (7 Punkte) -- 7 Min.

SVN, Git, ClearCase, Jira, Mylin

SVN-Commit überschreibt Dateien anderer Entwickler auf dem Server.

Ja □ Nein

Die Größe von SVN-Repositories wächst in jedem Fall mit jedem weiteren Branch um das 1,4-fache. Es gibt keinen festen Faktor um den ein branch ein SVN-repository vergrössert.

□ Ja Nein

Beim Erstellen eines Branches in SVN wird eine keine Kopie des gesamten Projektes im SVN-Repository angelegt.

□ Ja Nein

Es ist unter SVN möglich einzelne Dateien in einem versionierten Ordner von der Versionskontrolle auszunehmen.

Ja □ Nein

SVN versioniert Dateien ordnerweise pro „commit“ (eine Revisionsnummer entspricht dem Zustand eines ganzen Ordners inkl. seiner Dateien des gesamten Repositories nach einem bestimmten commit. Alle Dateien, die im gleichen Commit verändert wurden, haben die gleiche Revisionsnummer. Alle anderen Dateien, mit kleinerer Nummer gehören mit zu der Revision – sie wurden vom Commit nicht verändert).

□ Ja Nein

Git kann nur verwendet werden, wenn man kein zentrales Repository braucht.

□ Ja Nein

In ClearCase können einzelne Commits eindeutig einem Entwickler zugewiesen werden.

Ja □ Nein

SVN, Git und ClearCase dienen vor allem der Erzeugung und Verwaltung von UML-Diagrammen jeglicher Software-Artefakte.

□ Ja Nein

Alle Features von Git können vollständig, ohne Einbeziehung anderer Tools, von SVN emuliert werden. Git subsummiert SVN, nicht umgekehrt.

□ Ja Nein

Git legt alle Änderungen des versionierten Codes automatisch und ohne weiteres Zutun auf Auffroderung des Entwicklers (commit) im

□ Ja Nein

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Repository ab.

Durch das Anlegen eines Tags wird die aktuelle Fassung des Codes kompiliert und zum Release freigegeben einer wichtigen Zwischenversion ein (hoffentlich) leicht zu merkender Name gegeben.

□ Ja Nein

„Push“ und „Pull“ sind zentrale Begriffe von Subversion Git. □ Ja Nein

Mylyn und JIRA sind Task-Management-Tools, die man zusammen verwenden kann.

Ja □ Nein

JIRA automatisiert das Kompilieren allen Quellcodes der bei der Bearbeitung einer Aufgabe verändert wurde. Jira macht nichts mit dem Quellcode, es verwaltet lediglich noch zu lösende Probleme (issues).

□ Ja Nein

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Aufgabe 2. Git (4 Punkte) -- 6 Min

a) (2 Punkte) -- 3 Min.

Beschriften Sie die folgende Log-Anzeige eines Git-Zustandes mit den passenden Begriffen aus der Aufzählung rechts daneben. Wenn ein Begriff an mehrere Stellen des Diagramms passt tragen Sie ihn nur einmal ein (Sie können auch einfach einen Pfeil von dem Begriff zu genau einer passenden Stelle malen). Es kann sein, dass nicht jeder Begriff im Diagramm eine Entsprechung hat.

b) (2 Punkte) -- 3 Min.

Welche Aussagen treffen auf obiges Diagramm zu? Bewertungsschema:

Eine richtig angekreuzte Aussage zählt +0,5 Punkte.

Eine nicht angekreuzte Aussage zählt 0 Punkte.

Eine falsch angekreuzte Aussage zählt –0,5 Punkte. Man kann in der Aufgabe 2b nicht weniger als 0 Punkte erreichen.

Der „feature x“-Branch ist lokal weiter als auf dem Server. Ja □ Nein

Der aktuelle Stand des Master-Branches beinhaltet alle Änderungen des „feature x“-Branches.

□ Ja Nein

Der aktuelle Stand des Master-Branches entstand durch ein „Cherry-Picking“ von XYZ aus dem „feature x“-Branch.

□ Ja Nein

Die Benennung des Knotens ABCDE ist inkonsistent; sie müsste ABCDXY heißen.

□ Ja Nein

Update

Branch

Commit

Revision

Cherry Pick

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Aufgabe 2. Klassen- und Objektdiagramme (13 Punkte) -- 28 Min. a) (2,5 Punkte) -- 4 Min.

Bewerten Sie die Korrektheit der Aussagen mit Ja oder Nein. Es sind eventuell mehrere Aussagen richtig oder keine Einzige. Bewertungsschema:

Eine richtig angekreuzte Aussage zählt +0,5 Punkte.

Eine nicht angekreuzte Aussage zählt 0 Punkte.

Eine falsch angekreuzte Aussage zählt –0,5 Punkte. Man kann in der gesamten Aufgabe nicht weniger als 0 Punkte erreichen. Bei Aussagen, die Sie als falsch hätten ankreuzen sollen, sind nachfolgend zum Verständnis warum sie (so wie sie in dem Testat formuliert waren) falsch sind, die falschen Anteile gestrichen und durch Korrekte ersetzt worden (falls es nichts Falsches zu streichen gab wurden nur die zu einer korrekten Aussage fehlenden Teile ergänzt).

Klassendiagramme

In Klassendiagrammen lassen sich Interfaces und abstrakte Klassen modellieren.

Ja □ Nein

Aus einem Klassendiagramm lässt sich immer ein dazu konsistentes Objektdiagramm erstellen, andersherum nicht genauso.

□ Ja Nein

Die Angabe der Multiplizität ist in Klassendiagrammen nur erforderlich, wenn sie nicht „0..*“ „1“ ist.

□ Ja Nein

Vererbung lässt sich in Klassendiagrammen modellieren Ja □ Nein

Eine Aggregation mit „Löschpropagierung“ ist das Gleiche wie eine Komposition, falls an dem Ende mit der Raute die Kardinalität implizit oder explizit „1“ ist.

□ Ja Nein

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

b) (2,5 Punkte – 1 Punkt für Ja/Nein, je 0,5 pro korrekt markiertem Fehler) -- 4 Min. Betrachten Sie das folgende Klassendiagramm.

Ist das unten angegebene Objektdiagramm konsistent zu dem Klassendiagramm?

□ Ja Nein

Streichen Sie Fehler im Objektdiagramm durch oder ergänzen Sie es, falls erforderlich!

Sie hätten die eingekringelten Elemente streichen sollen.

Alternativ wäre es auch korrekt das Ersatzrad und das Rad R5 als Teile eines weiteren

Wagens zu betrachten. Ein Teilnehmer hatte das sehr schön gemacht: nur die Verbindung von

„Ersatzrad“ zu „W1“ gestrichen, und dafür einen weiteren Wagen incl. eigener Karosserie

und zwei weiterer Räder eingemalt und ihn mit R5 und Ersatzrad verbunden.

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

c) (4,5 Punkte – 9 mal 0,5 pro rotem Kringel. Braune Markierungen wären reguläre Punkte gewesen, wenn der braune Teil der Aufgabenstellung mit abgedruckt worden wäre. So

) -- 8 Min. Streichen Sie in dem unten angegebenen Klassendia-sind es Bonuspunktegramm alle Stellen an, die der folgenden Beschreibung nicht entsprechen. Stellen wo etwas fehlt brauchen Sie nicht anzustreichen (die Korrektur des Diagramms ist Thema der nächsten Teilaufgabe). Streichen Sie nur das an, was da ist aber zu der textuellen Beschreibung widersprüchlich oder aus ihr nicht begründbar ist.

Ein Wald besteht aus mindestens zehn Bäumen.

Ein Baum ist Teil eines Waldes, kann aber auch ohne umgebenden Wald existieren.

Ein Baum hat genau eine Wurzel und mindestens einen Ast.

Ein Ast hat beliebig viele Blätter.

Wenn der Wald verbrennt, verbrennen alle Bäume und deren Bestandteile.

Wenn ein Ast verbrennt, verbrennt auch jedes Blatt.

Eine Fichte ist ein Baum.

Wenn ein Blatt vom Ast fällt, verwelkt es (und existiert nicht mehr).

d) (3,5 Punkte – 7 x 0,5 pro grünem Kringel – Die braunen ließen sich nur aus der vervollständigten Aufgabenstellung begründen, die leide nicht ausgedruckt wurde) -- 12 Min. Setzen Sie das Diagramm korrekt um. Kardinalitäten die in c) schon korrekt sind, brauchen Sie nicht noch mal hinzuschreiben.

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Aufgabe 4. Aktivitätsdiagramme (7,5 Punkte) -- 12 Min.

Folgende Abendaktivität soll modelliert werden.

Einen Wahlabend beginnt der durchschnittliche Amerikaner indem er sich für eine der folgenden Aktivitäten entscheidet:

Er bevorzugt Demokraten und wählt daher die demokratische Partei

Er bevorzugt Republikaner und wählt daher die republikanische Partei

Er wählt nicht sondern schaut zu Hause seine Lieblingsserie

Danach verfolgt er den Wahlausgang in Fernsehen.

Während des Fernsehens isst er Chips.

Nachdem er alle Chips gegessen hat und die Wahlergebnisse fest stehen - das Verfolgen des Wahlausgangs also abgeschlossen ist - sinniert er über das Für und Wider eines Zwei-Parteiensystems nach.

Danach ist seine Abendaktivität beendet.

Tipp: Nutzen Sie ausschließlich die auf der nächsten Seite vorgedruckten Aktivitätskästen und erfinden Sie selbst keine neuen hinzu.

7,5 = 0,5 pro Kringel, 1 pro dickem Kringel

Abzug bei sinnloser Modellierung, egal wie viele Kringel da sind.

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Aufgabe 5. Klassen- und Sequenzdiagram (9,5 Punkte) -- 16 Min. Sie sind für die Animation der folgenden Cartoon-Szene zuständig:

A-Hörnchen hüpft auf einem Ast auf und ab.

Jedes Mal, wenn A-Hörnchen hüpft, biegt sich der Ast und knarrt. Wenn der Ast sich biegt, bewegen sich die Blätter. Immer wenn sich ein Blatt bewegt wird der Welkheitsgrad des Blattes geprüft.

Wenn ein gewisser Welkheitsgrad noch nicht erreicht ist, wird der Welkheitsgrad um 1 erhöht. Ist er überschritten (das Blatt also „zu welk“), fällt das Blatt zu Boden.

Ein abfallendes Blatt meldet sich beim Ast ab und teilt ihm mit um welches Gewicht er nun leichter wird. Je leichter der Ast ist, umso größer wird seine Krümmung wenn A-Hörnchen hüpft.

Ist ein gewisser Krümmungsgrad überschritten, bricht der Ast. Damit endet die Animation.

a) (3 Punkte -- 6 Min. – Pro Kringel 0,5 Punkte. Auch andere als die hier vorgestellten Methoden akzeptiert, wenn im Sequenzdiagramm sinnvoll eingesetzt. Methoden deren Namen, Parameter oder Ergebnistypen nicht nachvollziehbar waren wurden nicht oder nur halb gewertet 2 andeutungsweise korrekte Methoden = 1 Korrekte Methode) Siehe Skript, Kapitel „Objektdesign“ für die hier vorgegebenen Teile der Aufgabe (z.B. abgeleitetes Attribut). Ergänzen Sie das Klassendiagramm in dem die Struktur und Beziehungen zwischen Szene, Hörnchen, Ast und Blatt erfasst und insbesondere die Signaturen aller Methoden modelliert sein sollen. Es soll eine eigene Methode für jede Aktion und jede Überprüfung geben, die Sie in der Animationssequenz brauchen.

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

b) (6,5 Punkte -- 10 Min – Siehe Kästen in Musterlösung) Übertragen Sie die Animationsse-quenz in ein Sequenzdiagramm, das den Ablauf wiedergibt.

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Obige Musterlösung besagt:

Die start()-Methode der Animationsszene wiederholt solange bis die Astkrümmung zu gross wird die Nachricht „huepfe()“ an das Hörnchen. Dass das Hörnchen hüpft führt dazu, dass der Ast aufgefordert wird sich zu biegen. Wenn der Ast sich biegt knarrt er (asynchron) und sendet parallel all seinen Blättern die Aufforderung sich zu bewegen. Beachten Sie, dass dieser loop über min. und max. Zähler gesteuert wird, der Äußere hingegen über die zu erreichende Bedingung. Das biegen eines jeden Blattes erfolgt asynchron, beinhaltet das welken und führt gegebenenfalls (falls das Blatt wegen Welkheit abfällt) dazu, dass der Ast benachrichtigt wird, welches Blatt abgefallen ist. Der Ast reagiert darauf, indem er sein Gesamtgewicht neu berechnet und anhand des neuen Gesamtgewichtes entscheidet, ob die Krümmung nun zu groß ist. Falls das der Fall ist, bricht er.

Diskussion:

1. Die Berechnung des Gesamtgewichtes würde genau genommen auch eine Iteration (loop) erfordern. Die wurde hier weggelassen, einfach da ich nicht erwartet habe, dass Sie derlei Details in der Kürze der Zeit in dem Testat modellieren.

2. Ein weiteres weggelassenes Detail ist die Frage, wie der äußere loop (in der Szene), prüfen kann, ob die Krümmung zu groß ist. Der in der Musterlösung angegebene Aufruf „kruemmungZuGross()“ als Test des Loops zu verwenden ist dahingehend „gepfuscht“ als dies eine Methode des Astes, nicht der Szene ist. Dies sollte Ihnen ersparen, zwei weitere Aktionen für die Schritte a und c der folgenden Sequenz genau ausarbeiten zu müssen:

a. Initialisierung einer lokalen Variablen „kruemmungZuGross = false“ vor Beginn des Loop-Fragmentes.

b. hoernchen.huepfe(); c. kruemmungZuGross = ast.kruemmungZuGross();

Der Schritt c. entspräche einer Nachricht mit return-Wert, die den Datenfluss sichtbar machen würde. Da ich diese Detaillierungsstufe nicht

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

erwartet habe und sie auch niemand erreicht hat, ist sie nicht Teil der Musterlösung und auch nicht in die Wertung eingeflossen. Der genau genommen undefinierte loop-Abbruchstest wurde immer als korrekt akzeptiert.

3. Alternativ zu dem opt-Element, das über das brechen des Astes entscheidet, wäre es auch denkbar gewesen, dass die start()-Methode der Szene nach Ende des äußeren loop-Fragmentes den Ast auffordert zu brechen, wie nachfolgend gezeigt. Hier braucht man keine weitere Bedingung, da nach Ende des loop-Fragmentes klar ist, dass die Bedingung „kruemmungZuGross()“gilt. Diese Variante würde erfordern, dass die Szene den Ast kennt. Dies ist laut Klassendiagramm aus Teil a) der Fall. Somit ist diese Variante auch plausibel / zulässig.

Wintersemester 2012/2013 Matrikelnummer: ___________________________

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

Aufgabe 6. Zustandsdiagramm (7 Punkte) -- 12 Min.

a) (7 Punkte) -- 12 Min.

Erstellen Sie ein Zustandsdiagramm für eine automatische Sonnenschutz-Markise nach folgender Spezifikation.

Es gibt zwei primäre Zustände, in denen sich der Sonnenschutz befinden kann: Bei Sonne soll der Schutz runtergefahren sein, ansonsten hochgefahren.

Bei einer Temperatur >= 20° fährt der Sonnenschutz runter. Bei einer Temperatur von < 20° wieder hoch.

Der Sonnenschutz fährt auch hoch wenn zu starker Wind gemessen wird. In diesem Fall fährt der Sonnenschutz auch bei einer hohen Temperatur niemals runter.

Falls notwendig, kann ein Techniker den Sonnenschutz in einen Wartungsmodus versetzen. Dies kann in jeder Position durchgeführt werden. In diesem Modus wird der Sonnenschutz auf jeden Fall in seiner Position verbleiben, egal ob es sonnig oder windig ist.

Sind die Wartungsarbeiten abgeschlossen, fährt der Sonnenschutz automatisch wieder hoch.

Tipp: Nutzen Sie ausschließlich die auf der nächsten Seite vorgedruckten Zustandskästen und erfinden Sie selbst keine neuen hinzu (außer Start und Ende). Achten Sie auf vollständige und notationell korrekte Angabe von Ereignissen, Bedingungen und Aktionen (natürlich nur dort wo aus der Aufgabenstellung erkennbar).

Startzustand 1 Punkt, Rest je 0,5:

Hochgefahren

Runtergefahren

Wartungsmodus

Temperatur > 20° [kein Wind] /runterfahren

Temperatur < 20° oder Wind /hochfahren

Abschluss Wartungsarbeit /hochfahren

Wartungsmodus aktiviert

Auch als /exit

Grün = Vorgegeben