Softwaretechnik- und Softwarepraktikum 2016 - Umsetzung eines verteilten Quarto-Spiels

Die Seite wird erstellt Niko-Veit Benz
 
WEITER LESEN
Softwaretechnik- und Softwarepraktikum 2016

      Umsetzung eines verteilten Quarto-Spiels

                         Lastenheft

                          Auftraggeber
                 Eric Bodden, Christopher Gerking,
                Johannes Geismann, Philipp Schubert
         Fachgruppe Softwaretechnik, Heinz Nixdorf Institut
        Fakulät für Elektrotechnik, Informatik und Mathematik
       Universität Paderborn, Zukunftsmeile 1, 33102 Paderborn

                            Version 1.0.1

                    Paderborn, den 14. April 2016
Inhaltsverzeichnis
1 Zielbestimmung                                                                                                                  1

2 Produkteinsatz                                                                                                                  3
  2.1 Übersicht . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
  2.2 Vorgaben an den Entwicklungsprozess .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
  2.3 Generelle Nutzung des Produktes . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
  2.4 Spielregeln . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
      2.4.1 Spielvorbereitung . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
      2.4.2 Spielverlauf . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
      2.4.3 Spielende . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8
  2.5 Anwendungsszenario: Praktikumsturnier       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   8

3 Produktfunktionen und -leistungen                                                                                                9
  3.1 Netzwerk . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
  3.2 Spielkonfigurator . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
  3.3 Spiel-Engine . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
      3.3.1 Start eines Spiels . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
      3.3.2 Spielverlauf . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
      3.3.3 Turnierorganisation . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
  3.4 Clients . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      3.4.1 PC- und Smartphone-Beobachter             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      3.4.2 Smartphone-Teilnehmer . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      3.4.3 KI-Teilnehmer . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12

A Technische Vorgaben und Hilfestellungen                                                                                         13
  A.1 Allgemeine Richtlinien . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  A.2 Technologien und Entwicklungswerkzeuge . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  A.3 Interfaces . . . . . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
  A.4 Eclipse Modeling Framework (EMF) . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
  A.5 Frameworks zur Erstellung grafischer Editoren               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
  A.6 Android . . . . . . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
  A.7 JSON . . . . . . . . . . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
Inhaltsverzeichnis

Changelog
Version 1.0.1
Abschnitt 2.4.2 Die Berechnung der maximal möglichen Anzahl von Spielsteinen wurde
    korrigiert.

II
1 Zielbestimmung
Ein Großteil der Funktionen moderner technischer Systeme wird durch Software realisiert.
Die steigende Komplexität von Software aufgrund erhöhter Vernetzung und steigender Anfor-
derungen führt dabei zu neuen Herausforderungen bei der Softwareentwicklung. Die verteilte
Realisierung der Softwarekomponenten stellt aufgrund des umfangreichen Kommunikations-
verhaltens eine der Hauptursachen für steigende Komplexität dar. Daher ist es wichtig, eine
klare Trennung zwischen den Komponenten mittels definierter Schnittstellen (Interfaces) zu
schaffen, über die die Komponenten kommunizieren können. Beispiele für komplexe verteil-
te Systeme sind sämtliche Peer-To-Peer-Systeme oder Client-Server-Anwendungen, wie bei-
spielsweise verteilte, netzwerkfähige Strategiespiele.
   Im diesjährigen Softwaretechnik- und Softwarepraktikum soll eine verteilte Anwendung in
Form eines erweiterten, netzwerkfähigen Quarto-Spiels1 entwickelt werden. Ein Server soll
ein Spiel verwalten und die einzelnen Spielzüge überwachen, während unterschiedliche Cli-
ents als Teilnehmer oder Beobachter am Spiel teilnehmen können. Teilnehmer-Clients werden
entweder von einem Menschen bedient oder durch eine künstliche Intelligenz (KI) gesteuert.
Beobachter-Clients sind hingegen nur Zuschauer, die den Spielablauf nicht aktiv beeinflussen
können. Außerdem sollen unterschiedliche Spielkonfigurationen ermöglicht werden.
   Abbildung 1 zeigt eine beispielhafte Situation des Quarto-Spiels. Das Spielfeld besteht aus
einem Raster von Teilfeldern. Zwei Spieler setzen abwechselnd einen Spielstein auf das Spiel-
feld, der vom jeweiligen Gegenspieler ausgewählt wurde. Ziel des Spiels ist es eine Reihe
vorgegebener Länge mit einem gemeinsamen Merkmal, wie Form, Farbe, Muster oder Größe
zu erreichen.

                  Abbildung 1: Quarto-Beispielsituation nach zehn Zügen.

  Im Gegensatz zum Originalspiel, welches ein 4x4-Spielfeld mit 16 Spielsteinen vorsieht,
soll die implementierte Quarto-Version die Möglichkeit bieten, die Größe des Spielfelds sowie
Anzahl und Aussehen der Spielsteine zu konfigurieren.
 1
     https://de.wikipedia.org/wiki/Quarto!

                                                                                            1
