% Esimerkki oman komennon määrittämisestä. Jos komentoa tarvitaan useissa
% dokumenteissa, se kannattaa mielummin laittaa asetukset.tex-tiedostoon.
\newcommand{\tiedostonimi}[1]{\texttt{#1}}
\newcommand{\termi}[1]{\textit{#1}}

\section{Johdanto}


Pokerin suosio tekoälyn tutkimuskohteena on kasvanut viimeisten vuosien aikana. Koska tekoälytutkimus 
aiheesta on vielä suhteellisen nuorta, tarjoaa se paljon erilaisia mahdollisuuksia kehittää nykyisiä 
tekoälyratkaisuja. Lisäksi pokeri tarjoaa luonnollisen alustan yleiselle tekoälytutkimukselle. Texas hold'em 
on nykyään selvästi suosituin pokeripeli. Samat syyt, jotka ovat tehneet siitä suositun, tekevät siitä myös 
haastavan tekoälyn tutkimuskohteen.

Erilaisten tekoälyratkaisujen paremmuuden testaaminen käytännössä edellyttää, että niitä on mahdollista 
testata eri tasoisia ja tyylisiä tietokone- ja ihmisvastustajia vastaan. Projektin  tarkoituksena on 
mahdollistaa tämä, tarjoamalla rajapinta toteutettaville tekoälysovelluksille sekä graafinen käyttöliittymä 
ihmispelaajille. 

\section{Sanasto}

\begin{figure}[h]
\begin{tabular}{ll}
Sana & Selitys \\
\hline
SQL & Structured Query Language on IBM:n kehittämä standardoitu kyselykieli, \\
 & jolla relaatiotietokantaan voi tehdä erilaisia hakuja, muutoksia ja lisäyksiä. \\
JDBC & Java Database Connectivity (JDBC) on universaali ja toimittajariippumaton standardi, \\ 
& jonka mukaan Java-sovellukset voivat operoida SQL-tietokantojen kanssa. \\
TRAC & Web-pohjainen projektinhallintasovellus. \\

\end{tabular}
\end{figure}
\newpage
\section{Projektiorganisaatio ja työn jako}

Projektin organisaatio koostuu viidestä opiskelijasta ja yhdestä ohjaajasta, joka ei osallistu projektin 
tekemiseen. 

Projektilla on kaksi asiakasta. Ryhmän päätöksenteko perustuu demokratiaan.

\subsection{Roolien vastuualueet}


\begin{figure}[h]
\begin{tabular}{ll}
Rooli & Vastuualue \\
\hline
Dokumenttivastaava &
Dokumenttivastaava vastaa dokumenttien yhtenäisestä ulkoasusta \\
& ja projektin www-sivusta. \\
Suunnitteluvastaava &
Suunnitteluvastaava vastaa yhtenäisistä suunnittelutason rajapinnoista \\
& ja suunnitteludokumentin yhdenmukaisesta rakenteesta. \\
Asiakasvastaava &
Asiakasvastaava vastaa tapaamisten ja asioiden koordinoimisesta \\
& asiakkaiden kanssa. \\
Koodivastaava &
Koodivastaava vastaa koodin yhtenäisestä ulkoasusta ja rajapintojen \\
&  yhtenäisyydestä. \\
Projektipäällikkö &
Vastaa projektisuunnitelman tuottamisesta ja ylläpidosta sekä projektin \\
& seurannasta. Projektipäällikkö määrittää projektin aikataulun, tehtävät \\
& sekä resurssien jakamisen. Projektipäällikkö laatii myös kokousten \\
& esityslistat ja toimii kokouksien puheenjohtajana, ellei toisin päätetä. \\
Ohjaaja &
Sampo Yrjänäinen \\
\end{tabular}
\end{figure}

\subsection{Roolijako}
\begin{figure}[h]
\begin{tabular}{ll}
Rooli & Nimi \\
\hline
Dokumenttivastaava & Sami Kuisma \\
Suunnitteluvastaava & Jaakko Louhio \\
Asiakaskontaktit & Raine Rimpila \\
Koodivastaava & Mika Urtela \\
Projektipäällikkö & Vesa Vilhonen \\
Ohjaaja & Sampo Yrjänäinen \\
\end{tabular}
\end{figure}


\subsection{Asiakkaat}
Projektin asiakkaat ovat Tomi Pasanen ja Teemu Saukonoja.

\section{Riskianalyysi}
\subsection{Asteikko}
Todennäköisyyttä ja vakavuutta mitataan matala-keskiverto-korkea asteikolla.
\subsection{Projektikohtaiset riskit}

\begin{figure}[h]
\begin{tabular}{|p{2.8cm}|p{12.5cm}|}
\hline
Riski & Projektia ei saada toteutettua käytettävissä olevassa ajassa. \\
\hline
Todennäköisyys & korkea \\
Vakavuus & korkea \\
Vastatoimet & Projektin ajankäyttöä tulee suunnitella ja seurata tarkasti koko projektin ajan. \\
\hline
Riski & Ryhmän jäsen sairastuu kesken projektin. \\
\hline
Todennäköisyys & keskiverto \\
Vakavuus & keskiverto \\
Vastatoimet & Sairastuneen henkilön tehtävät tulee välittömästi jakaa käytettävissä oleville henkilöille. \\
\hline
Riski & Projektin jonkin vaiheen toteuttaminen vaatii puuttuvaa teknistä osaamista. \\
\hline
Todennäköisyys & keskiverto \\
Vakavuus & keskiverto \\
Vastatoimet & Osaaminen tulee kartoittaa suunnittelussa, jossa mahdollinen osaamisen puute voidaan kiertää, jos sen kerääminen tehtävän ohessa ei ole mahdollista.\\
\hline
Riski & Suunnittelussa ilmenee puutteita, jotka aiheuttavat jonkin suunnitelmien pohjalta tehdyn osan uudelleentekemisen.\\
\hline
Todennäköisyys & keskiverto \\
Vakavuus & keskiverto \\
Vastatoimet & Koko ryhmän tulee osallistua suunnitelman laatimiseen ja suunnitelmista tulee järjestää ajoittaisia katselmuksia niiden lukkoonlyömiseksi.\\
\hline
Riski & Ohjelmiston monimutkaisuuden kasvaminen tuo mukanaan ohjelmistovirheitä, jotka ovat vaikeasti jäljitettäviä tai joita on lukuisasti.\\
\hline
Todennäköisyys & korkea\\
Vakavuus & keskiverto\\
Vastatoimet & Jokaiselle komponentille tai luokalle tulee kirjoittaa yksikkötesti, joka voidaan mieluiten ajaa automaattisesti. Ohjelmistolle tulee myös suorittaa ajoittain funktionaalisia testejä.\\
\hline
Riski & Valittu ympäristö tai tekniikka osoittautuu kelvottomaksi tarkoitukseen.\\
\hline
Todennäköisyys & matala \\
Vakavuus & korkea\\
Vastatoimet & Suunnittelussa tulee kartoittaa valittujen ympäristöjen ja tekniikoiden puutteita.\\
\hline
\end{tabular}
\end{figure} 

\section{Projektin laitteisto- ja ohjelmistovaatimukset}
\subsection{Laitteistovaatimukset}
Ohjelmistot toimivat Pentium III yhteensopivalla tai paremmalla suorittimella. Muistivaatimus on 128 Mb.
\subsection{Palvelin}
Palvelinpuolen komponentti on suunniteltu toimimaan Java EE yhteensopivalla sovelluspalvelimella. Apache 
Tomcat on eräs yhteensopiva toteutus, joka toimii useilla Linux/Unix alustoilla sekä Windowsilla.
\subsection{Asiakas}
Asiakaskomponentti on suunniteltu toimimaan Java 2 Standard Edition alustalla. Alustan vaatimat ohjelmistot 
ovat saatavilla useimmille käyttöjärjestelmille.
\subsection{Tietokanta}
Palvelinpuolen komponentti käyttää tietokantaa JDBC-rajapinnan kautta. Tietokannan tulee olla yhteensopiva 
edellämainitun rajapinnan sekä SQL92 standardin kanssa. Oracle, MySQL ja PostgreSQL ovat eräitä yhteensopivia 
tietokantaohjelmistoja.
\newpage
\section{Koko- ja kustannusarviot}
\subsection{Kokoarvio koodiriveissä}

Projektissa tulee olemaan arviolta 5000-7000 koodiriviä. Projektin tulee kestämään 15 viikkoa.
\subsubsection{Asiakasohjelma}
\begin{figure}[h]
\begin{tabular}{|l|l|}
\hline
Komponentti & Koodirivit \\
\hline
Käyttöliittymä & 1000 \\
\hline
Logiikka & 2000 \\
\hline
Tietoliikenneoperaatiot & 300\\
\hline
\end{tabular}
\end{figure} 

\subsubsection{palvelin}

\begin{figure}[h]
\begin{tabular}{|l|l|}
\hline
Komponentti & Koodirivit \\
\hline
Logiikka & 3000 \\
\hline
Tietokantaoperaatiot & 800\\
\hline
Tietoliikenneoperaatiot & 300\\
\hline
\end{tabular}
\end{figure} 
\subsection{Toimintopisteanalyysi}
Analyysi tehdään listaamalla ohjelmiston toiminnot rajapintojen mukaan luokiteltuna. Jokaisen toiminnon 
ohessa on toteutuksen vaikeustason luokitus matala-keskiverto-korkea ja vastaava pistemäärä.
\subsubsection{Komponenttijako}
Syötteet
\begin{itemize}
\item Kirjautuminen, matala, 2
\item Käyttäjien hallinnointi, keskiverto, 4
\item Bottien hallinnointi, keskiverto, 4
\item Pelien hallinnointi, keskiverto, 5
\item Pelin pelaaminen, keskiverto, 8
\end{itemize}
\newpage
Tulosteet
\begin{itemize}
\item Peliaulanäkymä, keskiverto, 6
\item Pelipöytänäkymä, keskiverto, 7
\item Käyttäjienmuokkausnäkymä, keskiverto, 8
\end{itemize}
Liittymät
\begin{itemize}
\item Tietokanta, keskiverto, 8
\item XML-pohjainen tietoliikenneprotolla, keskiverto, 8
\end{itemize}
\subsubsection{Hienosäätöpisteet}
Sivuston http://www.softwaremetrics.com/fpafund.htm taulukkoa käytettiin hienosäätöarvon laskemisessa.

Hienosäätöarvo (VAF) = 0.65 + (27 / 100)

hienosäätöarvo = 0.92
\subsubsection{Toimintopisteet}
UAF = 2+4+4+5+8+6+7+8+8+8 = 60

FP = UAF * VAF = 55.2

\subsubsection{Tulkinta}

Henkilötyökuukausia projektilla on käytössään n. 4 * 5 / 2 = 10. Viimeinen puolitus johtuu siitä, että 
viikossa käytetään keskimäärin 20 tuntia normaalin 40 tunnin sijasta. Eräällä kaavalla henkilötyökuukausia 
toimintopisteistä kertyisi 55.23*0.45/27 = 8.32. \newpage

\section{Projektin aikataulu}
Projekti alkoi 14.1.2008. Projekti päättyy 2.5.2008. Periodien välinen viikko 3.3.2008 - 9.3.2008 on 
tarkoitus pitää vapaana. Vaiheita voidaan suorittaa osin päällekkäin mahdollisuuksien rajoissa, ja projektin 
aikataulua päivitetään jatkuvasti.
\begin{figure}[h]
\begin{tabular}{|l|l|l|}
\hline
Työvaihe & Alkaa & Valmis \\
\hline
Projektin aloitus ja ongelmaan tutustuminen & 14.1.2008 & 21.1.2008 \\
\hline
Projektisuunnitelma PS1 & 14.1.2008 & 28.1.2008\\
\hline
Vaatimusmäärittelyn yleistaso VD1 & 14.1.2008 & 4.2.2008\\
\hline
Järjestelmätestauksen suunnittelu & 28.1.2008 & 11.2.2008\\
\hline
Suunnittelu S1 & 4.2.2008 & 25.2.2008\\
\hline
Toteutus ja yksikkotestaus & 18.2.2008 & 12.3.2008\\
\hline
Integrointi- ja järjestelmätestaus & 27.2.2008 & 17.3.2008\\
\hline
Demo ja asiakkaan palaute & 10.3.2008 & 17.3.2008\\
\hline
Projektisuunnitelman päivitys & 10.3.2008 & 17.3.2008\\
\hline
Vaatimusmäärittelyn päivitys VD2 & 17.3.2008 & 24.3.2008\\
\hline
Suunnittelu SD2 &24.3.2008 & 9.4.2008\\
\hline
Toteutus ja yksikkotestaus & 26.3.2008 & 16.4.2008\\
\hline
Integrointi- ja järjestelmätestaus & 7.4.2008 & 21.4.2008 \\
\hline
Demo ja asiakkaan palaute & 14.4.2008 & 21.4.2008 \\
\hline
Projektin viimeistely ja palautus & 16.4.2008 & 28.4.2008\\
\hline
\end{tabular}
\end{figure} 

\section{Seuranta- ja raportointimenetelmät}
Projektin edistymistä ja henkilöiden ajankäyttöä seurataan kaksi kertaa viikossa olevissa kokouksissa. 
Henkilöt kirjaavat tehdyt työtunnit ja niiden kohteen Ohjelmistotuotantoprojekti-kurssin tietojärjestelmään. 
\subsection{TRAC}
Tehtävistä, aikatauluista ja bugeista pidetään kirjaa TRAC sovelluksessa. Tehtävät kirjataan TRACiin 
vastuuhenkilön kera kokouksissa tehtäviä jaettaessa.

