Grafisches Bewertungssystem

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel beschreibt die Umsetzung der Hausübung Grafisches Bewertungssystem im Kurs MSP an der FH Gießen-Friedberg im WS 2007/2008.

Aufgabenstellung

Die ursprüngliche Idee war die Umsetzung eines zusätzlichen, schnellen Feedbacks auf einen geposteten Bildeintrag (im Fotoforum), dessen Auswertung den Benutzer in die Lage versetzt, ohne großen Aufwand den favorisierten Vorschlag bzw. Eintrag zu erkennen.
Aufgrund des ähnlichen Aufbaus von Forum und Fotogalerie soll das bestehende System in beiden Foren um die Möglichkeit einer Bewertungsabgabe erweitert werden. Die Bewertung eines Themas verlangt jedoch zunächst die Genehmigung des verantwortlichen Autors. Für diesen existiert die Alternative, eine Bewertung von anderen Benutzern grundsätzlich abzulehnen. Die abgegebenen Bewertungen, welche sich auf den primären Themeneintrag beziehen, sollen ausgewertet und so bereits beim Themenüberblick ein erster Meinungstrend veröffentlicht werden. Bei allgemeinen Foren kann dabei auf die Brauchbarkeit eines Themas bzw. auf die Qualität des Eintrags geschlossen werden.

Allgemeine Bedingungen

  • Der Autor des Eintrags kann eine Bewertung grundsätzlich ablehnen.
  • Jeder Benutzer kann seine Bewertung nur einmal abgeben (kein Mehrfach-Voting).
  • Eine Bewertung des eigenen Eintrags ist nicht erlaubt.

Vorgehensweise

Bei der Vorgehensweise wurde eine Annäherung an das im Kurs MSP favorisierte Extreme Programming Modell (XP) angestrebt. Einige Aspekte dieses Modells konnten aufgrund der gegebenen Situation jedoch nicht realisiert und mussten demzufolge vernachlässigt werden. Da es sich um ein One-Person-Project handelt, ließ sich Pair-Programming logischerweise nicht verwirklichen, auch ein test-driven Development erwies sich aufgrund der bestehenden Strukturen und der modifizierenden Arbeitsweise als eher schwierig. Durch vorgegebenes Budget bzw. vorgegebenen Aufwand konnte eine entsprechende an diesem orientierte Qualität realisiert werden.

Bei der Umsetzung wurden die entsprechenden wesentlichen Funktionen, die bei klassischer Softwareentwicklung häufig einem Kritischen Pfad zugeordnet sind, mit höherer Priorität verwirklicht. So steht hier die Funktionalität der Bewertungsabgabe bzw. deren korrekte Auswertung im Vordergrund, die optischen Aspekte werden zunächst mit geringerer Priorität umgesetzt.


1. Iteration (Abfrage der Bewertungserlaubnis)

User Story
Es soll für den Verfasser eines neuen Themas möglich sein, seinen Eintrag von anderen Benutzern bewerten zu lassen bzw. die Bewertung weiterer Benutzer abzulehnen.
Die Tasks für diese User Story beziehen sich auf das allgemeine Forum, für welches diesbezüglich die Einstellung "Bewertung erlaubt" als Default angegeben ist. Die vom Autor gewählte Einstellung wird in die Vorschau übernommen, kann jedoch vor dem endgültigen Absenden des Eintrags wieder geändert werden.

Tasks

  • Erweitern der Datenbanktabelle "forum_thread", um die Entscheidung des Verfassers bzgl. der Bewertung abspeichern zu können
  • Modifikation des Eingabeformulars beim Erstellen eines neuen Themas
  • Entsprechende Gestaltung der Vorschau


2. Iteration (Abgabe der Bewertung)

User Story
Benutzer können unter der Voraussetzung, dass die Bewertung vom Autor genehmigt wurde, das Thema bei ihrer Antwort evaluieren. Sie erhalten dazu eine Auswahl von "sehr gut" bis "unbrauchbar", die mit bestimmten Bewertungspunkten hinterlegt ist (je besser desto höhere Punktzahl, max. werden 5 Punkte vergeben, im schlechtesten Fall 1 Punkt). Hierbei wird auch berücksichtigt, wenn keine Bewertung erlaubt ist bzw. der aktuelle Benutzer bereits eine Bewertung abgegeben hat.