1 Zielbestimmung

  Dieses Dokument definiert alle Anforderungen an das zu entwickelnde Produkt. Zunächst
werden in Kapitel 2 der Einsatz des Produktes beschrieben und die Regeln des Spiels fest-
gelegt. Zudem wird eine Beschreibung der einzelnen verteilten Komponenten vorgenommen
und die Aufgabe jeder Komponente erläutert. In Kapitel 3 werden verbindliche sowie optio-
nale Funktionen und Anforderungen definiert. Als letztes werden in Anhang A technische
Vorgaben erläutert und zu verwendende Technologien kurz beschrieben.

2
2 Produkteinsatz
In diesem Kapitel wird beschrieben, welches Produkt bzw. welche einzelnen Produktkompo-
nenten im diesjährigen Praktikum zu erstellen sind und für welchen Einsatz sie vorgesehen
sind. Zunächst wird eine Übersicht über das gesamte Produkt (Abschnitt 2.1) gegeben. An-
schließend werden die Vorgaben an den Entwicklungsprozess definiert (Abschnitt 2.2) und
die generelle Nutzung des Produktes erklärt (Abschnitt 2.3). Danach werden die Quarto-
Spielregeln festgelegt (Abschnitt 2.4). Zuletzt wird ein Anwendungsszenario (Abschnitt 2.5)
beschrieben.

2.1 Übersicht
Mit dem zu entwickelnden Produkt soll es möglich sein, Quarto über ein Netzwerk spielen
zu können. Dabei kommen PCs und Android-Devices zum Einsatz. Die Teilnehmer (im Fol-
genden auch Spieler genannt) in diesem Spiel können dabei menschliche Teilnehmer oder
KI-Teilnehmer2 sein. Es ist auch möglich, ein Spiel ausschließlich mit KI-Teilnehmern durch-
zuführen.
   Das Produkt besteht aus einem Server und mehreren Clients (siehe Abbildung 2). Der Ser-
ver besteht aus den Produktkomponenten Spielkonfigurator und Spiel-Engine. Der Spielkonfi-
gurator bietet für die Eingabe einer konkreten Spielkonfiguration ein Konfigurationsinterface
an. Die erstellte Spielkonfiguration kann von der Spielengine geladen werden. Clients werden
in Beobachter- und Teilnehmer-Clients unterteilt. Die Produktkomponenten PC-Beobachter
und Smartphone-Beobachter sind Beobachter-Clients, während es sich bei den Produktkom-
ponenten Smartphone-Teilnehmer (eine Smartphone-Anwendung für menschliche Teilneh-
mer) sowie KI-Teilnehmer (ein PC-Client) um Teilnehmer-Clients handelt. Für die Interak-
tion zwischen Server und Clients sind festgelegte Interfaces (für Beobachter und Teilnehmer)
notwendig.
   Abhängig davon, ob Sie am Softwaretechnikpraktikum (SWTPra) oder Softwarepraktikum
(SoPra) teilnehmen, müssen Sie unterschiedliche Komponenten des Produktes selbst entwi-
ckeln. Die Interfaces zwischen den Produktkomponenten werden von allen Teams gemein-
sam in einem zu bildenden Interface-Komitee erstellt. Da Sie außerdem einige Produktkom-
ponenten im Verlauf des Projektes von anderen Teams erwerben, wird Ihr finales Produkt
mehr Produktkomponenten enthalten als Sie selbst programmieren: Das von SWTPra- und
SoPra-Teams abzugebende Produkt besteht jeweils aus Spielkonfigurator, Spiel-Engine, PC-
Beobachter, Smartphone-Beobachter und KI-Teilnehmer. SWTPra-Teams geben zusätzlich
einen Smartphone-Teilnehmer ab.

2.2 Vorgaben an den Entwicklungsprozess
Wir erwarten von Ihnen, dass Sie Ihr Produkt entsprechend dem V-Modell entwickeln.
 2
     Künstliche Intelligenz: Die Spielzüge werden ausschließlich vom Computer durchgeführt.

                                                                                              3
2 Produkteinsatz

                       Server
                             Spielkonfigurator           Spiel-Engine

                                                 M

                                                     Netzwerk

             Clients
                 PC-                Smartphone-          Smartphone-          KI-
              Beobachter             Beobachter           Teilnehmer     Teilnehmer

                             M                       M

          Legende:
             entwickelt im       entwickelt im     entwickelt im   M auf Messe
               SWTPra               SoPra        Interface-Komitee   gehandelt

                   Abbildung 2: Übersicht über das zu entwickelnde Produkt

  Mit dem hier vorliegenden Lastenheft sind von unserer Seite alle Anforderungen definiert,
sodass Sie uns als erstes ein Angebot inklusive einer Aufwandsschätzung machen können. An-
schließend erwarten wir von Ihnen ein Pflichtenheft in dem Sie definieren, wie und womit Sie
unsere Anforderungen umsetzen wollen. Sobald wir mit diesem einverstanden sind, erwarten
wir, dass Sie die von uns vorgegebenen Technologien (Android, JSON, EMF, ...) analysieren
und anschließend Ihr Produkt entwerfen. Analyse und Entwurf sollen dabei in einem gemein-
samen Dokument festgehalten werden.
   Zum Entwurf zählen wir auch entsprechende Verweise auf das Interface-Dokument, das die
