\newcommand{\tiedostonimi}[1]{\texttt{#1}}
\newcommand{\termi}[1]{\textit{#1}}


\section{Johdanto}

Asdf on Helsingin yliopiston tietojenk�sittelytieteen laitoksen ohjelmistotuotantoprojektin ryhm�, joka toteuttaa asiakkaan tilaaman pokeripalvelin ohjelmiston. T�ss� dokumentissa m��ritell��n toteutettava ohjelmisto ja siihen l�heisesti vaikuttavat asiat. Dokumentti on tarkoitettu projektiryhm�n, projektin ohjaajan ja asiakkaiden k�ytt��n. Dokumentti toimii my�s sopimuksena toteutettavista ominaisuuksista projektiryhm�n ja asiakkaiden v�lill�. Projektiin liittyv�� materiaalia tulee olemaan saatavilla ryhm�n kotisivulla osoitteessa:

\texttt{http://www.cs.helsinki.fi/group/asdf/}

Projekti tehd��n iteroivana prosessimallina, joten lopullinen m��rittely saadaan vasta projektin viimeisess� iteraatiovaiheessa ennen lopullista ohjelmaa. Projektin aikana on ryhm�ll� sek� asiakkaalla mahdollisuus yhteisty�ss� neuvotella mahdollisista muutoksia sek� korjauksista, jos projektin edetess� ilmenee ep�kohtia. T�ll�in my�s m��rittelydokumentti muokataan vastaamaan todellista tarvetta.

Luvussa 2 annetaan yleiskuvaus sek� k�sitell��n j�rjestelm��n liittyv�t termit. Luvussa 3 esitell��n asiakkaan esitt�m�t vaatimukset ohjelmistolle. Luvussa 4 k�yd��n l�pi j�rjestelm� vaatimukset. Luvussa 5 k�yd��n l�pi korkean abstraktio tason j�rjestelm�arkkitehtuuri ja Luvussa 6 k�ytt�tapaukset. Luku 7 koskee j�rjestelm�n elinkaarta.

\newpage
\section{J�rjestelm�n yleiskuvaus}

Ohjelmistotuotantoprojektiryhm� toteuttaa yleisk�ytt�isen pokeripalvelimen. Pokeripalvelimen on tarkoitus toimia ymp�rist�n� testattaessa erilaisia teko�lysovelluksia. Palvelin tulee tarjoamaan yleisen rajapinnan, jonka avulla pystyt��n peluuttamaan erilaisia tietokone- ja ihmispelaajia kesken��n.

\subsection{sanasto}
\begin{figure}[h]
\begin{tabular}{p{3.8cm}|p{11.5cm}}
\textbf{Sana} & \textbf{Selitys} \\
\hline
\textbf{limit} (joskus fixed) & Pokerimuoto, jossa on Kiinte�sti rajoitettu panostusm��r�. \\
\hline
\textbf{no limit} & Pokerimuoto, jossa ei ole rajoitettu panostuksien suuruutta.\\
\hline
\textbf{pot limit} & Pokerimuoto, jossa maksimipanostus pokeripeliss� on peliss� olevan potin suuruinen.\\
\hline
\textbf{Texas holdem} & Suosittu pokerimuoto, pelis��nn�t liitteess� 1.\\
\hline
\textbf{Pelitili} & Kokoelma k�ytt�jille kuuluvista pelaajista sek� teko�lypelaajista sek� niiden tiedoista.\\
\hline
\textbf{Pelilogiikka} & Kuhunkin pelimuotoon kuuluva pelin eteneminen, lailliset toiminnot ja vuorot.\\
\hline
\textbf{Teko�ly} & Teko�lyn on tarkoitus mahdollistaa tietokoneen pelaaminen itsen�isesti ilman ihmisen ohjausta. K�ytt�j�t voivat laittaa teko�lysovelluksia (botteja) pelip�yt��n ja testata n�iden k�ytt�mi� algoritmeja.\\
\hline
\textbf{sit-out} & pelaaja istuu edelleen p�yd�ss�, mutta h�nelle ei jaeta kortteja, eik� h�n panosta pottiin\\
\hline
\textbf{muck} & Heitet��n k�sikortit pois n�ytt�m�tt� niit� toisille pelaajille.\\
\hline
\textbf{sokkopanokset} & Sokkopanokset ovat pakolliset panostukset m��r�tyill� pelaajilla jo ennen korttien jakamista. Texas Hold'emissa jakajasta seuraava pelaaja laittaa pienen sokkopanoksen (small blind, puolet minimikorotuksesta) ja t�st� seuraava suuren sokkopanoksen (big blind, minimikorotuksen verran) pottiin kunkin k�den alussa.\\
\hline
\textbf{Rajapinta} & Liittym�, jolla eri ohjelmat voivat tehd� pyynt�j� ja vaihtaa tietoja eli keskustella kesken��n.\\
\hline
\textbf{Pelip�yd�n} & Tarkoitetaan t�ss� toteutettavien pelien \\
\textbf{ominaisuudet} & ominaisuuksia, pelityyppi, pelimuoto, pelaajam��r�, sokkopanosten suuruus.\\
\end{tabular}
\end{figure}

\newpage
\section{K�ytt�j�n vaatimukset}

Seuraavassa asiakkaan esitt�m�t vaatimukset ohjelmistolle.
\begin{itemize}

\item \textbf{Ohjelmiston on oltava yleisk�ytt�inen}

    Ohjelmiston on tarjottava rajapinnat, joiden avulla voidaan testata erilaisia teko�lyratkaisuja peluuttamalla niit� eritasoisia ja tyylisi� tietokone- ja ihmisvastustajia vastaan pokeripeleiss�.

\item \textbf{Palvelimella olevia palveluita on voitava k�ytt�� et�k�ytt�n�}

    Pelaajat sek� teko�lypelaajat liittyv�t peliin verkonkautta TCP/IP yhteydell�.

\item \textbf{Ohjelmistossa on oltava vuorovaikutteinen graafinen k�ytt�liittym�.}

    Ohjelmiston on toteutettava visuaalinen ja vuorovaikutteinen k�ytt�liittym�, joka mahdollistaa pelaamisen sek� teko�lybottien lis��misen peliin. Sek� pelien v�lill� navigoinnin.

\item \textbf{Teko�lypelaajat on pystytt�v� k�ynnist�m��n ilman graafista liittym�� er�ajoon}

\item \textbf{Ohjelmiston on tarjottava samat rajapinnat pelaajalle ja teko�lypelaajalle}

\item \textbf{Palvelin toteuttaa pelilogiikan ja pelaajien sy�tteiden yhdist�misen}

\item \textbf{Pelis��nt�jen erottaminen palvelimesta}

    Pelilogiikka on erottu palvelimella erillisiin moduuleihin.

\item \textbf{Ohjelmistolla on pystytt�v� pelaamaan Texas holdemista k�teispelej�, limit ja no-limit versiona. Vuoroihin on voitava m��ritell� my�s aikaraja. Projektiajan puitteessa toteutetaan my�s pot-limit.}

\item \textbf{Palvelimen on toteutettava k�ytt�j�nhallinta.}

\item \textbf{Pelatuista peleist� sek� k�ytt�jist� on tallennettava tilastotietoa.}

\item \textbf{Parhaillaan pelattavia pelej� on oltava mahdollisuus seurata graafisen k�ytt�liittym�n kautta. Projektiajan puitteessa my�s menneit� pelej�}

\item \textbf{Ohjelmiston on suoriuduttava tuhansien yhdenaikaisten pelien  pelaamisesta sek� pelaajien hallinasta yht� aikaa}

\item \textbf{Ohjelmalla on pystytt�v� tekem��n uusia pelej� ja valitsemaan asetukset niihin}

\item \textbf{Ohjelmistoon toteutetaan projektin aikarajojen puitteessa muita korttipelej� kuten s�k� ja omaha.}

\item \textbf{Ohjelmassa on oltava mahdollisuus keskustella pelaajien kesken}

\item \textbf{Palvelimen on mahdollisuuksien mukaan toimittavana alustana muille vuoropohjaisille peleille.}

    Muita pelej� kuten shakki, back gammon ei toteuteta projektin puitteessa. Rajapinnat sek� palvelin kuitenkin suunnitellaan, niin ett� muiden vuoropohjaisten pelien toteutus pit�isi onnistua uuden pelilogikka-moduulin sek� sit� vastaavan asiakasohjelman toteuttamisella.

\item \textbf{Ohjelmiston on toimittava tietojenk�sittelytieteen laitoksen ymp�rist�ss�.}

    Palvelinosuuden ohjelmistosta on toimittava laitoksen linux-ymp�rist�ss�. 
Asiakasohjelman tulee toimia sek� windows- ett� linux-ymp�rist�ss�. Projektiryhm� asentaa ohjelmiston laitoksen palvelimelle.

\item \textbf{K�ytt�j�tili tulee kuulumaan yhteen kolmesta roolista, joista ylempi perii aina alemman oikeudet.}

    Superk�ytt�j�(1), voi n�hd� kaikkien kortit. Testaaja(2), voi lis�t� botteja peliin. Normaalipelaaja(3), voi luoda ja pelata pelej�.

\end{itemize}
\newpage
\section{J�rjestelm�vaatimukset}

Asiakkaan vaatimukset j�rjestelm�lle on jaettu viiteen osaan: palvelin, peliaula, pelip�yt� ja laadulliset sek� muut vaatimukset Palvelin on peliserveri, joka pit�� yll� pelej� joihin pelaajat ja teko�lybotit voivat liitty�. Peliaula tarjoaa liittym�n, jolla luodaan uusia pelej� palvelimelle sek� listataan k�ynniss� olevia pelej� sek� siirryt��n itse pelip�yt��n. Pelip�yt� on graafinen vuorovaikutteinen n�kym� itse pelitilanteesta. Seuraavassa on m��ritelty kunkin osan toteutuksen vaatimukset. 

Vaatimukset on priorisoitu asteikolla 1-3. 1-prioriteetit toteutetaan ehdottomasti. 2-prioriteetit pyrit��n my�s toteuttamaan. 3-priorioriteetit toteutetaan vain jos aikaa j�� yli.

\subsection{Palvelin vaatimukset}

\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V0 \\
   \hline
   Nimi: & Yhteydenmuodostaminen palvelimelle \\
   Kuvaus: & Teko�lybotit ja pelaajaohjelmat kommunikoivat palvelimen kanssa et�n�. Yhteys luodaan TCP/IP tietoliikenneprotokollalla. \\
   Prioriteetti & 1 \\
   & \\
   Tunnus V1 \\
   \hline
   Nimi: & Pelien erottelu toisistaan \\
   Kuvaus: & Serverill� olevat pelit on voitava yksik�sitteisesti erottaa toisistaan, pelien nimien ja muiden peliin vaikuttavien ominaisuuksien perusteella.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V2 \\
   \hline
   Nimi: & Pelin seuraaminen\\
   Kuvaus: & Palvelin l�hett�� pelitietoa sit� pyyt�ville.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V3\\
   \hline
   Nimi: & Peliin liittyminen\\
   Kuvaus: & Palvelin liitt�� pelaajat peleihin pyynn�st�.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus& V4\\
   \hline
   nimi: & Pelist� poistuminen\\
   Kuvaus: & Palvelin poistaa pelaajia peleist� pyynn�st�.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V5\\
   \hline
   Nimi: & Pelinhaku\\
   Kuvaus: & Pelej� on voitava hakea pelip�yd�n ominaisuuksien perusteella.\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V6\\
   \hline
   Nimi: & Pelaajanhaku\\
   Kuvaus: & Palvelin tarjoaa listan pelip�ydist� miss� etsitty pelaaja on.\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V7\\
   \hline
   Nimi: & Uuden pelin luonti\\
   Kuvaus: & Palvelin luo pelin pyynn�st� halutuilla ominaisuuksilla.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V8\\
   \hline
   Nimi: & Pelin poisto\\
   Kuvaus: & Pelip�yd�t, joissa peli jo alkanut eik� en�� ole yht��n pelaajaa tai seuraajia poistettava.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V9\\
   \hline
   Nimi: & Linkkikatko\\
   Kuvaus: & Mik�li yhteys pelaajaan menetet��n kyseinen pelaaja siirret��n "sit out" tilaan. \\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V10\\
   \hline
   Nimi: & Keskustelun v�litys\\
   Kuvaus: & Palvelimen on v�litett�v� asiakasohjelmien v�liset keskusteluviestit kaikille p�yt�� seuraaville\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V11\\
   \hline
   Nimi: & Pelilogiikka\\
   Kuvaus: & Pelilogiikka on toteutettava modulaarisesti. Texas holdemin 
pelilogiikka aliluvussa 4.1.2\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V12\\
   \hline
   Nimi: & Pelihistorian tallennus\\
   Kuvaus: & Palvelin ottaa vastaan historiatietoa pelilogiikkamoduuleilta ja tallentaa sen. \\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\newpage
\subsubsection{K�ytt�j�hallinnan vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V13\\
   \hline
   Nimi: & Palvelimelle kirjautuminen\\
   Kuvaus: & Palvelin autentikoi k�ytt�j�n ennalta tallennetun k�ytt�j�tunnuksen ja salasanan perusteella.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V14\\
   \hline
   Nimi: & Pelaajatilin luonti\\
   Kuvaus: & Palvelimelle on voitava lis�t� uusia k�ytt�j�tilej�. K�ytt�j�tileill� toteutetaan kolme eri tasoa. Superk�ytt�j�(1), voi n�hd� kaikkien kortit. Testaaja(2), voi lis�t� botteja peliin. Normaalipelaaja(3), voi luoda ja pelata pelej�.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V15\\
   \hline
   Nimi: & Pelaajatilin poisto\\
   Kuvaus: & Pelaajatilej� tulee voida poistaa.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V16\\
   \hline
   Nimi: & Pelaajatilin tietojen s�ilytys ja hallinnointi\\
   Kuvaus: & Pelitilill� sijaitsee tilill� luodut teko�lypelaajat sek� pelaajat sek� niiden tiedot, tietoja on pystytt�v� my�s muokkaamaan ja hallinnoimaan. Rahojen k�sittely kuitenkin niin, ett� pelaajat aloittavat nollasaldosta ja peliin otettava pelivara asettaa saldon miinukselle, jos se ei riit� pelivaraan.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\newpage
\subsubsection{Pelilogiikka texas holdemille}
   Ohjelmistossa ensisijaisesti toteutetaan k�teispelit texas holdemille. Texas holdemin s��nn�t tarkemmin liitteess� yksi. Seuraavassa lueteltu vaatimuksia mit� korttipelien logiikkaan tarvitaan.
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V17 \\
   \hline
   Nimi: & Sokkopanokset\\
   Kuvaus: & Peliss� on maksettava ensimm�isell� kierrollaan big-blind, sen lis�ksi joka kierroksella kaksi kiert�v�� small-blind (jakajasta vasen) ja big-blind (seuraava vasemmalle). Big blind maksetaan automaattisesti my�s peliin liitytt�ess�. Sit-out tilassa maksamatta j��neet blindit maksetaan takaisin tullessa.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V18\\
   \hline
   Nimi: & Jakajan kierto\\
   Kuvaus: & Pokeripeleiss� jakaja kiert�� my�t�p�iv�� ja panostamiskierrokset aloitetaan sokkopanoksista seuraavasta pelaajasta ja kierret��n my�t�p�iv��n.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V19\\
   \hline
   Nimi: & Pelinkulku\\
   Kuvaus: & Palvelimen on hoidettava tietojen keruu ja yhdistely asiakasohjelmilta mit� kukin pelaaja tekee ja v�litett�v� se eteenp�in muille pelaajille, sek� hoidettava pelin kulkua sen mukaan. Pelaajille v�litet��n verkon yli vain tarpeelliset tiedot.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V20\\
   \hline
   Nimi: & Pelimuoto\\
   Kuvaus: & Texas holdemiin toteutetaan limit ja no-limit pelimuodot. \\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V21\\
   \hline
   Nimi: & Pelimuoto/pot-limit\\
   Kuvaus: & Texas holdemiin toteutetaan pot-limit pelimuoto.\\
   Prioriteetti & 2\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V22\\
   \hline
   Nimi: & Tulostenlaskenta\\
   Kuvaus: & Ratkaisee pelik�sien arvoj�rjestyksen.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V23\\
   \hline
   Nimi: & Pottien hallinta\\
   Kuvaus: & Rahojen siirtely tulosten laskennan j�lkeen.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V24\\
   \hline
   Nimi: & K�sihistoria\\
   Kuvaus: & Pelilogiikkamoduuli v�litt�� tiedot pelatuista k�sist� palvelimelle, joka tallentaa ne.\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\newpage
\subsection{Peliaulan vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V25\\
   \hline
   Nimi: & Peliaulan hallinnointi\\
   Kuvaus: & Tarjoaa graafisen k�ytt�liittym�n palvelimen kohtiin uusipeli(V7), erin�k�iset hakemiset(V5,V6)\\
   Prioriteetti & 1\\
   & \\
   Tunnus & V26\\
   \hline
   Nimi: & Pelip�ytien j�rjesteleminen\\
   Kuvaus: & Hakuehdoilla haettu lista pelip�ydist� on voitava j�rjest�� ominaisuuksiensa perusteella.\\
   Prioriteetti & 1\\
   & \\
   Tunnus & V27\\
   \hline
   Nimi: & Pelip�yd�n pelaajalista\\
   Kuvaus: & Aula n�ytt�� valitun pelin pelaajat.\\
   Prioriteetti & 1\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V28\\
   \hline
   Nimi: & Pelip�yt��n siirtyminen\\
   Kuvaus: & Valitusta pelist� on p��st�v� siirtym��n itse pelip�yt��n.\\
   Prioriteetti & 1\\
\end{tabular}
\end{figure}

\newpage

\subsection{Pokerip�yd�n vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V29\\
   \hline
   Nimi: & Seuraaminen\\
   Kuvaus: & Pelip�yd�st� on voitava seurata meneill��n olevaa peli�.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V30\\
   \hline
   Nimi: & Ulkoasu\\
   Kuvaus: & Pokerip�yd�n tulee esitt�� texas holdemiin tarvittavat kortit, panokset, jakaja, potti, vapaat istuimet, p�yd�ss� olevien pelaajien nimet ja raham��r�t sek� pelitoiminnot meneill��n olevalla kierroksella.\\   Laajennettavuus: & muut korttipelit kuten omaha, s�k�, 7 card-stud.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V31\\
   \hline
   Nimi: & Pelitoiminnot\\
   Kuvaus: & P�yd�n on tarjottava pelitilanteeseen tarvittavat painikkeet.\\
   Laajennettavuus: & muihin peleihin tarvittavat painikkeet, esim. blackjack.\\
   Prioriteetti & 1 \\
   & \\
   Tunnus & V32\\
   \hline
   Nimi: & Pelitilin hallinnointi\\
   Kuvaus: & pelip�yt� tarjoaa k�ytt�liittym�n palvelimella sijaitsevan pelitilin hallinnointiin ja tarkasteluun.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V33\\
   \hline
   Nimi: & Pelaajien lis��minen peliin\\
   Kuvaus: & Pelip�yt� tarjoaa mahdollisuuden lis�t� pelip�yd�n vapaisiin paikkoihin teko�ly- tai ihmispelaajia, samalta koneelta voi vuorotellen pelata my�s monta ihmispelaajaa. (palvelimen kohta peliin liittyminen)\\
   Prioriteetti & 1 \\
   Tunnus & V34\\
   \hline
   Nimi: & Pelist� poistuminen\\
   Kuvaus: & Pelist� on voitava poistaa omat pelaajat sek� tietokonepelaajat.\\
   Prioriteetti & 1 \\
   Tunnus & V35\\
   \hline
   Nimi: & Korttien katseleminen\\
   Kuvaus: & Superk�ytt�j�n tulee olla mahdollista n�hd� my�s muiden pelaajien kortit.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V36\\
   \hline
   Nimi: & Keskustelu\\
   Kuvaus: & Pelip�yd�ss� on pystytt�v� keskustelemaan muiden p�yt�� seuraavien pelaajien kanssa teksti-ikkunassa.\\
   Prioriteetti & 1 \\
   Tunnus & V37\\
   \hline
   Nimi: & Muckkaus\\
   Kuvaus: & K�ytt�liittym�n on tarjottava mahdollisuus pelaajalle n�ytt�� tai piilottaa h�vi�v�t k�det kierroksen lopussa. voittok�si n�ytet��n automaattisesti, paitsi jos kaikki muut pelaajat ovat foldanneet, t�ll�in tulee olla mahdollisuus vapaaehtoisesti n�ytt�� tai piilottaa my�s voittok�si.\\
   Prioriteetti & 1 \\
   Tunnus & V38\\
   \hline
   Nimi & Yhteys\\
   Kuvaus: & Asiakasohjelman on huomattava mik�li yhteys palvelimeen on menetetty esim. tutkimalla yhteytt� tyhji� paketteja 
l�hett�m�ll� 
s��nn�llisesti ja ilmoitettava yhteyskatkosta k�ytt�j�lle. \\
\end{tabular}
\end{figure}
\newpage
\subsection{Laadulliset vaatimukset}

Laadulliset vaatimukset ovat ehdottomia vaatimuksia ja vaikuttavat p��asiallisesti ohjelmiston rakenteeseen ja k�ytettyihin ratkaisuihin. Laadullisilla vaatimuksilla ei ole prioriteettia. 

Toteutuksessa ei oteta my�sk��n tietoturvallisuutta huomioon, koska j�rjestelm� on tarkoitettu tutkimusk�ytt��n. Arkkitehtuuri toteutetaan kuitenkin tukemaan j�lkeenp�in mahdollisesti toteutettavaa tietoliikenteen salausta.

\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V39\\
   \hline
   Nimi: & Asennus\\
   Kuvaus: & Palvelinosuuden ohjelmistosta on toimittava laitoksen linux-ymp�rist�ss�. Asiakasohjelman tulee toimia sek� windows- ett� linux-ymp�rist�ss�. Projektiryhm� asentaa ohjelmiston laitoksen palvelimelle.\\
   & \\
   Tunnus & V40\\
   \hline
   Nimi: & Yleisk�ytt�isyys\\
   Kuvaus: & Ohjelman rajapinnat on toteutettava niin ett� pelilogiikka komponentteja voidaan vaihtaa ja uusia asiakasohjelmia eri peleille toteuttaa tulevaisuudessa.\\
   & \\
   Tunnus & V41\\
   \hline
   Nimi: & Laajennettavuus\\
   Kuvaus: & Pelipalvelinta tulevaisuudessa pystyt��n laajentamaan muihin 
vuoropohjaisiin peleihin, go, shakki jne.\\
\end{tabular}
\end{figure}


\subsection{Muut vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V42\\
   \hline
   Nimi: & Er�ajo\\
   Kuvaus: & Teko�lypelaajat ovat pystytt�v� k�ynnist�m��n er�ajoon.\\
   Prioriteetti & 1\\
\end{tabular}
\end{figure}
\newpage

\section{J�rjestelm�arkkitehtuuri}

 \begin{figure}[ht]
     \includegraphics[width=14cm]{jarjestelma.eps}
 \end{figure}


Kuva 1 esitt�� ohjelman arkkitehtuurin korkean tason n�kym�n. Kuva esitt�� koko j�rjestelm�n, joka aiotaan toteuttaa.

\subsection{Asiakas}
Asiakas on loppuk�ytt�j�n koneella py�riv� graafinen komponentti. Asiakaskomponentin avulla loppuk�ytt�j� voi tehd�, poistaa ja pelata pelej�. Pelej� pystyy pelaamaan usealla paikalla. K�ytt�liittym� toteuttaa my�s teko�lypelaajien hallinnoinnin ja pelauttamisen.

\subsection{Teko�lypelaaja}
Teko�lypelaaja on loppuk�ytt�j�n koneella py�riv� k�ytt�liittym�t�n komponentti. Komponentin tarkoitus on pelata peli� t�ysin automaattisesti loppuk�ytt�j�n m��rittelemin keinoin.

\subsection{Palvelin}
Palvelin huolehtii pelilogiikan latauksesta. Palvelin v�litt�� viestit pelilogiikkamoduulien ja (teko�ly)pelaajien kesken. Palvelin tarjoaa rajapinnat pelilogiikkamoduuleille.

\newpage

\section{K�ytt�tapaukset}

Esimerkkik�ytt�j�n� toimivat Pekka Pokerimestari ja h�nen hyv� yst�v�ns� Kaisa Kaduntallaaja. Pekka ty�skentelee tietojenk�sittelytieteen Peliikka-laboratoriossa ja tutkii pokeriin liittyvi� teko�lyratkaisuja. Kaisa on n�yttelij� teatterissa ja joskus vapaa-ajallaan kokoontuu yst�viens� kanssa pokeri-illan viettoon.

\begin{figure}[htp]
\begin{tabular}{p{7.5cm}}
\\
\hline
\end{tabular}
\end{figure}

\textbf{Nimi} \newline
Pokeripalvelimen k�ytt� ensimm�ist� kertaa

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{Kuvaus} \newline
Pekka on tilannut projektin, joka mahdollistaa helpon pokerin teko�lyalgoritmien testaamisen. Pekalle on tullut tieto, ett� j�rjestelm� on valmis. Pekka p��tt�� kokeilla j�rjestelm�� pelaamalla tietokonepelaajaa vastaan muutaman er�n Texas Hold'Em peli�. Pekka ei ole k�ytt�nyt j�rjestelm�� ennen, joten h�n luo k�ytt�j�tunnuksen itselleen ja kirjautuu sen j�lkeen peliin.

\begin{figure}[htp]
\begin{tabular}{p{7.5cm}}
\\
\hline
\end{tabular}
\end{figure}

\textbf{Nimi} \newline
Uuden teko�lyalgoritmin testaaminen ihmispelaajaa vastaan

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka on kehitt�nyt uuden Texas Hold'em pokerialgoritmin. Pekka testaa algoritmia pelaamalla itse sit� vastaan. Pekka luo uuden pelip�yd�n itselleen ja tietokonepelaajalle ja yritt�� parhaansa mukaan pelata. H�n arvioi algoritmin kelpoisuuden sit� k�ytt�v�n tietokonepelaajan menestyksell�.

\begin{figure}[htp]
\begin{tabular}{p{7.5cm}}
\\
\hline
\end{tabular}
\end{figure}

\textbf{Nimi} \newline
Uuden teko�lyalgoritmin testaaminen tietokonepelaajia vastaan

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka on kehitt�nyt uuden Texas Hold'em pokerialgoritmin. Pekka haluaa saada takeita algoritmin kelpoisuudesta ja pelauttaa sit� useita kertoja toisia algoritmeja k�ytt�vi� tietokonepelaajia vastaan. Pekka laittaa tietokonepelaajat pelaamaan vastakkain ja tulkitsee algoritmin kelpoisuuden pelin tuloksista.

\newpage
\textbf{Nimi} \newline
Ihmispelaajien analysointi

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka tutkii Texas Hold'em pokerin olemusta empiirisesti seuraamalla ihmispelaajien peli�. Pekka kutsuu tutkimukseen osallistuvia testipelaajia pelaamaan, tekee heille pelip�yd�n ja seuraa itse peli� siihen osallistumatta. Pekka saa hy�dyllist� tutkimusaineistoa reaaliajassa ja j�lkeenp�in pelin tuloksista. 

\begin{figure}[htp]
\begin{tabular}{p{7.5cm}}
\\
\hline
\end{tabular}
\end{figure}

\textbf{Nimi} \newline
Aloittelevan pelaajan liittyminen peliin

\textbf{Toimijat} \newline
Kaisa Kaduntallaaja

\textbf{kuvaus} \newline
Pekka on pyyt�nyt Kaisaa osallistumaan testiins� ennalta m��r��m�ss��n testipelip�yd�ss�. Kaisa k�ynnist�� asiakasohjelman tavoitteenaan auttaa testiss�.

\begin{figure}[htp]
\begin{tabular}{p{7.5cm}}
\\
\hline
\end{tabular}
\end{figure}

\textbf{Nimi} \newline
Useamman tietokonepelaajan testaaminen useaa ihmist� vastaan

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka haluaa vertailla kahta Texas Hold'em algoritmia toisiaan vastaan useiden muiden pelaajien peliss�. H�n etsii p�yd�n johon h�n ja tietokonepelaaja kummallekin algoritmille mahtuvat ja lis�� tietokonepelaajat ja itsens� peliin. Pekka arvioi pelaajien menestyst� pelin tuloksista.

\begin{figure}[htp]
\begin{tabular}{p{7.5cm}}
\\
\hline
\end{tabular}
\end{figure}

\textbf{Nimi} \newline
Bottipelaajan luominen

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka luo uuden bottipelaajan nimelt� Skynet voidakseen kilpailuttaa sit� ihmis- tai bottipelaajia vastaan. Pekka m��ritt�� itsens� botin omistajaksi. 
\newpage

\textbf{Nimi} \newline
Bottipelaajan poistaminen


\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekalle on kertynyt niin monta bottipelaajaa, ett� Pekan on vaikea l�yt�� haluamansa niiden joukosta. Pekka poistaa yhden bottipelaajista.



\section{Ohjelmiston elinkaari}

Projektin tarkoituksena on toteuttaa ensimm�inen prototyyppi pokeripalvelimesta. Prototyypill� olisi tarkoitus pysty� testaamaan Texas Hold'emin tiettyj� variaatioita ihmis- ja teko�lypelaajien kesken. Ohjelmisto on suunniteltu tukemaanlaajennettavuutta. Projektiryhm� lopettaa ty�skentelyn ohjelmiston kanssa kurssin loputtua.