Tasks

  • Erweitern der Datenbanktabelle "forum_post" zum Abspeichern der Bewertungspunkte
  • Anzeige eines Themas und Modifikation des Antwortformulars
  • Entsprechende Gestaltung der Vorschau
  • Auswertung der vergebenen Punktzahl
  • Darstellung des Bewertungsergebnisses in der Themenübersicht


3. Iteration (Die Tasks beziehen sich auf das Fotoforum)

User Story
Durchführung der Tasks der 1. und 2. Iteration analog zum Forum, d.h. die Inhalte können für die Modifikation des Fotoforums übernommen werden. Die Erweiterung der Datenbank wurde bereits in Iteration 1 und 2 realisiert. Da bei der Veröffentlichung von Fotos noch eher ein persönlicher / privater Aspekt eine Rolle spielen kann, wird hier die Bewertung als default-Einstellung nicht gestattet.

Tasks

  • Modifikation des Eingabeformulars beim Erstellen eines neuen Bildeintrags
  • Entsprechende Gestaltung der Vorschau
  • Anzeige eines Bildeintrags und Modifikation des Antwortformulars
  • Entsprechende Gestaltung der Vorschau
  • Auswertung der vergebenen Punktzahl
  • Darstellung des Bewertungsergebnisses in der Themenübersicht des Fotoforums


Test

Beim Testen kamen keine automatisierten Klassen- und Modultests zum Einsatz, stattdessen mussten aufgrund der Budgetbeschränkung eine Reihe manueller Tests durchgeführt werden. Die durchgeführten Tests berücksichtigen die verschiedenen Kombinationen, die sich aus Bewertungserlaubnis, gewünschter Vorschau, Bewertungsmöglichkeiten und der konkreten Benutzer/Autor-Beziehung (z.B. Identität) ergeben.


Implementierung

Modifizierte und neu erstellte Dateien

Folgende eStudy-Quellkodedateien und SQL-Skripten wurden im Rahmen dieser Hausübung modifiziert:

10 überarbeitete Dateien (im Forum):

forum/newtopic.php
forum/templates/newtopic.html
forum/templates/topreview.html
forum/showtopic.php
forum/reply.php
forum/templates/replyform.html
forum/templates/replypreview.html
forum/templates/topics.html
forum/templates/topicrow.html
forum/board.php

3 neue Dateien:
Hierbei handelt es sich um Bilddateien, deren Inhalt einen leeren Stern, einen ausgefüllten Stern und einen Stern, welcher ein Kommaergebnis repräsentiert, darstellt. Der Hintergrund der einzelnen Dateien ist transparent, um nicht nur in Kombination mit einem weißen Hintergrund sondern darüberhinaus mit beliebigen Styles eingesetzt werden zu können.

forum/templates/images/star00.gif		// leerer Stern
forum/templates/images/star11.gif		// ausgefüllter Stern
forum/templates/images/star22.gif		// stellvertretend für einen Teilstern

8 überarbeitete Dateien (im Fotoforum):

fotogallery/newtopic.php
fotogallery/templates/newtopic_2nd.html  	
fotogallery/showtopic.php
fotogallery/reply.php                          
fotogallery/templates/replyform.html
fotogallery/templates/replypreview.html
fotogallery/templates/topicrow.html
fotogallery/board.php

3 neue Dateien:

fotogallery/templates/images/star00.gif		// leerer Stern
fotogallery/templates/images/star11.gif		// ausgefüllter Stern
fotogallery/templates/images/star22.gif		// stellvertretend für einen Teilstern

2 überarbeitete Tabellen:

forum_thread
forum_post

Die im Zuge der Implementierung vorgenommenen Datenbankänderungen ergeben sich aus folgendem Skript.

ALTER TABLE `forum_post` ADD `firstpost_value` TINYINT NOT NULL DEFAULT '0';
ALTER TABLE `forum_thread` ADD `threadrate` TINYINT NOT NULL DEFAULT '1';

1. Iteration

Genehmigung für die Bewertung

Innerhalb dieser User Story wird die Datenbanktabelle "forum_thread" um die Spalte 'threadrate' erweitert, deren Eintrag Auskunft darüber gibt, ob der Autor eine Bewertung seines Beitrags befürwortet oder ablehnt.

Mögliche Werte Bedeutung
0 Bewertung wurde abgelehnt
1 Bewertung ist genehmigt

Als Default wird 1 (= erlaubt) festgelegt.