Definition der Client- und Server-Interfaces sowie das Interface zwischen dem Spielkonfigu-
rator und der Spiel-Engine festlegt. An der Entwicklung und Dokumentation dieser Interfaces
sind Sie durch Ihre Teilnahme an einem Interface-Komitee beteiligt. Das Interface-Komitee
wird aus je einem Interface-Beauftragten aus jedem Team gebildet. Zu Beginn wählen die
Interface-Beauftragten einen Vorsitzenden, der das Komitee leitet. Entscheidungen sind im
Komitee nur gültig, wenn sich die Mehrheit dafür ausspricht. Enthaltungen sind hierbei mög-
lich. Das Komitee wird durch den Programmierberater unterstützt. Alle Interfaces müssen
eine Woche vor der Abgabe des Analyse- und Entwurfsdokuments in einer (vorläufigen) fina-
len Version definiert sein, sodass sich Ihr Dokument auf diese Version beziehen kann. Falls
während der Implementierung Änderungen an den Interfaces notwendig werden, muss sich
das Komitee erneut zusammenfinden und eine neue Version definieren.

4
2.3 Generelle Nutzung des Produktes

   Sind wir mit Ihrem Entwurf einverstanden, erwarten wir, dass Sie mit der Implementie-
rung Ihrer Produktkomponenten beginnen. Während Ihrer Implementierungsphase wird eine
Messe stattfinden, die zur Präsentation sowie zum Erwerb bzw. Herausgeben der bisher er-
stellten Produktkomponenten aller Teams dient. Wir erwarten, dass bis zur Messe bereits die
Produktkomponenten Spiel-Engine (SWTPra und SoPra), Spielkonfigurator (nur SWTPra),
PC-Beobachter (nur SWTPra) und Smartphone-Beobachter (nur SoPra) fertig gestellt sind.
Sind Sie ein SWTPra-Team, erwarten wir von Ihnen, dass Sie die Produktkomponenten PC-
Beobachter und Spielkonfigurator den SoPra-Teams zum kostenlosen Erwerb anbieten. Sind
Sie ein SoPra-Team, erwarten wir von Ihnen, dass Sie Ihre Produktkomponente Smartphone-
Beobachter den SWTPra-Teams zum kostenlosen Erwerb anbieten.
   Nach der Messe erwarten wir von Ihnen, dass Sie die erworbenen Produktkomponenten in
Ihr Produkt integrieren und diese Integration testen. Bezüglich Ihrer vertriebenen Produkt-
komponenten erwarten wir, dass Sie schwerwiegende Fehler in der Software beheben und
den Erwerbern neue Versionen zugänglich machen. Parallel zur Integration und zur Fehlerbe-
hebung erwarten wir von Ihnen, dass Sie einen KI-Teilnehmer entwickeln, der unser Quarto
regelkonform spielt. Im Hinblick auf das Praktikumsturnier empfiehlt sich die Umsetzung ei-
ner möglichst erfolgsversprechenden Spielstrategie. Sind Sie ein SWTPra-Team, erwarten wir
von Ihnen zusätzlich, dass Sie die Produktkomponente Smartphone-Teilnehmer implementie-
ren, wodurch ein menschlicher Teilnehmer mit dem Smartphone spielen kann. Wir empfehlen
Ihnen hierbei die Weiterentwicklung des von Ihnen eingekauften Smartphone-Beobachters
und keine vollständige Neuentwicklung.
   Nachdem Sie Ihr Produkt und alle dazugehörigen Dokumente fertig gestellt haben, erwarten
wir von Ihnen eine Abschlusspräsentation inklusive einer Live-Demonstration Ihres Produk-
tes. Zu der Endabgabe zählt auch eine Webseite, auf der Sie Ihr Produkt und dessen Doku-
mente präsentieren (eine Facebook-Seite genügt nicht!).
   Am Ende des Praktikums werden wir Sie und alle anderen Teams zu einem Turnier einla-
den. Ihr Team wird dabei durch Ihren entwickelten KI-Teilnehmer vertreten sein. Durch einen
noch festzulegenden Turniermodus wird durch das Turnier der beste KI-Teilnehmer ermittelt.
Zusätzlich werden nach dem Turnier die SWTPra- und SoPra-Teams geehrt, die – unabhängig
vom besten KI-Teilnehmer– im Verlauf des Praktikums die besten Leistungen gezeigt haben.

2.3 Generelle Nutzung des Produktes
Die an einem Spiel beteiligten Produktkomponenten sind ein Server und zwei Teilnehmer-
Clients, wobei es sich sowohl um menschliche Teilnehmer, als auch um KI-Teilnehmer han-
deln kann. Zusätzlich kann es eine beliebige Anzahl an Beobachtern geben, die das Spiel
beobachten ohne darauf Einfluss nehmen zu können.
   Die in einem Spiel verwendete Spielkonfiguration wird vor Beginn des Spiels vom Ausrich-
