Bewertung der 2. Malefizabgabe
Alle mit FIXME gekennzeichneten Punkte müssen behoben und nachgereicht
werden.
Es sind 20 Punkte zu erreichen (10 für Klassendiagramm, 5 für Sequenzdiagramm, 5 für Zustandsautomat und Testcase-Beschreibung).
Gruppe 1 (A)
Erst in der finalen Abgabe am 17.08. abgegeben.
Die Beschreibungen sind zwar schön, es fehlen allerdings teilweise Attribute (CZielFeld: m_highlight,
m_anz_figuren, ptr_Nachbar, ptr_spielfigur, ptr_besitzer) in der Beschreibung.
8/10 Punkte.
Sequenzdiagramm "Spiel erstellen" ist OK. "Hintergrund laden" ist a) zu trivial und b) unkommentiert.
Dafür ist das Statechart sehr schön kommentiert.
3/5 Punkte.
Die geforderte Definition der Unit-Test-Fälle fehlt komplett.
0/5 Punkte.
In der Summe 11/20 Punkte.
Gruppe 2 (B)
- FIXME: Eure Methoden bekommen nie Pointer übergeben ("(CNormalSpielstein fig" statt "CNormalSpielstein *fig").
- FIXME: Klassendiagramm bitte in die Doku hängen, und die Klassen so groß ziehen dass alle Methoden erkennbar sind,
nicht nur je zwei davon.
- FIXME: View-Klasse und Dialog werden nicht im Klassendiagramm beschrieben.
- FIXME: Eure Start-/Zielfelder gehören nicht zu einem Spieler (keine Verbindung zum Spieler)
- CSpieler: die Attribute "ausgewaehlteFigur" und "hatGewonnen" wären sauberer im aktuellen Zustand abgelegt oder ?
- FIXME: einige Aggregationen in eurem Diagramm sind nur Assoziationen. Eine Aggregation ist immer dann gegeben wenn
man sagen kann "Objekt x besteht aus Objekt y". Das passt aber nicht bei der Verbindung "CNormalstein" zu "CSpielfeld".
Das ist nur eine Assoziation.
- FIXME: "CGewonnen" implementiert nicht die abstrakte Methode "GetNextState".
- FIXME: Zustandsklassen sollten detaillierter beschrieben werden (hier läuft ziemlich viel Logik ab).
- FIXME: Bisher fehlen Sequenzdiagramm, Zustandsdiagramm und Testcases.
Klassendiagramm-Beschreibung bei den Datenklassen weitgehend OK, Zustandslogik und Viewklassen sind zu dürftig bzw. fehlen.
Rest fehlt noch.
Aktuell: 7/10 Punkte.
Update 17.07.2006:
Die FIXMEs aus obiger Abgabe gelten immer noch, nachgereicht wurden Testcases und Sequenzdiagramme
- FIXME: Ich will 5 Testcases haben (keine 10 mehr wie ursprünglich gefordert), ihr habt nur 3 abgegeben.
Es sind alles eher triviale Teile der Spiellogik, es wäre wichtig wenn mehr vom Spielablauf darin steckt !
- FIXME: Das Sequenzdiagramm muss natürlich auch dokumentiert werden. Ohne Doku ist es fast garnichts wert.
- FIXME: es sollen zwei Sequenzdiagramme abgegeben werden, nicht nur eines.
- FIXME: Die Methoden und Variablen des Sequenzdiagramms tauchen fast alle nicht im Klassendiagramm auf.
Das muss noch aktualisiert werden.
Aktuell: 8/10 Punkte.
Update 14.08.2006:
5 Testcases sind dokumentiert.
Zustandsklassen sind im Klassendiagramm beschrieben, allerdings viel zu knapp (zum Beispiel fehlt die Beschreibung der Logik
die in der Zustandsklasse abläuft.
An einigen anderen Stellen ist die Beschreibung der Klassen zu knapp (z.B. bei der Parentklasse "CSpielfeld").
View-/Dialog-Klassen fehlen in der Beschreibung.
Nach meinem Mecker zur ersten Abgabe habt ihr alle Aggregationen rausgeworfen oder ? Das war zuviel des Guten. Das
Spielbrett zum Beispiel besteht aus Feldern.
Sequenzdiagramm: jetzt mit Doku, die Methoden passen zum Klassendiagramm. Allerdings ist die Beschreibung ziemlich knapp
gehalten. Statt der "CZustandsklasse" gehört die konkrete Subklasse ins Diagramm.
Klassendiagramm: 8/10
Sequenzdiagramm: 3/5
Unit-Tests: 5/5
Insgesamt 16/20 Punkte.
Gruppe 3 (C)
Abgabe vom 17.07.
- Es wäre schön gewesen wenn ihr eure Dokus zu einem einzigen Dokument zusammengefügt hättet statt mir 6 verschiedene
Word-Dateien zu geben.
- FIXME: Die Zustands- und View-klassen gehören in das Standard-Klassendiagramm, kein eigenes Diagramm.
- FIXME: Die Klassen haben viel zu wenig Methoden. Das ist fast schon der Detailgrad der in der 1. Designstufe nötig war.
- FIXME: CFigur: wieso kann man den Typ setzen ? Der Typ kommt doch durch die Subklasse, ein Setzen würde also die
Vererbung ignorieren. Die Farbe der Figur wäre einfach zu ermitteln indem man eine Verbindung vom CSpielstein zum Spieler
modelliert (bzw. den Weg von der Figur zum Spieler). Eine Sperre hat in der Datenmodellebene keine Farbe (ist eigentlich egal wie der gezeichnet wird).
- FIXME: Eure Klassenbeschreibung hört bei den Datenklassen auf, weder Document noch View sind beschrieben.
- FIXME: CMaleDoc: was ist mit dem Speichern ? "Serialize" müsste in eurem Diagramm wohl auftauchen.
- Das undokumentierte Sequenzdiagramme "Würfeln" habe ich ignoriert.
- Sequenzdiagramm "Sperre versetzen": beim ersten "VerarbeiteKlick" sehe ich keine Statusklasse die diesen Klick verarbeitet.
Aus einer Bedingung "[if hat Sperre]" könnt ihr "[hat Sperre]" machen, die eckigen Klammern bedeuten implizit ein "if".
Wieso führt der Aufruf von "GetSperre" / "SetSperre" auf CSperre, und was ist der Sinn dieser Methode ?
Wo ist der Zustand "nicht gewürfelt", den ihr in der Beschreibung erwähnt ?
- Sequenzdiagramm "Ziehen": "VerarbeiteKlick" sollte keinen Punkt in Bildschirmkoordinaten erhalten, sondern am besten ein CFeld,
höchstens aber logischen Koordinaten des Felds im Spielbrett. Das Umrechnen von Bildschirmkoordinaten in muss die View übernehmen.
Bitte kein "this->" in die Aufrufe packen.
"CFigurGewaehlt" sollte nicht "UpdateAllViews" des Documents aufrufen, sondern das irgendwie anders steuern,
z.B. über die Rückgabe von "VearbeiteKlick".
Müsste in der Verarbeitung des 2. Klicks der Zustand nicht wechseln nachdem die Figur umgesetzt wurde ? Wo wird geprüft
ob das angeklickte Feld überhaupt ein gültiges Ziel ist ?
Klassenbeschreibung ist viel zu knapp, Zustands- und MFC-Klassen sind nicht beschrieben, kleinere Fehler. (6/10)
Unit-Test-Beschreibung ist perfekt. Zustandsdiagramm ist OK. (5/5)
Sequenzdiagramme brauchen noch Verfeinerung. (3/5)
Aktuell würde ich 14 Punkte geben.
Update 17.08.2006:
In der finalen Abgabe wurde die Doxygen-generierte Klassendokumentation abgegeben. Dadurch sind alle Klassen vorhanden.
Allerdings hätte die Dokumentation detaillierter sein dürfen.
Sequenzdiagramme sind nochmal überarbeitet worden.
"Sperre versetzen": hier sind zwei Instanzen von CFeld beteiligt, also hätten auch zwei Objekte ins Diagramm gehört: "Ziel:CFeld"
(Ziel des Versetzens als Instanz von "CFeld") und "Quelle:CFeld", dann würden "GetSperre" und "SetSperre" nicht auf die scheinbar gleiche
Klasse gehen (sorry, hätte ich schon bei der letzten Bewertung sagen müssen).
Klassendiagramm: 8/10
Sequenzdiagramm: 4,5/5
Unit-Tests/Zustandsdiagramm: 5/5
Also 17,5/20 Punkte.
Gruppe 4 (D)
- FIXME: Zustands-Klassen-Modell fehlt komplett.
- FIXME: View hat keine Methoden, beim Document benötigte MFC-Methoden sind nicht im Diagramm eingetragen.
In der Beschreibung fehlen die beiden Klassen ganz.
- FIXME: Abweichung vom Domänenklassendiagramm: es gibt hier eine Klasse "CSperrfeld": Nachtragen in "Malefiz 1"
- FIXME: Beschreibung der Klassen selbst ist knapper als in "Malefiz 1". Hier hätte mindestens die gleiche Menge
Doku auftauchen müssen.
- FIXME: Unit-Tests: hier hätten die Initialzustände detaillierter definiert werden müssen (z.B. grafisch einen sinnvollen
Startzustand darstellen).
- FIXME: Zustandsautomat muss natürlich beschrieben werden.
- FIXME: Sequenzdiagramm fehlt.
Aktuell: 7/20 Punkte.
Update 15.08.2006:
Zustandsklassen fehlen komplett in Doku und Anwendung.
View- und Document-Klasse stecken jetzt in der Beschreibung.
Bei den Klassenbeschreibungen wäre es besser gewesen auf die (wichtigen) Methoden und Variablen
detailliert einzugehen, nicht nur einen Block Text zur gesamten Klasse zu schreiben (der ist als Klassendoku
natürlich völlig OK).
Zustandsdiagramm ist jetzt beschrieben.
Sequenzdiagramme sind jetzt (mit Beschreibung) vorhanden. Die Beschreibung ist allerdings zu knapp,
hier hätte zu jedem Aufruf ein kurzer Kommentar gehört. Die Methode "CFeld::getX" aus dem Sequenzdiagramm
"Checkend" finde ich in "CFeld" im Code nicht...
Klassendiagramm: 7/10
Sequenzdiagramm: 3/5
Unit-Tests: 5/5
Insgesamt 15/20 Punkte.
Gruppe 6 (F)
- FIXME: Klassendiagramm bisher zu knapp (zu wenig Methoden, View-Klassen kaum dokumentiert, Probleme bei MFC-Anbindung
(separate Methoden "Speichern", "Laden", "SpielErstellen" in Document-Klasse, die eigentlich von MFC-Logik abgebildet
werden). Die Methoden sollen in dieser Stufe des Designs auch beschrieben werden.
- FIXME: Klassendiagramm: jeder der Zustandsklassen muss die abstrakten Methoden der Basisklasse implementieren,
in jeder der Klassen muss also "HandleFeldKlick" und "HandleWuerfelKlick" vorhanden sein, auch wenn die Methoden eventuell
nichts macht.
- FIXME: Sequenzdiagramm: Missverständnis über das Aussehen eines Sequenzdiagramms bei "Feld wählen" ? Warum geht hier
der Pfad durch "Würfelergebnis festlegen", "Mögliche Zielfelder anzeigen" und "Zielbox ausgewählt" ? Was ihr hier modelliert
habt ist ein kompletter Rundenablauf, also eigentlich nur der zeitliche Ablauf mehrerer Use-Cases. Im Sequenzdiagramm
soll aber genau ein Use-Case modelliert werden, mit allen Methoden und Klassen die vom Beginn des Use-Cases bis zu seinem Ende
durchlaufen werden. Bitte nochmal überarbeiten. Das Sequenzdiagramm zu "Würfeln" ist ebenfalls zu knapp, hier sind doch bestimmt
die View, die Document-Klasse, der Würfel und eine Zustandsklasse beteiligt oder ?
- FIXME: Sequenzdiagramme müssen natürlich auch dokumentiert werden, also der Use-Case im Überblick und jede Methode im
Detail beschrieben werden.
- FIXME: Zustandsdiagramm muss beschrieben werden.
- FIXME: Was ist mit den Test Cases ?
Aktuell würde ich darauf nicht viele Punkte geben, einzig das Klassendiagramm geht einigermaßen OK.
Aktuell: 8/20 Punkte
Update 18.07.2006:
Leider nur das Together-Projekt ohne sonstige Doku abgegeben.
Ich kann nichts mit der Abgabe anfangen, es sieht nicht aus als wäre etwas geändert worden, das Together-Projekt scheint sogar weniger zu
enthalten als die letzte Abgabe (keine Zustandsklassen, keine Sequenzdiagramme ?).
Update 15.08.2006:
Sequenzdiagramme sind immer noch nicht dokumentiert (Grenzen der Together-generierten Doku ?).
Keine Unit-Test-Definition.
Zustandsdiagramm ist jetzt kommentiert.
Sequenzdiagramm zu "Würfeln": hier müsste die Logik doch vom Aktor zur View zum Document gehen, nicht direkt in
den Zustand "Rundenstart" ? Die Methode "CMalefizRundenstart::HandleWuerfelKlick" hat ca. 100 Zeilen Code, da wird doch mehr passieren
als die zwei im Sequenzdiagramm eingetragenen Aufrufe oder ?
Die Klassendoku hat sich nicht viel geändert, ist mir immer noch zu knapp.
Klassendiagramm: 8/10
Sequenzdiagramm: 2/5
Unit-Test: 0/5
Insgesamt 10/20 Punkte.
Update 21.08.2006:
Unit-Test-Beschreibung nachgereicht, leider die Kommentare in Quellcode-Syntax. Inhaltlich OK, aber die Form passt nicht
so ganz.
Unit-Test: 4/5 Punkte
Also 14/20 Punkte.
Stand 21.08.2006
Historie:
29.06.2006: Seite erstellt.
30.06.2006: Gruppe D
17.07.2006: Update Gruppe B
18.07.2006: Gruppe C, Update Gruppe F
14.08.2006: Update Gruppe B
15.08.2006: Update Gruppe D, F
17.08.2006: Bewertung Gruppe A, C
21.08.2006: Update Gruppe F