SWTPra-Team4 - Heinz Nixdorf Institut
Transcription
SWTPra-Team4 - Heinz Nixdorf Institut
Heinz Nixdorf Institut Fachgruppe Softwaretechnik Zukunftsmeile 1 33102 Paderborn Pflichtenheft im Rahmen des Softwaretechnikpraktikums 2014 Inhaltsverzeichnis 1 2 Zielbestimmung 1 1.1 1.2 1.3 1 1 1 Produkteinsatz 2.1 2.2 2.3 2.4 3 Beschreibung des Problembereichs Glossar . . . . . . . . . . . . . . Modell des Problembereichs . . . Geschäftsprozesse . . . . . . . . . 2.4.1 Gesamtablauf . . . . . . . 2.4.2 Aufbau . . . . . . . . . . 2.4.3 Spielzug durchführen . . . 2.4.4 Spielsteine legen . . . . . 2.4.5 Punkte berechnen . . . . . 3.2 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die Use-Cases des Servers . . . . . 3.1.1 Zug überprüfen . . . . . . . 3.1.2 Spiel erstellen . . . . . . . . 3.1.3 Spiel kontrollieren . . . . . 3.1.4 Spielkonfiguration erstellen Die Use-Cases des Clients . . . . . 3.2.1 Mit Server verbinden . . . . 3.2.2 Zug durchführen . . . . . . 3.2.3 Spiel abschließen . . . . . . 3.2.4 Spiel Auswählen . . . . . . Die Oberfläche . . . . . . . . . . . 3.3.1 Der Spielkonfigurator . . . . 3.3.2 Die Game Engine . . . . . . 3.3.3 Der Smartphone-Spieler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Systemumgebung . . . . . . . . . 4.1.1 Softwareumgebung . . . . 4.1.2 Hardwareumgebung . . . 4.1.3 Android-Umgebung . . . Nicht-funktionale Anforderungen Abbildungsverzeichnis 3 4 6 6 6 9 10 10 10 12 Produktcharakteristiken 4.1 II 3 . . . . . . . . . Produktfunktionen 3.1 4 Ziele der Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zielgruppe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modularisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 13 14 15 17 19 20 21 23 24 25 25 25 26 28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 28 29 29 32 1 Zielbestimmung Das Brettspiel Scrabble erfreut sich seit langem großer Beliebtheit. Wir wollen mit einer netzwerkfähigen Version neue Möglichkeiten bieten gegen Freunde aus aller Welt anzutreten. Die Anwendung erlaubt die Erstellung personalisierter Spiele, unter anderem durch die Auswahl von englischer oder deutscher Sprache oder Kategorien, beispielsweise „Tiere“. Außerdem kann das Spielbrett mithilfe einer graphischen Oberfläche individuell gestaltet werden. Die Software besteht aus ein Spielkonfigurator und einem Game Engine auf Server-Seite und mehreren Clients. Clients können KI-Spieler, Smartphone-Spieler, PC- oder Smartphone-Beobachter sein. 1.1 Ziele der Entwicklung Die Schwerpunkte dieses Projektes liegen auf Benutzerfreundlichkeit, Personalisierbarkeit und Netzwerkfähigkeit. Die Applikation für Android-Smartphones sowie das Eclipse-Plugin zur Spielkonfiguration sollen von Nutzern mit grundlegenden Computerkenntnissen verwendet werden können. 1.2 Zielgruppe Die Zielgruppe sind Smartphone-User mit ausreichend Vorkenntnissen für die Installation und Benutzung einer einfachen App. Für die individuelle Gestaltung des Spielfelds sollten ausreichend Computerkenntnisse vorhanden sein, um Eclipse und ein Eclipse-Plugin erfolgreich zu installieren. Dabei wollen wir vor allem Nutzer jüngeren bis mittleren Alters erreichen, da diese den Großteil der Nutzer von Smartphone-Spielen ausmachen. 1.3 Modularisierung Zum Erfüllen der gestellten Anforderungen, ist unser Produkt modularisiert in eine Client-ServerArchitektur mit folgenden Komponenten: Eine Server-Komponente bietet die gemeinsame Plattform für mehrere Clients, die über ein Netzwerk mit dem Server verbunden sind. Serverseitig ergänzt wird dies durch einen Spielkonfigurator, der es einem Benutzer ermöglicht, durch eine grafische Benutzeroberfläche Einstellungen für ein Scrabble-Spiel vorzunehmen. Die Game Engine greift auf diese gespeicherte Konfiguration zu und verwendet diese als Basis für ein zu startendes Spiel, an dem sich dann Clients anmelden können. Die Clients für Endbenutzer unterscheiden sich durch 2 Merkmale: Zum einen nach der unterstützten Plattform. Dies wird zum einen eine ClientSoftware auf Basis eines Java-Eclipse-Plugins sein, welches die PC-Plattform bedient. Andererseits wird es dazu eine Software für Geräte mit Android-Betriebssystem geben, welche für Smartphones und Tablets vorgesehen ist. Das zweite Merkmal ist der Funktionsumfang der jeweiligen Software: Für beide Plattformen wird sowohl eine reine Observer-Funktionalität unterstützt, bei welcher der Benutzer das Spiel nur beobachten kann, als auch einen zweiten Modus, in welchem in vollem Umfang am Spiel teilgenommen werden kann. 1 Der Android-Client wird hierbei im Laufe des Projekts von einem externen Dienstleister erworben, da der Kunde dessen Produkt bereits kennt und schätzt. Daher war es der Wunsch des Kunden auf der Grundlage dieses Produktes unsere Software aufzubauen. Weil der Android-Client erst zum Beginn der Implementierung eingekauft wird, ist es zu diesem Zeitpunkt noch nicht möglich, näher auf dessen Entwurf einzugehen. Wir erwarten, dass die eingekaufte Software die von uns spezifizierten Anforderungen erfüllt. Bei Abweichungen werden wir Ergänzungen vornehmen, damit das Modul unseren Erwartungen gerecht wird. Eine weitere Komponente wird ein KI-Spieler sein. Diese künstliche Intelligenz nimmt am Spiel teil, ohne durch einen menschlichen Nutzer gesteuert zu werden. Es ist sowohl möglich, als Mensch gegen KI-Spieler anzutreten, als auch mehrere KI-Spieler gegeneinander antreten zu lassen. Diese Komponente ist auf einem PC ausführbar. 2 2 Produkteinsatz Dieser Abschnitt erläutert den Einsatzbereich der Software. Dies geschieht indem zuerst der Problembereich (Abschnitt 2.1) beschrieben und die wichtigsten Fachbegriffe in einem Glossar (Abschnitt 2.2) definiert werden. Das Modell des Problembereichs (Abschnitt 2.3) stellt in einem Klassendiagramm die Struktur eines Scrabble Spiels übersichtlich dar. Abschließend wird der Ablauf des Spiels in den Geschäftsprozessen (Abschnitt 2.4) mithilfe von Aktivitätendiagrammen veranschaulicht. 2.1 Beschreibung des Problembereichs Bei unserer Scrabble Variante können zwei bis vier Spieler gegeneinander antreten. Ein Spiel beginnt indem eine Spielkonfiguration ausgewählt wird. Die Spielkonfiguration kann sich in den Gewinnbedingungen, der Größe des Spielbretts, der Verteilung der Premiumfelder und der Sprache unterscheiden. Außerdem ist es möglich eine Kategorie von erlaubten Wörtern selber zu spezifizieren. Anschließend erhält jeder Spieler zufällig 7 der insgesamt 100 Spielsteine und der Rest wird in einem Beutel abgelegt. Das Spiel läuft in Spielzügen ab wobei drei unterschiedliche Spielzüge möglich sind. Zum einen können die Spieler Spielsteine auf das Spielbrett legen, Spielsteine mit denen aus dem Beutel tauschen oder aussetzen. Spielsteine die platziert werden müssen an ein bereits auf dem Spielbrett liegendes Wort angrenzen. Da zu Beginn noch keine Wörter vorhanden sind, muss das erste Wort das Startfeld (gekennzeichnet durch das Sternsymbol in Abbildung 2.1) überdecken. Die in einem Spielzug gelegten Spielsteine müssen immer zusammen mit den angrenzenden Spielsteinen gültige Wörter der Spielvarianten ergeben. Wurden die Spielsteine gelegt, wird anschließend aus den Werten der Spielsteine aus denen die neu entstandenen Wörter bestehen und den darunter liegenden Premiumfeldern die Punkte berechnet, welche dem Spieler gut geschrieben werden. Endet das Spiel werden den Spielern Punkte in Höhe der auf seiner Ablagebank befindlichen Spielsteine abgezogen. Der Spieler mit den meisten Punkten gewinnt. Abbildung 2.1: Beschreibung des Problembereichs: Ein Scrabble-Spielfeld 3 2.2 Glossar Das Glossar erläutert die in diesem Dokument verwendeten Begriffe. In Klammern stehen jeweils die englischen Begriffe, die auch in der Benutzeroberfläche verwendet werden, wenn diese auf Englisch eingestellt ist. Ablagebank (rack) Jeder Spieler besitzt eine Ablagebank. Auf dieser liegen bis zu 7 Spielsteine, welche direkt nach dem Legen eines Wortes wieder aufgefüllt werden. Beobachter (observer) Ein Beobachter ist ein Client, der sich ein Spiel ansieht, ohne in dieses einzugreifen. Beutel (bag) Der Beutel enthält die Spielsteine, welche noch nicht auf dem Spielbrett oder der Ablagebank eines Spielers liegen. Aus diesem Beutel können die Spieler neue Steine nachziehen. Blankostein (blank tile) Ein Blankostein ist ein besonderer Spielstein, der als Joker fungiert. Er kann für jeden beliebigen Buchstaben eingesetzt werden kann. Beim Legen weist der Spieler dem Stein einen Buchstaben zu, den er während des ganzen Spieles behält. Blankosteine geben keine Punkte. Client Clients melden sich am Server an um Spiele zu beobachten oder selbst mitzuspielen. Doppelter / dreifacher Buchstabenwert (double-letter / triple-letter) Felder können einen doppel- ten oder dreifachen Buchstabenwert haben. Solche Felder gehören zu den Premiumfelder. Die Punkte eines Spielsteins werden mit zwei bzw. drei multipliziert, wenn dieser Spielstein auf einem solchen Feld liegt. Doppelter / dreifacher Wortwert (double-word / triple-word) Felder können einen doppelten oder dreifachen Wortwert haben. Solche Felder gehören zu den Premiumfelder. Die Punkte des gesamten Wortes werden mit zwei bzw. drei multipliziert, wenn ein Spielstein des Wortes auf einem solchen Feld liegt. Feld (cell) Ein einzelnes Feld ist ein Teil des Spielbretts, auf dem ein Spielstein abgelegt werden kann. Insgesamt gibt es zwei Arten von Feldern. Neben den normalen Feldern, gibt es zusätzlich Premiumfelder, zu denen unter anderem auch das Startfeld gehört. Game Engine Die Game Engine ist eine auf dem PC ausführbare Komponente der Software, die alle Clients und Spiele verwaltet. Clients können sich an ihr anmelden und werden entsprechend ihrer Rolle (Beobachter oder Spieler) behandelt. Gewinnbedingung (winning condition) Wenn ein Spieler die Gewinnbedingung erfüllt, gewinnt er das Spiel und beendet es damit. Die Gewinnbedingung kann sein, dass alle Spielsteine auf dem Spielbrett gelegt sind, aber auch die Überschreitung einer Mindestanzahl an Punkten kann als Gewinnbedingung festgelegt werden. Diese Mindestanzahl sollte nicht unter 25 Punkten liegen. Host Der Host bedient den Server. Er kann Spiele erstellen, pausieren und beenden. Kategorie (category) Der Server wählt für jedes Spiel eine Sprache oder eine Kategorie aus. Es werden dann für dieses Spiel nur Wörter aus dieser Sprache bzw. Kategorie zugelassen. Beispiele für Kategorien wären etwa „Pflanzen“, „Länder“ oder „Computer-Pioniere“. KI-Spieler (AI player) Dies ist ein Spieler, der ohne einen menschlichen Benutzer mit dem Server kommuniziert und spielt. KI steht für „künstliche Intelligenz“. Das bedeutet, dass er z.B. automatisch aus den auf seiner Ablagebank zur Verfügung stehenden Spielsteinen Wörter bildet und auf das Spielbrett legt. 4 Komponente (component) Die Komponenten sind einzelne Teile der zu entwickelnden Software, die dem Kunden zur Verfügung gestellt werden soll. Solche Komponenten sind der Spielkonfigurator, die Game Engine, der KI-Spieler und der Smartphone-Spieler. Modul (module) Ein Modul ist eine abgeschlossene Einheit innerhalb der Software, beispielsweise die Darstellung des Spielbretts. Netzwerk (network) Die Kommunikation zwischen Clients und Server funktioniert über ein lokales Netzwerk (LAN) sowie über das Internet. Nutzer (user) Die Nutzer sind die Anwender der Software. Sie können die Spiele verwalten, spielen und beobachten. Sowohl Clients als auch Hosts sind Nutzer. Premiumfeld (premium cell) Premiumfelder bringen mehr Punkte als andere Felder. Siehe Doppelter / dreifacher Buchstabenwert und Doppelter / dreifacher Wortwert Runde (round) Unter einer Runde versteht man, dass jeder Spieler genau einmal am Zug war. Server Der Server beinhaltet den Spielkonfigurator und die Game Engine. Smartphone-Beobachter (smartphone observer) Dies ist ein Beobachter, der auf einem Smartpho- ne ausgeführt werden kann. Smartphone-Spieler (smartphone player) Dies ist ein Spieler, der auf einem Smartphone ausgeführt werden kann. Spieler (player) Ein Spieler ist ein Client, der an einer Scrabble-Partie aktiv teilnimmt. Spielkonfigurator (configuration manager) Der Spielkonfigurator ist eine Komponente des Servers, die erlaubt Spiele mit individuellen Einstellungen anzulegen. Das betrifft verschiedene Sprachen oder Kategorien, Spielbretter und Gewinnbedingungen. Spielbrett (board) Das Spielbrett ist ein Quadrat, das durch senkrechte und waagerechte Linien in Felder aufgeteilt ist. Das Spielbrett und die darauf gebildeten Wörter können von allen Spielern gesehen werden. Spielstein (tile) Ein Spielstein hat einen Buchstaben und eine Punktzahl. Ausnahme ist dabei der Blankostein. Je nach Sprache oder Kategorie kann dabei die Anzahl an Spielsteinen mit einem bestimmten Buchstaben und die Punktzahl eines Buchstaben variieren. Spielsteine werden benutzt um Wörter zu legen und dadurch Punkte zu erhalten. Spielvariante (alternative game rules) Spielzug (action) Wenn ein Spieler am Zug ist, muss er eine der folgenden Optionen ausführen: Aussetzen bzw. Passen (pass) Der Spieler macht in diesem Spielzug nichts. Das Spielbrett und die Ablagebank des Spielers ändern sich nicht. Der Spieler erhält keine Punkte. Diese Option ist immer möglich. Spielsteine tauschen (exchange tiles) Der Spieler kann einige seiner Spielsteine gegen Spiel- steine aus dem Beutel eintauschen, sofern noch ausreichend Spielsteine im Beutel sind. Das Spielbrett leibt unverändert und der Spieler erhält keine Punkte. 5 Spielen (play) Der Spieler legt mindestens einen Spielstein auf das Spielbrett, sodass ein gülti- ges Wort entsteht. Dabei dürfen durch das Hinzufügen der Spielsteine keine ungültigen Wörter entstehen, die Bedeutung der Wörter darf aber verändert werden. Der Spieler erhält die Punkte aller Buchstaben, die mit den von ihm hinzugefügten Spielsteinen Wörter bilden, gegebenenfalls durch Premiumfelder vervielfacht. Anschließend erhält der Spieler so viele Spielsteine aus dem Beutel wie er gelegt hat, sofern noch ausreichend Spielsteine darin enthalten sind. Startfeld (central cell) Das Startfeld liegt in der Mitte des Spielbretts. Das erste gelegte Wort muss einen Spielstein auf dem Startfeld haben. Das Startfeld ist ein Premiumfeld mit doppeltem Wortwert. Zug (action) Siehe Spielzug. 2.3 Modell des Problembereichs Die Abbildung 2.2 zeigt die Struktur von Scrabble als UML-Klassendiagramm. Das Spiel selbst wird durch die Klasse Scrabble darstellt. An jedem Spiel nehmen 2 bis 4 Spieler teil, welche jeweils ihre beiden Nachbarspieler kennen, sodass eine feste Zugreihenfolge entsteht. Zu jedem Scrabblespiel gehört außerdem ein Wörterbuch, welches alle Wörter enthält, die gelegt werden dürfen. Jedes dieser Wörter darf mehrmals auf dem Spielbrett liegen. Ein Spielstein kann maximal zwei Wörter gleichzeitig bilden, da es nur zwei Leserichtungen gibt (oben-unten und links-rechts). Das Spielbrett besitzt eine variable Größe, muss jedoch immer quadratisch sein. Das heißt die Größe des Feldes beschreibt die Länge einer Seite und das Quadrat dieses Wertes bestimmt die Anzahl der Felder aus denen sich das Spielbrett zusammen setzt. Diese Felder können Premiumfelder sein, wobei die Anzahl der erlaubten Premiumfelder durch die Größe des Spielfeldes begrenzt wird. Es muss genau ein Startfeld existieren. Sobald Spielsteine auf dem Spielbrett liegen müssen sie zu mindestens einem Wort gehören das gebildet wird. Der Blankostein besitzt die Besonderheit, das der Buchstabe erst festgelegt wird, wenn er auf dem Spielbrett liegt. 2.4 Geschäftsprozesse Im Folgenden werden die Abläufe, die in einem Scrabble-Spiel vorkommen, erläutert und durch Aktivitätsdiagramme veranschaulicht. Ein Sternchen („*“) bedeutet dabei, dass auf den Punkt in einem folgenden Abschnitt genauer eingegangen wird. Betrachtet wird ein Spiel innerhalb eines Turniers, da dies dem Produkteinsatz am nächsten kommt. Das heißt, es gibt einen Moderator (hier „Host “ genannt), der insbesondere den Spielaufbau organisiert. 2.4.1 Gesamtablauf Wie in Abbildung 2.3 zu sehen, muss ein Spiel Scrabble zunächst aufgebaut werden, bevor es gespielt werden kann. Dieser Aufbau wird im Abschnitt 2.4.2 genauer erläutert. Nach dem Aufbau machen die Spieler, angefangen beim Startspieler, nacheinander ihren Spielzug. Wie genau ein Spielzug abläuft, wird im Abschnitt 2.4.3 beschrieben. Nach jedem Zug wird geprüft, ob das Spiel zu Ende ist: 6 Abbildung 2.2: Modell des Problembereichs 7 • Wurde eine Punktegrenze als Siegbedingung spezifiziert, wird diese überprüft. Hat der Spieler sie überschritten, gewinnt er sofort. • Das Spiel ist ebenfalls beendet, wenn ein Spieler alle seine Steine gelegt hat und nicht mehr nachziehen kann (d.h. seine Ablagebank ist nach seinem Zug leer). Dieser Spieler bekommt die Summe der Buchstabenwerte der nicht gelegten Steine aller anderen Spieler gutgeschrieben. • Zudem ist das Spiel auch dann beendet, wenn alle Spieler zwei Runden über nacheinander gepasst haben. In den beiden letzten Fällen werden außerdem allen Spielern, die noch Steine auf ihrer Ablagebank haben, die Summe der Buchstabenwerte dieser Steine vom Punktestand abgezogen. Es gewinnt dann der Spieler mit den meisten Punkten Ist das Spiel hingegen noch nicht beendet, ist der nächste Spieler an der Reihe. Abbildung 2.3: Gesamtablauf eines Scrabble-Spiels 8 2.4.2 Aufbau Um ein Turnierspiel zu spielen, melden sich zunächst potenzielle Mitspieler beim Host an. Möchte der Host ein Spiel starten, wählt er zunächst eine geeignete Spielkonfiguration: Er bestimmt die Mitspieler und deren Sitzreihenfolge, die Siegbedingung, die Beschaffenheit des Spielfeldes und das zugrundeliegende Wörterbuch (entweder ein Wörterbuch einer normalen Sprache, oder ein Wörterbuch mit Begriffen einer spezifischen Kategorie). Das alles geschieht in beliebiger Reihenfolge (siehe Abbildung 2.4). Nachdem die Konfiguration gewählt ist, wird den Mitspielern mitgeteilt, dass das Spiel nun beginnen kann. Alle Spieler ziehen jetzt noch sieben Steine und die ersten Spielzüge können durchgeführt werden. Abbildung 2.4: Aufbau eines Scrabble-Spiels 9 2.4.3 Spielzug durchführen Wie in Abbildung 2.5 dargestellt, hat ein Spieler drei Optionen, wenn er am Zug ist: Er kann einfach passen, er legt regelkonform Spielsteine auf das Spielfeld (siehe Abschnitt 2.4.4), oder er tauscht beliebig viele seiner Steine mit dem Beutel (sofern noch genügend Steine im Beutel sind). Abbildung 2.5: Spielzug durchführen 2.4.4 Spielsteine legen Legt ein Spieler Spielsteine, wird zunächst überprüft, ob dies ein gültiger Spielzug ist (ob die Steine in einer Reihe liegen, das Wort im Wörterbuch steht, etc.). Ist der Zug ungültig, muss er die Steine wieder zurücknehmen und einen neuen Spielzug machen. Andernfalls werden die Punkte für die gelegten Steine berechnet (siehe Abschnitt 2.4.5) und dem Punktestand des Spielers gutgeschrieben. Danach zieht er Steine nach bis er sieben hat, oder bis der Beutel leer ist (siehe Abbildung 2.6). 2.4.5 Punkte berechnen Abbildung 2.7 zeigt, wie die Punkte des Spielzugs berechnet werden: Zunächst werden die doppelten / dreifachen Buchstabenwerte angewandt, auf denen die neuen Steine liegen. Danach werden nacheinander alle neu entstandenen bzw. veränderten Worte betrachtet. Um jeweils den Wortwert zu ermitteln, werden alle Buchstabenwerte addiert und dann alle doppelten / dreifachen Wortwerte angewandt, die durch die gerade gelegten Steine überdeckt wurden. Die Wortwerte werden zusammengezählt um schließlich zu ermitteln, wie viele Punkte der Spieler mit diesem Spielzug gemacht hat. 10 Abbildung 2.6: Spielsteine legen Abbildung 2.7: Punkte berechnen 11 3 Produktfunktionen 3.1 Die Use-Cases des Servers Der Server besteht aus der Game-Engine und dem Spielkonfigurator. Der Host-User und die Spielsteuerung treten im Folgenden als Aktoren auf. Die Spielsteuerung wird deswegen als Aktor angesehen, weil sie ohne weitere Einwirkungen des Hosts selbstständig Züge überprüfen und von an Spielen beteiligten Spielern Züge anfordern kann. Abbildung 3.1: Use-Cases für den Server Abbildung 3.1 zeigt die 4 Use-Cases des Servers, aufgeteilt auf Game Engine und Spielkonfigurator. Dies sind alle Use-Cases, die innerhalb der Systemgrenze des Scrabble-Servers möglich sind. 12 3.1.1 Zug überprüfen Abbildung 3.2: Überprüfen eines Zuges Beschreibung Der in Abbildung 3.2 gezeigte Use-Case erläutert, wie das Überprüfen eines Zuges strukturiert sein soll. Dabei wird der gegebene Zug erst überprüft und anschließend ausgeführt, wenn er gültig war. Zum Schluss möchte die Spielsteuerung noch die beteiligten Spieler und Beobachter über die Änderungen am Spiel informieren. Falls der momentane Zug das Spiel beendet, weil ein Spieler gewonnen hat so wird dies auch mitgeteilt. Charakteristische Informationen Name Primärer Nutzer Ziel(des Nutzers) Vorbedingung Nachbedingung (bei Erfolg) Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer Zug überprüfen Spielsteuerung Überprüfen, ob ein gegebener Zug legitim ist Server hat einen Zug übermittelt bekommen Der Zug wird auf das Spiel übertragen Spieler und Beobachter werden über Änderung informiert Scrabble -Server Spielsteuerung 13 3.1.1.1 Hauptszenario Nummer 1 2 3 Nutzer Spielsteuerung Spielsteuerung Spielsteuerung 4 Spielsteuerung Aktivität Erhält einen Zug Überprüft Zug Führt Änderungen am laufenden Spiel innerhalb der Game Engine durch Schickt Informationen über den neuen Spiel-Zustand an Spieler und Beobachter 3.1.1.2 Alternativszenario - Spielzug ist nicht legal (Alternative zu 2) Nummer 2.1 2.2 Nutzer Spielsteuerung Spielsteuerung Aktivität Erkennt, dass der angegebene Spielzug nicht legal ist Fordert neuen Zug vom momentanen Spieler an 3.1.2 Spiel erstellen Abbildung 3.3: Erstellen eines Spiels Beschreibung Das Diagramm in Abbildung 3.3 beschreibt, wie der Host ein Spiel einrichtet und erstellt. Dieses Diagramm basiert auf den folgenden Szenariotabellen, welche die Struktur des Erstellen eines Spieles wiedergeben. Dabei wird zuerst ausgehend vom Host-User eine Spielerstellung bei der Spielsteuerung beantragt. Eine gültige Spielkonfiguration muss dabei der Spielsteuerung übergeben werden. Die Steuerung erstellt nun darauf ein Spiel und fordert den jeweiligen Startspieler auf, seinen ersten Zug zu machen. 14 3.1.2.1 Charakteristische Information Name Primärer Nutzer Ziel(des Nutzers) Vorbedingung Nachbedingung (bei Erfolg) Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer Spiel erstellen Spielsteuerung Ein neues Spiel innerhalb der Game-Engine initialisieren Host hat eine gültige Spielkonfiguration sowie eine Liste von Mitspielern und Beobachtern übermittelt Game Engine erstellt ein neues Spiel, welches parallel zu bestehenden Spielen läuft. Die Spielsteuerung fordert den ersten Zug vom Startspieler an. Scrabble -Server Host, Spielsteuerung 3.1.2.2 Hauptszenario Nummer 1 2 3 4 5 6 Nutzer Host Host Host Host Spielsteuerung Spielsteuerung 7 8 Spielsteuerung Spielsteuerung Aktivität Host möchte ein neues Spiel starten Host wählt Spieler aus Host legt Startspieler fest Host übermittelt Informationen Erstellt das Spiel aus der Konfigurationsdatei Gibt die ausgewählte Spielkonfiguration allen Spielern und Beobachtern bekannt Wartet 10 Sekunden Fordert den festgelegten Startspieler auf seinen Zug zu machen 3.1.2.3 Alternativszenario 1 - Startspieler ist nicht spezifiziert(Alternative zu 3) Nummer 3.1 3.2 Nutzer Host Host Aktivität Wählt einen Startspieler zufällig aus Zurück zu 4 3.1.2.4 Alternativszenario 2 - Timeout für KI wird eingeschaltet(Alternative zu 4) Nummer 4.1 4.2 Nutzer Host Host Aktivität Schaltet 5-Sekunden Timeout für KI ein Zurück zu 4 3.1.3 Spiel kontrollieren Beschreibung Das gezeigte Diagramm (Abbildung 3.4) beschreibt, wie der Host das Spiel manipulieren kann. Dieses Diagramm ist auf den folgenden Szenariotabellen basiert, welche den Prozess der Manipulation des Spieles durch den Host wiedergeben. Der Host soll zu einem beliebigen Zeitpunkt in der Lage sein, ein beliebiges Spiel zu pausieren, wieder fortzusetzen oder ganz zu beenden. Alle Mitspieler und Beobachter werden über diese Änderungen informiert. 15 Abbildung 3.4: Kontrollieren eines Spiels Charakteristische Informationen Name Primärer Nutzer Ziel(des Nutzers) Vorbedingung Nachbedingung (bei Erfolg) Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer Spiel kontrollieren Spielsteuerung Das momentan ausgewählte Spiel mit dem jeweiligen Befehl manipulieren Host hat der Spielsteuerung den jeweiligen Befehl übermittelt sowie eine Kennung für das Spiel, das manipuliert werden soll Der Zustand des momentanen Spiels verändert sich Spieler und Beobachter werden über Änderung informiert Scrabble -Server Spielsteuerung, Host 3.1.3.1 Hauptszenario 1 - Pausieren Nummer 1.1 1.2 1.3 Nutzer Host Spielsteuerung Spielsteuerung Aktivität Drückt Spiel pausieren Pausiert Spiel Benachrichtigt alle Clients 3.1.3.2 Alternativszenario 1 Spiel ist bereits pausiert (Alternative zu 1.2) Nummer 1.2.1 1.2.2 16 Nutzer Spielsteuerung Spielsteuerung Aktivität Erkennt, dass das Spiel bereits pausiert ist Benachrichtigt Host 3.1.3.3 Hauptszenario 2 - Spiel fortsetzen Nummer 2.1 2.2 2.3 2.3 Nutzer Host Spielsteuerung Spielsteuerung Spielsteuerung Aktivität Drückt Spiel fortsetzen Setzt Spiel fort Benachrichtigt alle Clients Fordert den Spieler, der aktuell am Zug ist auf, seinen nächsten Zug zu machen. 3.1.3.4 Alternativszenario 2 - Spiel ist bereits am spielen (Alternative zu 2.2) Nummer 2.2.1 2.2.2 Nutzer Spielsteuerung Spielsteuerung Aktivität Erkennt, dass das Siel bereits läuft Benachrichtigt Host 3.1.3.5 Hauptszenario 3 - Spiel beenden Nummer 3.1 3.2 3.3 Nutzer Host Spielsteuerung Spielsteuerung Aktivität Drückt Spiel beenden Beendet das Spiel Benachrichtigt alle Clients 3.1.4 Spielkonfiguration erstellen Beschreibung In dieser Use-Case Tabelle und den dazugehörigen Abbildungen 3.5 und 3.6 wird erläutert, wie das Erstelllen einer Spielkonfiguration strukturiert ist. Dabei lässt sich in der Spielkonfiguration eine Vielzahl von Einstellungen treffen, die gespeichert und letzten Endes in einer Konfigurationsdatei ausgegeben werden. Diese Datei soll dann später der Gameengine übergeben werden. Charakteristische Informationen Name Primärer Nutzer Ziel(des Nutzers) Vorbedingung Nachbedingung (bei Erfolg) Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer Spielkonfiguration erstellen Host Eine neue Spielkonfiguration innerhalb erstellen Host weiß, welche Konfiguration er erstellen möchte Host hat eine vollständige Spielkonfiguration zur Verfügung Es wird kein Ereignis ausgelöst Scrabble -Server Host 3.1.4.1 Hauptszenario Bemerkung: Alle Auswahlschritte (2-7) können jeweils ausgelassen werden. Die Konfiguration enthät in diesen Fällen Standardwerte für jede Auswahl. 17 Nummer 1 2 3 4 5 6 7 8 Nutzer Host Host Host Host Host Host Host Host Aktivität Erstellt eine neue Spielkonfiguration im Spielkonfigurator Wählt den Spielmodus aus (natürliche oder spezifische Sprache) Wählt eine Sprache innerhalb des jeweiligen Modus aus Wählt eine Spielbrettgröße aus Wählt eine Verteilung von Sonderfeldern aus Wählt eine Verteilung von Spielsteinen inklusive der Punkte aus Wählt eine Gewinnbedingung aus Erzeugt aus den vorherigen Eingaben eine Konfigurationsdatei Abbildung 3.5: Erstellen einer Spielkonfiguration 18 Abbildung 3.6: Bearbeiten von Kategorien 3.2 Die Use-Cases des Clients Der Client umfasst die Use-Cases der Android-Beobachter und Spieler, der PC-Beobachter und Spieler sowie die des KI-Spielers. Zusätzlich tritt der Server als Aktor auf, da innerhalb des Servers die GameEngine von Spielern einen Zug anfordert und der Server alle Verbindungen sowie den Spielablauf steuert, leitet und protokolliert. In Abbildung 3.7 sieht man die einzelnen Use-Cases. Es wird zwischen Beobachter, Spieler und KI unterschieden. Beobachter bilden dabei einen Aktor, von dem Spieler und dadurch auch KI ableiten, denn jeder Client muss die Use-Cases ’mit Server verbinden’ und ’Spiel abschließen’ durchführen. Schließlich ist die KI eine Ableitung vom Spieler. 19 Abbildung 3.7: Use-Cases für Beobachter, Spieler und K.I. 3.2.1 Mit Server verbinden Abbildung 3.8: Mit Server verbinden Beschreibung Der in Abbildung 3.8 dargestellte Use-Case erläutert, wie sich ein Nutzer mit dem Server verbindet und in die Lobby eintritt. 20 Charakteristische Informationen Name Primärer Nutzer Ziel(des Nutzers) Vorbedingung Nachbedingung Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer mit Server verbinden Nutzer Sich mit dem Server zu verbinden Der Nutzer ist aktiv Der Nutzer ist mit dem Server verbunden Nutzer sendet eine Anfrage an den Server Client Server, Beobachter ,Spieler, KI 3.2.1.1 Hauptszenario Nummer 1 2 3 Nutzer Nutzer Server Nutzer Aktivität Kontaktanfrage an Server senden Der Nutzer wird in die Kontaktliste aufgenommen startet Lobby-GUI 3.2.2 Zug durchführen Beschreibung Der Use-Case in Abbildung 3.9 beschreibt, wie ein Zug durchgeführt wird. Dabei hat der Spieler die Wahl, ob er Spielsteine auf das Spielbrett legt, Spielsteine austauscht oder den Zug aussetzt. Das Hauptszenario ist ein von einem Spieler durchgeführter Zug, in dem dem er neue Spielsteine in gültiger Weise auf das Spielbrett gelegt hat. Charakteristische Informationen Name Primärer Nutzer Ziel des Nutzers Vorbedingung Nachbedingung bei Erfolg Auslösendes Ereignis Umgebende Systemgrenze Beteiligte Nutzer Zug durchführen Spieler Einen Spielzug durchführen, der nicht regelwidrig ist Der Spieler ist an der Reihe Der Spieler hat seinen Zug durchgeführt Der Zug des Spielers wird durch den Server angefordert Client Server 3.2.2.1 Hauptszenario Anmerkung: Zu jedem Zeitpunkt ist es einem Spieler möglich, das Spiel zu verlassen (ob selbst veranlasst oder durch andere Umstände, wie z.B. Verlust der Verbindung). Nummer Nutzer Aktivität 1 Server Zug anfordern 2 Spieler Legt Spielsteine auf das Spielbrett 3 Spieler Betätigt Schaltfläche ’Zug durchführen’ 4 Server Zug überprüfen 5 Client Spielsteine aus dem Beuten ziehen (wenn möglich) 21 Abbildung 3.9: Zug durchführen 3.2.2.2 Alternativszenario 1 - Der Spieler möchte Spielsteine tauschen (Alternative zu 2) Nummer 2.1.1 2.1.2 2.1.3 2.1.4 Nutzer Spieler Spieler Client Aktivität Wählt Spielsteine aus, die er austauschen möchte Betätigt Schaltfläche ’Spielsteine tauschen’ Ausgewählte Spielsteine in den Beutel legen Weiter mit 5 3.2.2.3 Alternativszenario 2 - Der Spieler möchte aussetzen (Alternative zu 2) Nummer 2.2.1 22 Nutzer Spieler Aktivität Betätigt Schaltfläche ’Aussetzen’ 3.2.2.4 Alternativszenario 3 - Der Spieler ist eine KI und übertritt den festgelegten Timeout (Alternative zu 3) Nummer 3.1 Nutzer Server Aktivität Ausschluss vom Spiel 3.2.2.5 Alternativszenario 4 - Der Spielzug war nicht gültig (Alternative zu 4) Nummer 4.1 4.2 Nutzer Client Aktivität Fehler anzeigen: ’Der durchgeführte Zug ist ungültig!’ Weiter mit 2 3.2.3 Spiel abschließen Abbildung 3.10: Spiel Abschließen Beschreibung Der Use-Case in Abbildung 3.10 beschreibt die Möglichkeiten der Nutzer aus einem Spiel auszutreten. Ein Beobachter kann jederzeit aus einem Spiel austreten. Wenn ein Spieler austreten will muss erst überprüft werden ob das Spiel zu ende ist oder mit den restlichen Spielern fortgesetzt werden kann, wenn ein Spieler aus einem nicht beendeten Spiel austreten will. 23 Charakteristische Informationen Name Primärer Nutzer Ziel(des Nutzers) Vorbedingung Nachbedingung Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer Spiel abschließen Nutzer Aus dem Spiel auszutreten Der Nutzer ist in einem Spiel Der Nutzer verlässt das Spiel Nutzer betätigt den Beenden Button Client Beobachter ,Spieler, KI , Server 3.2.3.1 Hauptszenario Nummer 1 2 3 4 5 Nutzer Nutzer Server Nutzer Server Server Aktivität Nutzer betätigt den Spiel verlassen Button Server prüft ob das Spiel dadurch beendet werden muss Nutzer verlässt das Spiel Server beendet das Spiel falls weniger als 2 Spieler verbleiben Server zeigt Ergebnistabelle an 3.2.4 Spiel Auswählen Abbildung 3.11: Ein Spiel auswählen Beschreibung In diesem Use-Case (siehe Abbildung 3.11) wird erläutert, wie ein Spieler einem Spiel beitreten kann. Charakteristische Informationen Name Primärer Nutzer Ziel (des Nutzers) Vorbedingung Nachbedingung (bei Erfolg) Auslösendes Ergebnis Systemgrenze Beteiligte Nutzer 24 Spiel auswählen Spieler einem Spiel beizutreten Spieler ist mit dem Server verbunden Der Server startet das Spiel Der Spieler wählt Spiele zum beitreten aus Client Spieler, Server 3.2.4.1 Hauptszenario Nummer 1 2 3 Nutzer Spieler Spieler Spieler Aktivitaet betritt Spiele Lobby wählt Spiele aus denen er beitreten möchte betätigt registrieren Button 3.3 Die Oberfläche 3.3.1 Der Spielkonfigurator Abbildung 3.12: Hauptfenster des Spielkonfigurator In Abbildung 3.12 ist der Spielkonfigurator zu sehen. Dieser bietet eine große Vorschau des Spielbretts und ermöglicht über Buttons Premiumfelder hinzuzufügen. Außerdem können hier die Spielbrettgröße, die Gewinnbedingung und die Sprache bzw. Kategorie des Spiels eingestellt werden. Über den Spielkonfigurator kann man auch neue Kategorien erstellen bzw. vorhandene bearbeiten. Abbildung 3.13 zeigt das Fenster, in dem man die Wörter der Kategorie betrachten, einzelne entfernen und neue hinzufügen kann. Außerdem kann man der Kategorie einen Namen geben. Schließlich lässt sich hier bestimmen, wie viele Spielsteine eines Buchstabens es in dieser Kategorie geben soll und wie viele Punkte diese Wert sind. 3.3.2 Die Game Engine Abbildung 3.14 zeigt die Game Engine, wo man ein Spiel erstellen kann. Man kann hier Spieler auswählen, die an dem Spiel teilnehmen dürfen. Wenn man die Runde startet, wird der Status auf „laufend“ gesetzt, die Spieler, die sich registriert haben werden ausgegraut und „Start Spiel“ durch „Pausiere Spiel“ ersetzt. 25 Abbildung 3.13: Fenster des Spielkonfigurator um Kategorien hinzuzufügen Abbildung 3.14: Benutzeroberfläsche der Game Engine Der Button zum Hinzufügen eines Spielers zum Spiel wird deaktiviert, wenn das Spiel begonnen hat. Der Button zum Bannen nicht, um Spieler nachträglich noch bannen zu können. 3.3.3 Der Smartphone-Spieler In Abbildung 3.15 befindet sich die Abbildung der Benutzeroberfläche des Smartphone-Spielers beim Aussuchen eines Spieles. Der Spieler kann sich die Informationen über ein noch nicht gestartetes Spiel ansehen und sich für mehrere Spiele anmelden. Falls der Spieler in ein Spiel hinzugefügt wird, zeigt Abbildung 3.16 die Benutzeroberfläche zum laufendem Spiel. Der Spieler hat die Möglichkeit den Spielzug-Timeout (falls verwendet), die Punktetabelle, und seine Spielstein einzusehen. Zusätzlich kann er ein oder mehrere Spielsteine auswählen oder die Auswahl eines Steines wieder aufheben. Falls ein einziger Spielstein ausgewählt wurde, kann dieser auf ein Feld des Spielbrett gelegt werden. Ein gelegter Spielstein kann wieder 26 aufgesammelt werden. Der Spieler kann demnach: • sein Spielzug spielen, falls er einen Spielstein auf das Spielfeld gelegt hat. • oder Spielsteine tauschen, falls er einen oder mehrere Spielsteine selektiert hat aber keinen Spielstein gelegt hat. • ansonsten kann er seinen Spielzug passen. Diese Aktionen werden durch den Action-Button ausgeführt, dessen Text sich je nach möglicher Aktion anpasst. Abbildung 3.15: Benutzeroberfläche zum Aussuchen eines Spieles Abbildung 3.16: Spielansicht des Smartphone-Spielers 27 4 Produktcharakteristiken Der Abschnitt Produktcharakteristiken legt die Mindestanforderungen sowohl für die Software- als auch für die Hardwareumgebung fest. Des Weiteren werden die nicht-funktionalen Anforderungen an die Software beschrieben. 4.1 Systemumgebung Damit das Scrabble-Spiel optimal ausgeführt werden kann, werden gewissen Anforderungen an die Systemumgebung gestellt. Eine Maschine, auf dem eine Komponente des Projekts ausgeführt werden soll, muss diese Anforderungen erfüllen. Für den Produkttest steht sowohl ein PC, als auch ein Smartphone bereit. Die Hardware ist für Entwickler, als auch für unabhängige Tester in unserem Unternehmen frei zugänglich. Die PC-Konfiguration besteht dabei aus einem x86-Prozessor mit 2GHz Taktfrequenz, 1GB Arbeitsspeicher auf dem das Betriebssystem Windows XP läuft. Der angeschlossene Bildschirm verfügt über eine Auflösung von 1366x768 Pixeln (16:9-Format). Das Smartphone besitzt einen 1GHz ARMProzessor mit 512MB Arbeitsspeicher und Android 4.0. 4.1.1 Softwareumgebung Die auf einem PC ausführbaren Komponenten (Spielkonfigurator, Game Engine & KI-Spieler) werden in der Programmiersprache Java entwickelt. Folgende Software sollte vorhanden sein: • Java SE 7 • Eclipse Kepler (4.3.2) • Betriebssystem: – Windows: XP oder höher mit installiertem JRE 7 oder neuer – Linux: alle, auf denen JRE 7 oder neuer lauffähig ist – Mac OS X 4.1.2 Hardwareumgebung Eine Maschine, welche Komponenten der Software ausführt, sollte folgende Hardwareanforderungen erfüllen: • Intel-basierte x86- oder x86-64-Plattform mit 2GHz oder mehr • 1 GB Arbeitsspeicher • 750 MB freier Festplattenspeicher – (Neben unserer Software wird auch die Software Eclipse benötigt) 28 4.1.3 Android-Umgebung Der Smartphone-Spieler wird für Android-Geräte ab Version 4.0 (API-level 15) entwickelt. Auf allen Smartphones, auf denen diese Android-Version lauffähig ist, sollte auch das Scrabble-Spiel lauffähig sein. Zusätzlich sollte auf dem Smartphone 50MB an freier Speicherkapazität vorhanden sein. 4.2 Nicht-funktionale Anforderungen Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Erwartungskonformes Spielbrett USE Die Darstellung des Scrabble-Spielbrettes sollte erwartungskonform zum originalen Scrabble-Brettspiel sein. Insbesondere bedeutet das, dass die Repräsentation des Spielbrettes zu mindestens 95% dem Original entspricht. Eine Überprüfung dieser Anforderung kann durch nicht beteiligte Personen erfolgen, die mit dem originalen Brettspiel vertraut sind. Spielkonfiguration erstellen, Zug durchführen Spielgeschwindigkeit an Benutzer ausrichten USE Nach Spielstart sollte eine angemessene Wartezeit vergehen, in der sich die aktiven Spieler mit der gewählten Spielkonfiguration vertraut machen können. Im Spiel selber sollten die aktiven Spieler die Spielgeschwindigkeit selbständig regeln können. Insbesondere heißt dies, dass der Spieler in keinem seiner Spielzüge weder durch Game-Engine, noch durch andere Spieler in Zeitdruck gebracht werden kann. Bei optionaler Zeitbeschränkung für einen Spielzug entfällt diese Anforderung. Alle mit Benutzerbeteiligung Intuitive Benutzerinteraktion USE Die Benutzeroberfläche des Scrabble-Spiels sollte für den Benutzer verständlich sein. Damit ist gemeint, dass man die Software bedienen kann, ohne regelmäßig das Benutzerhandbuch konsultieren zu müssen. Um dies sicherzustellen, sollten mindestens 3 unabhängige Spieler ein Spiel absolvieren, um die Intuitivität zu überprüfen. Alle mit Benutzerbeteiligung Bedienbarkeit der Smartphone-Software USE Im Speziellen gilt für die Android-Komponenten, dass diese auf einem Smartphone mit einer Hand bedienbar sein soll. Eine zweite Hand sollte für die Bedienung also nicht erforderlich sein. Dies kann durch mind. 3 Personen mit unterschiedlichen Handgrößen validiert werden. Alle mit Benutzerbeteiligung 29 Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case 30 Konformität in der Visualisierung zwischen Komponenten USE Die zu entwickelnden Komponenten sollten sich in Aussehen und Darstellung nicht wesentlich unterscheiden. Dies fördert den Wiedererkennungswert und hilft dem Benutzer bei der Bedienung der Software. Hierzu sollten mindestens 90% aller unabhängigen Personen, die alle Komponenten zu sehen bekommen, erkennen, dass es sich um unsere Software handelt. Betrifft alle Use-Cases Zugberechnung KI-Spieler EFFIZIENZ Der Algorithmus für die Berechnung eines Zuges des KI-Spielers darf nicht länger als dem gesetztem Timeout benötigen. In der Regel sollte dies an den Timeout von 5 Sekunden angepasst sein. Eine Überprüfung kann durch eine Simulation von mindestens 1000 Zügen mit einer Stoppzeit durchgeführt werden. Dabei darf keine Simulation länger als 5 Sekunden andauern. Zug durchführen, Zug übermitteln Beschränkte Systemrechte SICHER Alle Komponenten der Scrabble-Variante sollten mit eingeschränkten Systemrechten ausführbar sein. Insbesondere bedeutet dies, dass keinem Programmteil Administratorrechte gewährt werden. Ein Test kann beispielsweise auf einer Linux-Distribution ausgeführt werden, bei dem der ausführende Benutzer nicht im SSuper-UserModus läuft. Betrifft alle Use-Cases Software soll stabil sein SICHER Die Komponenten sollten fehlertolerant gegenüber Ausnahmen sein. So sollte das Verbinden zu einem Spiel bei bestehender Netzwerkverbindung problemlos (insbesondere ohne Neustart der Hardware bzw. Neustart der Software) möglich sein. Im Falle einer getrennten Verbindung vor Spielstart sollte ein erneutes Verbinden möglich sein. Während eines Spieles sollte die Software einen reibungslosen Spielablauf gewährleisten. Insgesamt sollte es maximal bei einem von 100 Spielen zu einem Verbindungsabbruch kommen. Betrifft alle Use-Cases Implementierungssprache Englisch PFLEGE Alle Abgaben, die im Zusammenhang mit der eigentlichen Implementierung der Software stehen, sind ausschließlich in Englisch verfasst. Betrifft alle Use-Cases Name Typ Beschreibung Use-Case Name Typ Beschreibung Use-Case Implementierungsdokumentation (Codedokumentation) PFLEGE Die Implementierung der Software ist durch geeignete Kommentierung des Quellcodes zu vervollständigen. Geeignet zeichnet sich dadurch aus, dass nur hilfreiche Kommentare eingebracht werden. Information, die bereits aus einer ordentlichen Variablen- und Funktionsbenennung gewonnen werden können, sind keine hilfreichen Kommentare. Diese Kommentierung sollte sich zu jeder Zeit an den Javadoc-Standard halten. Betrifft alle Use-Cases Wiederverwendbarkeit der Module PFLEGE Programmstruktur sollte modular aufgebaut sein, sodass die einzelnen Module einfacher gepflegt und bei Bedarf ausgetauscht werden können. Gleichzeitig sorgt die Modularisierung für Wiederverwendbarkeit zwischen Komponenten. Dadurch erhöht sich der Wiedererkennungswert zwischen den Komponenten unseres Unternehmens. Betrifft alle Use-Cases 31 Abbildungsverzeichnis 32 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Beschreibung des Problembereichs: Ein Scrabble-Spielfeld Modell des Problembereichs . . . . . . . . . . . . . . . . Gesamtablauf eines Scrabble-Spiels . . . . . . . . . . . . Aufbau eines Scrabble-Spiels . . . . . . . . . . . . . . . . Spielzug durchführen . . . . . . . . . . . . . . . . . . . . Spielsteine legen . . . . . . . . . . . . . . . . . . . . . . Punkte berechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 8 9 10 11 11 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 Use-Cases für den Server . . . . . . . . . . . . . . . . . . Überprüfen eines Zuges . . . . . . . . . . . . . . . . . . . Erstellen eines Spiels . . . . . . . . . . . . . . . . . . . . Kontrollieren eines Spiels . . . . . . . . . . . . . . . . . . Erstellen einer Spielkonfiguration . . . . . . . . . . . . . Bearbeiten von Kategorien . . . . . . . . . . . . . . . . . Use-Cases für Beobachter, Spieler und K.I. . . . . . . . . Mit Server verbinden . . . . . . . . . . . . . . . . . . . . Zug durchführen . . . . . . . . . . . . . . . . . . . . . . Spiel Abschließen . . . . . . . . . . . . . . . . . . . . . . Ein Spiel auswählen . . . . . . . . . . . . . . . . . . . . . Hauptfenster des Spielkonfigurator . . . . . . . . . . . . . Fenster des Spielkonfigurator um Kategorien hinzuzufügen Benutzeroberfläsche der Game Engine . . . . . . . . . . . Benutzeroberfläche zum Aussuchen eines Spieles . . . . . Spielansicht des Smartphone-Spielers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 13 14 16 18 19 20 20 22 23 24 25 26 26 27 27