ter in der Spiel-Engine ausgewählt. Dazu kann der Ausrichter vom Server aus Spielkonfigura-
tionen laden, die zuvor mithilfe eines Spielkonfigurators erstellt wurden. Eine Konfiguration
der Spiel-Engine vom Client aus ist nicht gefordert. Eine Spielkonfiguration beinhaltet z.B.
die Beschaffenheit des Spielfeldes und der Spielsteine (siehe Abschnitt 2.4).

                                                                                           5
2 Produkteinsatz

   Nachdem der Ausrichters den die Spielengine auf dem Server gestartet hat, können sich
andere Benutzer in der Rolle des Teilnehmers oder des Beobachters mit ihren Clients bei die-
sem registrieren. Sie können dann entweder ein Spiel verfolgen, selbst spielen oder einen KI-
Teilnehmer antreten lassen. Ein PC-Benutzer kann auch Ausrichter und Beobachter zugleich
sein.
   Ist die Spielkonfiguration geladen und sind beide Teilnehmer anwesend, muss der Aus-
richter den beginnenden Teilnehmer festlegen. Anschließend kann der Ausrichter das Spiel
starten.

2.4 Spielregeln
In diesem Kapitel wird definiert, welche Spielregeln für Quarto vorausgesetzt sind. Bei Quarto
setzen zwei Spieler abwechselnd Spielsteine auf ein Spielfeld, die sich in bis zu vier Merk-
malen unterscheiden können. Ziel des Spiels ist es, eine Reihe einer bestimmten Länge von
Spielsteinen zu erzeugen, die wenigstens ein identisches Merkmal haben. Der Spieler, der eine
solche Reihe vervollständigt, gewinnt das Spiel. Die Spiele werden auf einem quadratischen,
rasterförmigen Spielfeld ausgetragen, welches aus einzelnen Teilfeldern besteht.

2.4.1 Spielvorbereitung

Quarto besteht aus einem Spielfeld, auf das die Steine gesetzt werden und einem Steinlager,
das alle noch nicht gespielten Steine enthält. Die Anzahl der Spielsteine hängt von Anzahl und
Ausprägung der Merkmale ab. Die Spielsteine des zu entwickelnden Quarto-Spiels sollen sich
in vier Merkmalen unterscheiden können:

    • Form

    • Farbe

    • Muster

    • Größe

Jedes Merkmal soll bis zu vier Varianten haben können. Außerdem soll festgelegt werden
können, wie oft jeder Spielstein im Spiel vorhanden ist. Dabei soll jeder Stein mindestens
einmal und höchstens vier mal vorhanden sein können. Insgesamt kann es also maximal
4 Formen * 4 Farben * 4 Muster * 4 Größen * 4 Ausprägungen pro Stein =1024 Steine
geben.
   Die Größe des Spielfelds und des Steinlagers hängt von der Anzahl der Spielsteine ab:
Die Anzahl der Teilfelder des Spielfelds und der Felder des Steinlagers entsprechen jeweils
der Anzahl der Spielsteine. Das Quarto-Spielfeld soll quadratisch sein. Sollte die Anzahl der

6
2.4 Spielregeln

Spielsteine keine Quadratzahl sein, wird das Spielfeld mit nicht bespielbaren Teilfeldern auf-
gefüllt, bis ein quadratisches Spielfeld möglich ist. Diese nicht bespielbaren Teilfelder sol-
len während der Spielfeld-Konfiguration frei verteilbar sein. Abbildung 3 zeigt ein Quarto-
Spielfeld mit insgesamt 25 Teilfeldern. Gemäß den angegebenen Ausprägungen der Spiel-
steinmerkmale, gibt es aber nur 3 * 2 * 2 * 1 * 2 = 24 Spielsteine. Demnach wird zusätzlich
ein nicht bespielbares Teilfeld (orange) benötigt.

Abbildung 3: Exemplarisches Spielfeld mit 24 bespielbaren und einem nicht bespielbaren
             Teilfeld.

   Weiterhin soll die Länge einer Gewinnreihe vor dem Spiel festgelegt werden. Dabei soll be-
achtet werden, dass nur tatsächlich mögliche Längen (basierend auf der Größe des Spielfeldes)
eingestellt werden können. Im Beispiel in Abbildung 3 ist die maximale Länge 5.

2.4.2 Spielverlauf
Beide Spieler führen abwechselnd Spielzüge durch. Ein Spielzug besteht aus den folgenden
zwei Aktionen:

1. Setzen: Der Spieler setzt den als nächsten zu spielenden Spielstein auf das Spielfeld.
     Dabei kann der Spielstein auf jedes freie Teilfeld des Spielfelds gesetzt werden. Ein
     Spielfeld gilt als frei, wenn es bespielbar ist und noch keinen Spielstein enthält.

2. Wählen: Der Spieler wählt einen Spielstein aus dem Spiellager als nächsten vom Gegner
     zu spielenden Spielstein aus.

  Da zu Beginn des Spiels alle Spielsteine im Spiellager sind und kein Stein als nächster zu
