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