Dem Verfasser eines Themeneintrags wird in Kombination mit dem üblichen Formular eine Checkbox angeboten, mit Hilfe derer er sein Einverständnis zur Evaluierung seines Eintrags geben kann. Die gewählte Einstellung wird in eine mögliche Vorschau mit übernommen. Das Ablegen der entsprechenden Einstellung erfolgt jedoch erst nach endgültigem Absenden des Formulars (in der Datei newtopic.php, INSERT in die Tabelle "forum_thread"), sodass die Meinung in der Vorschau noch geändert werden kann. Später ist eine Meinungsänderung nicht mehr möglich.

2. Iteration

Zur zweiten Iteration gehört unter anderem das Erweitern der Datenbanktabelle "forum_post" um die Spalte 'firstpost_value', in welcher das abgegebene Bewertungsergebnis abgespeichert wird.

Bewertungsabgabe
Mögliche Werte Bedeutung / Qualität des Eintrags
0 Bewertung wurde abgelehnt
oder
keine Bewertung abgegeben
1 - 5 Bewertung mit entsprechender Punktzahl wurde abgegeben
(5 Pkt. = sehr gut, 4 Pkt. = gut, 3 Pkt. = mittel, 2 Pkt. = wenig brauchbar, 1 Pkt. = unbrauchbar)

Als Default wird 0 (= keine Bewertung abgegeben) festgelegt.


Beim Anzeigen eines gewählten Themas wird zunächst in der Datei showtopic.php die Spalte 'threadrate' des Threads mit entsprechender 'threadid' aus der Tabelle "forum_thread" ausgelesen, um die Erlaubnis zur Bewertung des Eintrags einzuholen. Aufgrund der Basis dieser Entscheidung wird der String $evaluate zusammengestellt, der in replyform.html in das Formular eingebaut wird.


Die auf ein Thema antwortende Person erhält je nach Situation eine entsprechende Meldung.

  • Für den Fall, dass eine Bewertung möglich ist, Autor und aktueller Benutzer nicht identisch sind und bisher keine Bewertung abgegeben wurde, erhält der Replier ein Antwortformular mit Radiobuttons, die entsprechend obiger Tabelle ausgewertet werden.
  • Ist der Antwortende selbst der Autor des Themeneintrags so erhält er keine Meldung, da eine Selbstbewertung nicht gestattet ist.
  • Hat ein User dieses Thema bereits einmal bewertet, so ist keine zweite Meinungsabgabe mehr möglich. Er erhält lediglich eine Bestätigung seines Abstimmungsergebnisses angezeigt. Z.B.
Bewertung:	Sie haben bereits mit "gut" abgestimmt!

Themenübersicht

Analog zur Implementierung in showtopic.php erfolgt die Vorgehensweise in /forum/reply.php. Hier wird zur Abgrenzung die Variable $rating verwendet, welche in replypreview.html ausgelesen wird. In der Datei reply.php wird des Weiteren die vom Benutzer für den ursprünglichen Artikel vergebene Bewertungspunktzahl in die Tabelle "forum_post" eingetragen.

Die Dateien topic.html / topicrow.html wurden insofern erweitert, als dass die Tabelle um eine entsprechende Spalte zur Bewertungsanzeige erweitert wurde. Die in topicrow.html verwendete Variable $rate enthält den HTML-Code für das Auswertungsergebnis und wird in der Datei board.php definiert. Hier werden je nach Resultat die Anzahl von ausgefüllten, teils gefüllten und leeren Sternen berechnet.

3. Iteration

Die Änderungen am Fotoforum erfolgten in ähnlicher Weise zur Realisierung im Forum und beziehen sich auf die oben aufgeführten Dateien.


Mögliche Erweiterungen des Features

Die Umsetzung des grafischen Bewertungssystems konnte annähernd im Rahmen des vorgegebenen Budgets realisiert werden. Eine Erweiterung, beispielsweise in dem Sinne, dass eine Sortierung der Themen nach Bewertungspunkten vorgenommen wird, war im gegebenen Rahmen der Hausübung nicht möglich. Zu beachten wäre an dieser Stelle, dass bei Veröffentlichung des Bewertungsergebnises erst bei einer bestimmten Anzahl von Bewertungen, die Themen, welche noch nicht genügend Stimmen erhalten haben, automatisch am Ende der Liste angezeigt werden müssten. Dies würde das Ergebnis in gewisser Weise verfälschen.