spielender Spielstein gewählt ist, beschränkt sich der erste Spielzug des beginnenden Spielers
auf die zweite Aktion.

                                                                                            7
2 Produkteinsatz

2.4.3 Spielende
Das Spiel endet, wenn das Spielfeld wenigstens eine Gewinnreihe enthält oder alle Spielstei-
ne gesetzt sind. Eine Gewinnreihe ist eine Folge einer bestimmten Länge von benachbarten
Spielsteinen, die wenigstens ein identisches Merkmal haben. Gewinnreihen können vertikal,
horizontal oder diagonal auf dem Spielfeld sein. Gewinnreihen gehen nicht über Teilfelder
hinaus, die nicht bespielbar sind.
   Abbildung 4 zeigt eine Spielsituation nach 14 Zügen. Das Spielfeld enthält zwei Gewinn-
reihen der Länge 4: Von unten links nach oben rechts basierend auf der Farbe der Spielsteine.
Und von links nach rechts (zweite Zeile von unten) basierend auf der Form der Spielsteine.

              Abbildung 4: Exemplarisches Spielfeld mit zwei Gewinnreihen.

  Es gewinnt der Spieler, der die Gewinnreihe vervollständigt hat, also den letzten Stein auf
das Spielfeld gesetzt hat um die Reihe zu erzeugen. Sind alle Spielsteine gesetzt und liegt
keine Gewinnreihe vor, wird das Spiel als unentschieden gewertet.

2.5 Anwendungsszenario: Praktikumsturnier
Ein Anwendungsszenario für Ihr Produkt ist das Turnier (und dessen Vorbereitung), welches
am Ende des Praktikums stattfindet.
   Im Turnier werden die von den Teams entwickelten KI-Teilnehmer gegeneinander antreten.
Die Spiel-Engine für das Turnier wird entweder von uns selbst entwickelt oder eine Spiel-
Engine von einem der Teams sein. Ebenso verhält es sich mit der Visualisierung des Turniers.
Das Turnier kann von allen Turnierzuschauern zusätzlich mittels des Smartphone-Beobachters
bzw. des PC-Beobachters verfolgt werden.
   Die Konfiguration(en) des Spielfelds für das Turnier werden vor dem Turnier nicht veröf-
fentlicht. Sie sollten daher vor dem Turnier mit dem Spielkonfigurator verschiedene Spielkon-
figurationen anlegen, um Ihren KI-Teilnehmer zu testen.

8
3 Produktfunktionen und -leistungen
Die einzelnen Teile des Produktes müssen bestimmte Funktionen und Anforderungen erfül-
len. Dabei wird unterschieden zwischen verbindlichen und optionalen Anforderungen. Die
verbindlichen Anforderungen müssen von Ihnen erfüllt werden, die optionalen können frei-
willig umgesetzt werden. Auch weitere, selbst erdachte Features sind denkbar. Sofern nicht
anders angegeben, sollen alle in Abschnitt 2.4 beschriebenen Spielregeln von allen Produkt-
komponenten berücksichtigt werden.

3.1 Netzwerk
   • Verbindlich: Ihre Client-Server-Anbindung soll im lokalen Netzwerk (LAN) sowie via
     Internet funktionieren.

3.2 Spielkonfigurator
   • Verbindlich: Durch eine geeignete Oberfläche lassen sich Spielkonfigurationen erstel-
     len, die alle in Abschnitt 2.4 genannten Konfigurationsparameter abdecken. Konfigura-
     tionsparameter sind insbesondere:
        – Anzahl möglicher Formen der Spielsteine
        – Anzahl möglicher Farben der Spielsteine
        – Anzahl möglicher Muster der Spielsteine
        – Anzahl möglicher Größen der Spielsteine
        – Ausprägung der Spielsteine (wie oft ist jede Spielsteinart im Spiel)
        – Länge einer Gewinnreihe
        – Platzierung nicht bespielbarer Teilfelder
        – Maximale Zeit pro Spielzug für KI-Teilnehmer
        – Verzögerungszeit, die nach jedem Zug genutzt wird, um eine Visualisierung zu
          ermöglichen

   • Optional: Auch für menschliche Teilnehmer (nicht nur für KI-Teilnehmer) können Zeit-
     beschränkungen angegeben werden.

   • Verbindlich: Die Spielkonfigurationen sollen in dem im Interface-Komitee abgespro-
     chenen Format abspeicherbar sein.

   • Optional: Bereits erstellte Spielkonfigurationen können geladen und modifiziert wer-
     den.

   • Optional: Zufällige Spielkonfigurationen können vorgeschlagen werden.

                                                                                         9
3 Produktfunktionen und -leistungen

3.3 Spiel-Engine
Die Anforderungen an die Spiel-Engine wurden übersichtshalber in drei Bereiche unterteilt:
Start eines Spiels (3.3.1), Spielverlauf (3.3.2) und Turnierorganisation (3.3.3).

       3.3.1 Start eines Spiels
     • Verbindlich: Alle Clients werden von der Spiel-Engine verwaltet: Sie können sich an
       der Spiel-Engine registrieren und werden entsprechend ihrer Rolle (Spieler oder Beob-
       achter) behandelt. Es reicht aus, eine Registrierung nur zu erlauben während kein Spiel
       läuft (wenn ein Spiel pausiert ist, wird es trotzdem als laufend erachtet).

     • Verbindlich: Vor dem Starten eines Spiels muss der Spiel-Engine-Benutzer (der Aus-
       richter) aus einer Liste registrierter Teilnehmer zwei auswählen können, die gegenein-
       ander antreten. Zudem kann entweder durch Zufall oder durch eine explizite Auswahl
       bestimmt werden, welcher Teilnehmer zuerst am Zug ist.

     • Verbindlich: Vor dem Starten eines Spiels muss der Spiel-Engine-Benutzer eine Spiel-
       konfiguration (siehe Abschnitt 3.2) laden.

       3.3.2 Spielverlauf

     • Verbindlich: Während des Spiels muss die Spiel-Engine den Teilnehmer-Client, der am
       Zug ist, auffordern, seine Aktionen durchzuführen. Sofern eine Aktion gültig ist (siehe
       Spielregeln in Abschnitt 2.4), wird sie ausgeführt, andernfalls wird der Teilnehmer dis-
       qualifiziert und der gegnerische Teilnehmer gewinnt.

     • Verbindlich: Nach der Aufforderung der Spiel-Engine hat der Teilnehmer-Client ei-
       ne in der Spielkonfiguration festgelegte Zeitspanne seine Aktionen durchzuführen (an
       die Spiel-Engine zu senden). Ist in der Spielkonfiguration kein Zeitlimit für menschli-
       che Teilnehmer festgelegt, hat dieser beliebig lange Zeit seine Aktionen durchzuführen.
       Ist die Antwort des Teilnehmer-Clients nicht innerhalb der festgelegten Zeitspanne bei
       der Spiel-Engine eingegangen, wird der Teilnehmer disqualifiziert und der gegnerische
       Teilnehmer gewinnt.

     • Verbindlich: Nach jedem Spielzug soll die Engine eine in der Konfiguration festgelegte
       Zeit pausieren, sodass genug Zeit für die Visualisierung der Aktion bleibt.

     • Verbindlich: Alle Clients werden über den Spielzustand nach Ablauf eines Spielzugs
       informiert.

     • Verbindlich: Ein Spiel lässt sich über die Benutzeroberfläche der Spiel-Engine pausie-
       ren, fortsetzen und abbrechen. Bei einem solchen manuellen Abbruch wird das Spiel als

10
3.4 Clients

     unentschieden gewertet. Die Clients werden über diese Statusänderungen in Kenntnis
     gesetzt.

   • Verbindlich: Nach jeder Runde überprüft die Spiel-Engine das Vorliegen der Bedingun-
     gen für das Spielende. Ist dies der Fall, so wird dies (und falls vorhanden der jeweilige
     Gewinner) jedem Client mitgeteilt.

   • Optional: Alle in einem Spiel abgegebenen Aktionen und ihre Ergebnisse werden an-
     gezeigt bzw. in eine Log-Datei geschrieben.

     3.3.3 Turnierorganisation

   • Verbindlich: Es soll eine Menge von nacheinander auszuführenden Spielen geplant und
     ausgeführt werden können.

   • Optional: Die Ausgänge der bisher ausgeführten Spiele sollen in einer Übersicht ange-
     zeigt werden.

   • Optional: Abhängig von den Ausgängen der bisher ausgeführten Spiele soll eine (evtl.
     vom Ausrichter konfigurierbare) Rangliste angezeigt werden.

3.4 Clients
   • Verbindlich: Jeder Client soll über eine geeignete Oberfläche gestartet und beendet
     werden können.

   • Verbindlich: Jeder Client soll es ermöglichen, sich mit der Spiel-Engine zu verbinden
     und sich bei dieser zu registrieren.

3.4.1 PC- und Smartphone-Beobachter
   • Verbindlich: Der Beobachter-Client zeigt das Spielfelds inkl. Teilfeldern, Spielsteinla-
     ger, dem nächsten zu spielenden Stein und des gerade aktiven Spielers an. Außerdem
     enthält der Beobachter-Client eine visualisierte Übersicht über die aktuell eingestellten
     Regeln und den Spielstatus.

   • Verbindlich: Der Beobachter-Client kann alle Spielsteine gemäß ihrer Merkmalausprä-
     gungen in einer geeigneten Darstellung anzeigen.

   • Verbindlich: Die Visualisierung eines Zuges soll beendet sein, bevor der nächste Zug
     stattfindet.

   • Verbindlich: Ist ein Spiel beendet, wird der Spielausgang angezeigt, d.h. Gewinner und
     Verlierer bzw. “unentschieden”, falls es keinen Gewinner gibt.

                                                                                           11
3 Produktfunktionen und -leistungen

     • Optional: Ist ein Spiel beendet, werden zusätzlich die Gewinnreihen hervorgehoben,
       falls vorhanden.

     • Optional: Spielaktionen werden per Animation visualisiert.

3.4.2 Smartphone-Teilnehmer
     • Verbindlich: Es gelten die gleichen Produktanforderungen wie bei den Beobachter-
       Clients.

     • Verbindlich: Der Smartphone-Teilnehmer muss es dem Benutzer ermöglichen, Aktio-
       nen durchzuführen, sofern der Teilnehmer am Zug ist.

3.4.3 KI-Teilnehmer
     • Verbindlich: Der KI-Teilnehmer kann vom PC via Kommandozeile gestartet werden
       (z.B. durch Aufruf einer Jar-Datei).

     • Verbindlich: Beim Start des KI-Teilnehmers wird ihm die IP-Adresse des Servers und
       der Port mitgeteilt bei dem sich der KI-Teilnehmer anmelden soll.

     • Verbindlich: Der KI-Teilnehmer enthält einen Algorithmus, der den nächsten Spielzug
       berechnet und an die Spiel-Engine weitergibt. Für die Auswahl des Spielzugs steht dem
       KI-Teilnehmer ab der entsprechenden Anfrage der Spiel-Engine die in der Spielkonfi-
       guration eingestellte Zeit zur Verfügung.

     • Optional: Der Benutzer kann mittels einer Oberfläche verschiedene Intelligenzstufen
       oder andere Parameter einstellen. Die Algorithmen müssen dann allerdings auch ohne
       diese Oberfläche funktionieren können. Hinweis: Während des Turniers können keine
       Einstellungen an den Algorithmen vorgenommen werden.

     • Optional: Der KI-Teilnehmer kann vom Smartphone aus durch eine separate App gest-
       artet werden.

     • Optional: Der KI-Teilnehmer wird in die Produktkomponente Smartphone-Teilnehmer
       integriert und kann von dieser aus gestartet werden. Während die KI spielt, kann der
       Smartphone-Benutzer nicht in das Spiel eingreifen.

12
A Technische Vorgaben und Hilfestellungen
Für die Entwicklung ist ein Abgabeplan vorgegeben, der auf der Webseite der Veranstaltung
veröffentlicht wird. Für die Dokumente stehen dort Vorlagen und Beispiele zur Verfügung. Zu
den gegebenen Deadlines müssen die jeweiligen Dokumente abgegeben werden, Verspätungen
werden sanktioniert.

A.1 Allgemeine Richtlinien
     • Die Entwicklungssprache ist Englisch. Code und Codekommentare sind dementspre-
       chend auf Englisch zu verfassen. Dokumente wie Pflichtenheft, Analyse- und Entwurfs-
       dokument oder auch Protokolle können auf Deutsch verfasst werden.

     • Codekommentare sollen im Javadoc-Format verfasst werden. Eine Javadoc-Dokumen-
       tation des Codes ist Bestandteil der Endabgabe.

A.2 Technologien und Entwicklungswerkzeuge
Eine technische Übersicht über die im Praktikum eingesetzten Entwicklungswerkzeuge und
Technologien ist in Abbildung 5 zu sehen.
   Die Teilnehmer sollen im Rahmen des SoPra bzw. des SWTPra lernen, sich in ein größe-
res Framework einzuarbeiten und sich dessen Vorteile zu Nutze zu machen. Alle Produkt-
komponenten des Produktes sollen sich mit Hilfe von Eclipse entwickeln lassen und auf der
Sprache Java basieren. Die zu entwickelnden Produktkomponenten Spielkonfigurator und PC-
Beobachter sollen zudem als Plug-Ins für die Entwicklungsumgebung Eclipse3 erstellt wer-
den. Hingegen sollen der Smartphone-Beobachter und der Smartphone-Teilnehmer als Apps
für Android4 erstellt werden.
   Insbesondere Eclipse hat sich als Grundlage für größere Softwareprojekte bewährt und vie-
le Unternehmen arbeiten mit Software auf Eclipse-Basis, z.B. IBM. Der sichere Umgang
mit der Eclipse-Entwicklungsumgebung wird heutzutage in den meisten Unternehmen im
Bereich Softwareentwicklung vorausgesetzt. Bezüglich des Smartphone-Marktes ist Andro-
id mittlerweile das meistverbreitete Betriebssystem. Daher ist die Fähigkeit zur Entwicklung
von Android-Apps eine wichtige Fähigkeit, um auf dem Arbeitsmarkt zu bestehen.
   Zur Entwicklung mit Eclipse ist ein installiertes JDK (Java Development Kit) notwendig.
Die entwickelten Komponenten müssen kompatibel zu Java SE 8 sowie Android 4.4.x (KitKat,
API-Level 19) sein. Die zu verwendende Eclipse-Version ist Mars SR2 (4.5.2).
   Um Zugriff auf das Git-Repository einer Gruppe zu erhalten, wird ein Git-Client benötigt.
Git-Clients mit GUI sind zum Beispiel SourceTree5 oder das Eclipse-Plugin EGit6 .
 3
   http://eclipse.org/pde
 4
   http://developer.android.com
 5
   https://www.sourcetreeapp.com/
 6
   http://www.eclipse.org/egit/

                                                                                         13
A Technische Vorgaben und Hilfestellungen

               Server
                        Spielkonfigurator              Spiel-
                                                       Engine

                                       Netzwerk

            Clients
                   PC-           Smartphone-       Smartphone-          KI-
                Beobachter        Beobachter        Teilnehmer     Teilnehmer

Abbildung 5: Übersicht über die zu verwendenden Technologien und Entwicklungswerkzeuge

A.3 Interfaces
Um die Kompatibilität der Komponenten zu gewährleisten, werden von einem Komitee geeig-
nete Interfaces für die Kommunikation zwischen den Komponenten entwickelt. Diese werden
vom Interface-Komitee in einem gesonderten Dokument beschrieben und vor einer gesondert
ausgewiesenen Deadline abgegeben.
   Abbildung 5 illustriert die Stellen, an denen sich das Interface-Komitee auf Interfaces bzw.
ein geeignetes Austauschformat einigen muss. Der Spielkonfigurator speichert ein EMF-Modell
(siehe Abschnitt A.4) im ecore-Format. Dieses Modell beschreibt die zum Spiel nötige Spiel-
konfiguration. Die Spiel-Engine kann diese Konfiguration dann von der Festplatte laden. Cli-
ents und Server tauschen ihre Daten ebenfalls in Form von EMF-Modellen aus (mithilfe von
JSON, siehe Abschnitt A.7). Die Erstellung von Metamodellen per EMF (zum Beschreiben
gültiger EMF-Modelle) ist somit Hauptaufgabe des Interface-Komitees.

A.4 Eclipse Modeling Framework (EMF)
Als Ausgabe des Spielkonfigurators, sowie zur Interaktion zwischen Server und Clients, wer-
den Modelle auf Basis des Eclipse Modeling Frameworks7 (EMF) verwendet. Eine Anlei-
tung zum Erstellen von Metamodellen mit EMF existiert online8 . Ein Tutorial zum Speichern
und Laden von EMF-Modellen ist online9 sowie im EMF Developer Guide in der Eclipse-
Dokumentation10 verfügbar.
 7
   http://eclipse.org/modeling/emf
 8
   http://eclipse.org/ecoretools/doc/index.html
 9
   http://www.vogella.com/articles/EclipseEMFPersistence/article.html
10
   http://help.eclipse.org/luna

14
A.5 Frameworks zur Erstellung grafischer Editoren

A.5 Frameworks zur Erstellung grafischer Editoren
Sowohl das Graphical Editing Framework11 (GEF) als auch Graphiti12 ermöglichen die Ent-
wicklung grafischer Editoren und anderer Visualisierungen für Eclipse-basierte Anwendun-
gen, insbesondere im Rahmen von Eclipse-Plugins. GEF und Graphiti sehen eine Entwicklung
vor, die dem Architekturmuster Model-View-Controller (MVC) folgt und unterstützen diese
durch geeignete Extension Points, wie beispielsweise Framework-Klassen für View-Objekte,
die durch eigene Implementierungen spezialisiert werden können.
   Wir empfehlen, die Visualisierung des Spielfelds und seiner Elemente, die im Rahmen des
SWTPra entwickelt werden (PC-Beobachter, Spielkonfigurator), mittels GEF oder Graphiti zu
erstellen. Alternativ ist auch eine Lösung, die nur auf SWT13 oder auf anderen Frameworks
basiert in Ordnung, solange diese allen beschriebenen Anforderungen entspricht und Sie Ihre
Entscheidung ausführlich begründen. Für diese alternativen Lösungen bieten wir keine geziel-
te Programmierberatung an.
   GEF bzw. Graphiti werden nicht nur für viele Forschungsprototypen, sondern auch in Un-
ternehmen eingesetzt. Daher ist deren Kenntnis hilfreich für spätere SHK-Stellen, Abschluss-
arbeiten und auch Jobs außerhalb der Universität. Des Weiteren werden die Konzepte von GEF
und Graphiti in der Klausur am Ende des Semesters als bekannt vorausgesetzt.

A.6 Android
Für die Entwicklung empfehlen sich das Eclipse-Plug-In ADT14 bzw. die IDE Android Stu-
dio15 . ADT hat sich für den Einsatz im SWTPra/SoPra bewährt. Die Kommunikation des
Android-Clients mit dem Server soll über Sockets (java.net.Socket) realisiert werden.

A.7 JSON
Das Übertragungsformat zwischen dem Server und den Clients soll JSON sein. Um EMF-
Modelle in Form von JSON auszutauschen, ist die Nutzung des Plug-Ins emfjson16 vorgege-
ben. Um serverseitig JSON einfach parsen bzw. erzeugen zu können, verwendet emfjson die
Java-Bibliothek Jackson. Die Verwendung von Jackson wird online17 beschrieben.

11
   http://eclipse.org/gef
12
   http://eclipse.org/graphiti
13
   http://eclipse.org/swt
14
   http://developer.android.com/sdk/eclipse-adt.html
15
   https://developer.android.com/sdk
16
   http://emfjson.org
17
   http://wiki.fasterxml.com/JacksonInFiveMinutes

                                                                                         15
Sie können auch lesen