% .tex-tiedosto projektin dokumenttien latomiseksi.

% Kirjoitelmaluokka, t�ss� k�ytet��n projektien projdoc-luokkaa.
\documentclass[twoside]{projdoc}

\usepackage{paralist}
\usepackage{alltt}

% --- kansisivu ---

% Projektin nimi
\project{Paatti}

% Luottamuksellisuus: k�yt� termi� 'Luottamuksellinen' tai 'Julkinen'
\publicity{Julkinen}

% Versionumero: numerointik�yt�nt� on projektikohtainen
\version{0.2.0}

% Dokumentin nimi
\title{Sovellusraportti}

% --- tiivistelm�sivu ---

% Tekij�t: huomaa aakkosj�rjestys sukunimen mukaan
\author{Tapio Ker�nen}{Toni Salminen}{Jari Salokangas}{Lauri Satokangas}
% Puhelinnumerot: tekij�it� vastaava j�rjestys!
\authorphones{040-8464981}{040-5378086}{040-8652014}{040-5735358}
% S�hk�postiosoitteet: tekij�it� vastaava j�restys!
\authoremails{t.tapio.keranen@student.jyu.fi}{toni.a.j.salminen@student.jyu.fi}{jari.p.t.salokangas@student.jyu.fi}{lauri.n.satokangas@student.jyu.fi}
% Etu- ja sukunimen alkukirjaimet: tekij�it� vastaava j�rjestys!
\authorinitials{TK}{TS}{JS}{LS}

% Tiivistelm� dokumentista: t�m� ei siis ole tiivistelm� projektista,
% vaan t�m�n ko. dokumentin tarkoituksesta. 
\docabstract{Paatti-projekti kehitti Jyv�skyl�n yliopiston psykologian laitokselle prototyypin tietoj�rjestelm�st�, jolla kuntoutetaan i�kk�it�, mielenterveyspotilaita ja ty�uupumuksesta k�rsivi� sek� tuetaan kyseisiin aihealueisiin liittyv�� tutkimusta. Tietoj�rjestelm�ss� on kaksi k�ytt�liittym��, joista tutkijan k�ytt�liittym�ll� hallitaan kuntoutettavien kuntoutusohjelmia sek� kuntoutettavan k�ytt�liittym�ll� kuntoutettava suorittaa tutkijan laatimaa kuntoutusohjelmaa. Sovellusraportissa kuvataan projektissa toteutettu tietoj�rjestelm�n prototyyppi k�ytt�liittym�n, tietorakenteen, ohjelmointik�yt�nteiden sek� tavoitteiden toteutumisen osalta.} 

% Tiivistelm� projektista
\projectabstract{Paatti-projekti kehitti Jyv�skyl�n yliopiston psykologian laitokselle prototyypin tietoj�rjestelm�st�, jolla tuetaan vanhusten, mielenterveyspotilaiden ja ty�uupumuksesta k�rsivien itsen�ist� el�m�� ja kuntoutumista, sek� tuetaan kyseisiin aihealueisiin liittyv�n tutkimuksen tekemist�.}

% Avainsanat: dokumentin sis�lt��n liittyvi� olennaisia asiasanoja: aakkosj�rjestys, ensimm�inen sana isolla alkukirjaimella ja piste loppuun.
\keywords{Arkkitehtuuri, jatkokehitys, komponentit, k�yt�nteet, k�ytt�liittym�, k�ytt�ohje, rajapinnat, rakenne, sovellus, tavoitteet, testaus, tietoj�rjestelm�, tietokanta.}

% Varsinainen tulosteessa n�kyv� ladonta alkaa
\begin{document}

% --- versiohistoriasivu ---

% T�m� latoo versiohistorialle ymp�rist�n, sen alapuolelle ladotaan
% versiohistoriataulukko. Esimerkin vuoksi tehty. 
\versionhistory

\begin{tabular}{|c|r|p{9.0cm}|p{1.2cm}|}
\hline
\textbf{Versio} & \textbf{P�iv�m��r�} & \textbf{Muutokset} & \textbf{Tekij�t} \\
\hline \hline
0.0.1    & 11.5.2012  & Dokumentti luotu ja pohjaksi otettu projektisuunnitelman pohja. & JS\\
\hline
0.0.2    & 12.5.2012  & Muokattu avainsanoja, lukuja ''Johdanto'' ja ''Ohjelmointik�yt�nteet''. Kirjoitettu luvut ''Tutkijan k�ytt�liittym�'', ''Kuntoutettavan k�ytt�liittym�'', ''Sovelluksen rakenne'' (osittain), ''Tavoitteiden toteutuminen'' (osittain) sek� ''Yhteenveto''. & JS\\
\hline
0.0.3    & 13.5.2012  & Lis�tty kuvat lukuihin ''Tutkijan sovelluksen n�kym�kartta'', ''Kuntoutettavan sovelluksen n�kym�kartta'', ''Tietoj�rjestelm�n asiakas-palvelinarkkitehtuuri'' ja ''Sovelluksen tietokanta''. Kirjoitettu lukuja ''Sovelluksen tietokanta'', ''Tunnetut puutteet ja virheet'' ja ''Jatkokehitysideat'' sek� muokattu lukua ''Toteutusratkaisujen kehittyminen''. & JS\\
\hline
0.0.4    & 14.5.2012  & Lis�tty kuvat lukuihin ''Sovelluksen p��n�kym�'' ja ''Oma profiili -n�kym�''. Muokattu lukuja ''Sovelluksen tietokanta'', ''Tunnetut puutteet ja virheet'' ja ''Jatkokehitysideat''. & JS\\
\hline
0.1.0    & 15.5.2012  & Toimitettu versio ohjaajan tarkastettavaksi. & JS\\
\hline
0.1.1    & 17.5.2012  & Muokattu avainsanoja, lukuja ''Johdanto'', ''Termit'', ''Tutkijan k�ytt�liittym�'', ''Kuntoutettavan k�ytt�liittym�'',''Tietoj�rjestelm�n rakenne'' (osittain) ja ''Yhteenveto''. & JS\\
\hline
0.1.2    & 18.5.2012  & Lis�tty luku ''Tietoj�rjestelm�n tietokanta''. Muokattu lukuja ''Tietoj�rjestelm�n rakenne'' (osittain), ''Ohjelmointik�yt�nteet'' ja ''Tavoitteiden toteutuminen''. & JS\\
\hline
0.1.3    & 19.5.2012  & Poistettu ylim��r�isi� termej�. Muokattu lukuja ''Tapahtumien luonti ja muokkaus'', ''Tietoj�rjestelm�n tietokanta''. & JS\\
\hline
0.1.4    & 20.5.2012  & Muokattu lukua ''Jatkokehitysideat''. & JS\\
\hline
0.1.5    & 21.5.2012  & Muokattu sovellusraporttia kokonaisvaltaisesti. Kirjoitettu lukuja ''Tietoj�rjestelm�n rakenne ja rajapinnat'' ja ''Tietoj�rjestelm�n komponentit''. & JS\\
\hline
\end{tabular}

\begin{tabular}{|c|r|p{9.0cm}|p{1.2cm}|}
\hline
\textbf{Versio} & \textbf{P�iv�m��r�} & \textbf{Muutokset} & \textbf{Tekij�t} \\
\hline \hline
0.1.6    & 22.5.2012  & Lis�tty kuvat lukuihin ''Sovelluksen n�kymien rakenne (kuntoutettava)'' ja ''Tietoj�rjestelm�n rakenne ja rajapinnat''. & JS\\
\hline
0.2.0    & 22.5.2012  & Toimitettu versio ohjaajan tarkastettavaksi. & JS\\
\hline
\end{tabular}

% --- tietoa projektista -sivu ---

% \projectinfo latoo ymp�rist�n projektin tiivistelm�lle, joka on 
% projektikohtainen.
% Projektin tiivistelm� ja tekij�iden tiedot ladotaan automaattisesti sivun
% alkuun. Eli lis�tt�v� projektiorganisaation tiedot muiden kuin tekij�iden
% osalta sek� tarvittavat yhteystiedot. Alla t�m� on tehty esimerkin vuoksi.
\projectinfo

\textbf{Tilaaja:}

\begin{tabular}{p{4.8 cm}p{8cm}p{2.4cm}}
~~~$\bullet$~~Jukka Kaartinen & \texttt{jukka.kaartinen@jyu.fi} & 0400-248148 \\
~~~$\bullet$~~P�ivi Lappalainen & \texttt{paivi.k.lappalainen@psyka.jyu.fi} & 040-8054192 \\
~~~$\bullet$~~Raimo Lappalainen & \texttt{raimo.lappalainen@psyka.jyu.fi} & 050-4432349 \\
~~~$\bullet$~~Heikki Lyytinen  & \texttt{heikki.lyytinen@psyka.jyu.fi} & 050-5524892 \\

\end{tabular}

\vspace{1truecm}
\textbf{Ohjaajat:}

\begin{tabular}{p{5.0cm}p{7.8cm}p{2.4cm}}
~~~$\bullet$~~Matti Lehtinen & \texttt{matti.k.lehtinen@jyu.fi} & 041-4564118 \\
~~~$\bullet$~~Jukka-Pekka Santanen & \texttt{santanen@mit.jyu.fi} & 040-8053299 \\
~~~$\bullet$~~Outa Valkama & \texttt{outa.j.valkama@gmail.com} & 045-3490910
\end{tabular}

\vspace{1truecm}
\textbf{Yhteystiedot:}

\begin{tabular}{p{4.5cm}p{13cm}}
~~~$\bullet$~~S�hk�postilistat: & \texttt{paatti@korppi.jyu.fi},\linebreak \texttt{paatti\_opetus@korppi.jyu.fi} \\
~~~$\bullet$~~S�hk�postiarkistot: & \texttt{https://korppi.jyu.fi/list-archive/paatti/}, \texttt{https://korppi.jyu.fi/list-archive/\linebreak paatti\_opetus/} \\ 
~~~$\bullet$~~Ty�huone: & Agora C222.2, puh. 040-8053308
\end{tabular}


% --- chapter 1 ---

%-----------------------------------------------------------------------------
% \mainmatter latoo automaattisesti sis�llysluettelon ym. alkusivut, ja 
%% sen j�lkeen alkaa dokumentin sis�llysluettelossa n�kyv�t luvut.
\mainmatter

% \chapter{P��luvun nimi} aloittaa p��luvun, \section{Alaluvun nimi} alaluvun,
% ja \subsection{Ala-alaluvun nimi} ala-alaluvun.
\chapter{Johdanto}

Paatti-projekti toteutti Sovellusprojekti-kurssilla kev��ll� 2012 Jyv�skyl�n yliopiston psykologian laitokselle prototyypin tietoj�rjestelm�st�, jolla tuetaan kuntoutettavien itsen�ist� el�m�� ja kuntoutumista sek� tutkijoiden tekem�� tutkimusta. Kuntoutettaviin kuuluu muun muassa i�kk�it�, ty�uupumuksesta k�rsivi� ja mielenterveyspotilaita. Tietoj�rjestelm�ll� voidaan tukea tutkimusta ja parantaa kuntoutettavien hyvinvointia monin eri tavoin. 

I�kk�it� ihmisi� halutaan auttaa el�m��n tervett� ja itsen�ist� el�m�� omassa kodissaan pidemp��n. I�kk�ill� on usein muistih�iri�it�, jotka est�v�t heit� noudattamasta hoito-ohjeita. Tilaaja haluaa pysty� muistuttamaan kuntoutettavia hoito-ohjeiden noudattamisesta. Useasti varttuneempien ihmisten fyysinen aktiivisuus alenee, ja t�m� johtaa toimintakyvyn heikkenemiseen, joka est�� heit� el�m�st� itsen�isesti omassa kodissaan. Tilaaja haluaa motivoida ik�ihmisi� liikkumaan enemm�n omatoimisesti.

Ty�uupumuksesta k�rsiv�t eiv�t useasti muista pit�� taukoja el�m�ss��n ja ty�ss��n. Heit� pit�� muistuttaa rentoutusharjoituksista, jotka helpottavat stressi�, auttavat toipumaan ja opettavat keinoja selviyty� uupumuksesta.

Mielenterveyspotilaiden hoito vaatii paljon hoitohenkil�kunnan l�sn�oloa. L�sn�olo ei kuitenkaan ole aina mahdollista, kun h�t� on suurin. Potilaan tilaa tulee voida seurata tapaamisten v�lill�, sek� potilaan ja tutkijan tulee tarvittaessa saada yhteys toisiinsa tapaamisten v�lill�.

Tilaaja haluaa joustavan yhteyden kuntoutettavan, omaisen ja tutkijan v�lille. Tutkijan ja kuntoutettavan v�lille halutaan yhteys, joka mahdollistaa rutiiniluonteisten teht�vien suorittamisen ilman tutkijan l�sn�oloa ajasta ja paikasta riippumattomasti. Yhteys mahdollistaa my�s nopeamman viestinn�n kuntoutettavan ja tutkijan v�lill� sek� antaa mahdollisuuden tutkijalle ja omaiselle seurata kuntoutukseen liittyvien tapahtumien suorittamista l�hes reaaliajassa.

Projektissa toteutettu tietoj�rjestelm� koostuu kahdesta k�ytt�liittym�st�: tutkijan ja kuntoutettavan k�ytt�liittym�st�. Tutkijan k�ytt�liittym� on suunniteltu tutkijoiden ja omaisten k�ytett�v�ksi. K�ytt�liittym�ll� voi hallita k�ytt�ji�, ryhmi� ja tutkimuksia sek� luoda kuntoutusohjelmia ryhmille. Kuntoutettavan k�ytt�liittym� on suunniteltu kuntoutettavien k�ytt��n ja sill� voi suorittaa kuntoutusohjelmia sek� tarkastella suorittamia kuntoutusohjelman tapahtumia. Toteutetut k�ytt�liittym�prototyypit ovat yhteydess� palvelimella olevaan tietokantaan.

Paatti-projektissa toteutettu tietoj�rjestelm�n prototyyppi ei sis�ll� kaikkia vaadittuja toimintakokonaisuuksia. Tilaajien kanssa jatkokehitykseen sovittiin tutkijan k�ytt�liittym�st� mediatiedostojen lataus ja esikatselun�kym�, suoritedatan graafiseen analysointiin k�ytett�v� raporttin�kym�, viestien lukemiseen ja l�hett�miseen tarkoitettu viestin�kym� sek� ohjen�kym�. Kuntoutettavan k�ytt�liittym�st� tilaajien kanssa jatkokehitykseen sovittiin p�iv�kirjamerkint�jen tallentamiseen ja lukemiseen tarkoitettu p�iv�kirjan�kym� sek� viestien lukuun tarkoitettu viestin�kym�.

Sovellusraportissa kuvataan vaatimusm��rittelyn \cite{vaatimusmaarittely} toiminnallisten vaatimuksien toteutustapa ja toteutuminen. Lis�ksi raportissa kuvataan sovelluksen k�ytt�liittymi�, yleisi� toteutusratkaisuja, 1toteutuksen tietorakennetta ja yhteyksi� tiedostoihin, puutteellisia toteutusratkaisuja, suoritettuja testauksia sek� jatkokehitysideoita. Projektin tuloksia, k�yt�nteit�, teht�vien ty�m��ri�, ty�njakoa, aikataulua, sek� riskej� ja muita projektin l�pivientiin liittyvi� asioita k�sitell��n projektiraportissa [6]. 

Luvussa 2 kuvataan aihealueeseen ja sovellukseen liittyv�t termit ja niiden merkitys. Luvuissa 3 ja 4 kuvataan tutkijan ja kuntoutettavan k�ytt�mien sovellusten k�ytt�liittymien n�kym�t ja toiminnot. Luvussa 5 kuvataan j�rjestelm�n rakenne ja toteutusratkaisuja. Luvussa 6 kuvataan j�rjestelm�n tietokanta ja tietokannassa olevien taulujen merkitykset. Luvussa 7 kuvataan projektin ohjelmointik�yt�nteit� sek� testausk�yt�nteit� ja testauksen tuloksia. Luvussa 8 kuvataan projektin tavoitteiden toteutumista, j�rjestelm�n tunnettuja virheit� ja puutteita sek� projektin aikana esiintulleita jatkokehitysideoita. Luvussa 9 sis�lt�� k�ytt�ohjeita sovelluksen yll�pit�jille.


% --- chapter 2 ---

\chapter{Termit}

Luvussa kuvataan projektissa k�ytett�vi� aihealueen termej� sek� tekniikoita ja kehitysv�lineit�.

\section{Aihealueen termit}
Projektin sovellusraportin aihealueen termej� ovat seuraavat:
% Termilistat ladotaan Ventry-ymp�rist�ll�, parametrina pisin termi,
% jolloin sisentyy oikein:
\begin{Ventry}{Sovellusprojekti}
%  \item[Fyysinen aktiivisuus] viittaa kuntoutettavan harrastamaan liikunnan m��r��n.
  \item[H�lytysteht�v�] on teht�v�tyyppi, joka l�hett�� j�rjestelm�n kautta viestin toiselle k�ytt�j�lle.
%  \item[Interventio] on psykologisen tiedon, menetelm�n ja osaamisen avulla tapahtuva vaikuttaminen.
  \item[Kuntoutettava] on tietoj�rjestelm�n k�ytt�j�, joka suorittaa kuntoutusohjelmia.
  \item[Kuntoutusohjelma] on tutkijan ryhm�lle tai k�ytt�j�lle laatima kokonaisuus aikataulutettuja tapahtumia.
  \item[K�ytt�j�rooli] on k�ytt�j�n k�ytt�oikeuksia tietoj�rjestelm�ss� kuvaava rooli. Niit� ovat mm. kuntoutettava ja tutkija. 1
  \item[Mobiililaite] on �lypuhelin tai sormitietokone.
%  \item[Metatieto] on kuvailevaa tietoa tiedosta, jota hy�dynnet��n tiedon yksil�inniss� ja haussa.
  \item[Ohje] on teht�v��n liittyv� kuvaus teksti-, ��ni-, kuva- tai videomuodossa.
  \item[Omainen] on k�ytt�j�, jolla on oikeus seurata kuntoutettavan edistymist� ja aktiivisuutta.
%  \item[Profiiliviesti] on j�rjestelm�n kautta l�hetett�v� viesti.
  \item[Ryhm�] on k�ytt�jist� koostuva kokonaisuus, jolle mm. voidaan laatia kuntoutusohjelma.
  \item[Suorite] on teht�v�n suorittamisesta tietokantaan tallennettu data.
  \item[Tapahtuma] on tutkijan laatima teht�vien kokonaisuus, joka liitet��n osaksi kuntoutusohjelmaa.
  \item[Teht�v�] on tapahtuman sis�ll� oleva yksitt�inen teht�v�, joka voi sis�lt�� mm. teksti�, ��nt�, kuvan tai videon.
%  \item[Toimintakyky] on kuntoutettavan kyky tehd� h�nelle hy�dyllisi� asioita.
  \item[Tutkija] on k�ytt�j�, joka laatii kuntoutusohjelmia kuntoutettaville ja seuraa niiden toteutumisia.
  \item[Tutkijan k�ytt�liittym�] on k�ytt�liittym�, jolla tutkija luo tapahtumia, aikatauluttaa tapahtumia, hallitsee k�ytt�jien ja ryhmien tietoja sek� muodostaa suoritteista erilaisia raportteja.
  \item[Tutkimus] on samaan tutkimusaiheeseen tai -kohteeseen liittyvien ryhmien kokonaisuus.
\end{Ventry}

\section{Vaatimusm��rittelyn termit}

Vaatimusm��rittelyss� esiintyvi� termej� ovat seuraavat:
\begin{Ventry}{Sovellusprojekti} 
  \item[Etenemisvaihtoehto] on monivalintateht�v�n yksi valinta. 
  \item[H�lytyskomponentti] on teht�v�, joka l�hett�� profiiliviestin komponentin asetuksiin m��ritetyille henkil�ille. 
%  \item[Kotoistus] on toimi, jolla tietoj�rjestelm� k��nnet��n vieraalle kielelle.
  \item[K�ytt�j�profiili] on j�rjestelm�ss� olevan k�ytt�j�n profiili, joka sis�lt�� tunnistetietoja ja k�ytt�oikeuksia.
  \item[Mediasis�lt�] koostuu tietoj�rjestelm�ss� olevista multimediatiedostoista, joita voidaan sis�llytt�� teht�viin.
  \item[Muistutus] huomauttaa k�ytt�j�� tapahtuneesta asiasta. Muistutus voi olla ��ni-, v�rin�- ja tekstimuodossa. 
  \item[Sis�lt�komponentti] on teht�v�, joka esitt�� k�ytt�j�lle informaatiota, kuten teksti�, ��nt�, valokuvan tai videon.
  \item[Sy�tekomponentti] on teht�v�, joka tallentaa j�rjestelm��n k�ytt�j�n antamaa informaatiota, kuten teksti�, ��nt�, valokuvan tai videon. 
  \item[Tapahtumamuokkain] on tutkijan k�ytt�liittym�ss� oleva kuntoutusohjelmissa k�ytett�vien tapahtumien laatimiseen k�ytett�v� ty�kalu.
  \item[Tapahtumatyyppi] on tapahtumalle asetettu tyyppi, jolla tapahtuman sis�lt� voidaan tunnistaa. Niit� voivat olla mm. liikunta- tai rentoutustapahtumat.
  \item[Valintakomponentti] on teht�v�, johon k�ytt�j� vastaa valitsemalla vaihtoehdon.
\end{Ventry}

\section{Tekniikat ja kehitysv�lineet}
Dokumentissa esiintyvi� tekniikoita ja kehitysv�lineit� ovat seuraavat:
\begin{Ventry}{Sovellusprojekti}
  \item[CSS] on WWW-dokumenteille kehitetty tyylikieli.
  \item[Git] on hajautettu versiohallintaj�rjestelm�.
  \item[HTML5] on uusi versio WWW-sivujen tekemiseen k�ytetyst� HTML-kuvauskielest�.
  \item[JavaDoc] on ohjelma, jonka avulla Javan l�hdekoodista voidaan generoida luokkadokumentaatio.
  \item[JavaScript] on WWW-ymp�rist�ss� k�ytett�v� komentosarjakieli, jolla voidaan mm. lis�t� WWW-sivuille dynaamista toiminnallisuutta.
%  \item[jQuery] on kaikille selaimille tarkoitettu ilmainen ja avoimen l�hdekoodin lisenssin alainen JavaScript-kirjasto.
  \item[NetBeans] on integroitu ohjelmointiymp�rist� mm. Java- ja JavaScript-ohjelmointikielille.
  \item[Vaadin] on Java-sovelluskehitysymp�rist� WWW-sovellusten luomiseen.
  \item[YouSource] on Git-versiohallintaohjelmistoa tukeva l�hdekoodien julkistusj�rjestelm�, jota k�ytet��n WWW-k�ytt�liittym�ll�.
\end{Ventry}


% --- chapter 3 ---

\chapter{Tutkijan k�ytt�liittym�}

Luvussa esitell��n p��osin tutkijan k�ytett�v�ksi toteutetun sovelluksen k�ytt�liittym�n eri n�kym�t sek� niihin liittyv�t toiminnot ja niiden v�liset suhteet.

Toteutettu tutkijan k�ytt�liittym� ei sis�ll� kaikkia tarvittavia toiminnallisuuksia. Toteutettuihin toiminnallisuuksiin kuuluu sovelluksen sis��nkirjautuminen \textit{Sis��nkirjautuminen}-n�kym�ss�, k�ytt�jien luonti ja muokkaus \textit{K�ytt�j�t}-n�kym�ss�, ryhmien luonti ja muokkaus \textit{Ryhm�t}-n�kym�ss�, tutkimusten luonti ja muokkaus \textit{Tutkimukset}-n�kym�ss�, tapahtumien luonti ja muokkaus \textit{Tapahtumat}-n�kym�ss� sek� kuntoutusohjelmien luonti ja muokkaus \textit{Kuntoutusohjelmat}-n�kym�-ss�. Jatkokehityksess� toteutetaan multimediatiedostojen lataaminen ja esikatselu \textit{Mediasis�lt�}-n�kym�ss�, suoritedatasta luotavien raporttien luonti \textit{Raportit}-n�kym�-ss�, viestien l�hett�minen ja vastaanottaminen \textit{Viestit}-n�kym�ss� sek� ohjeiden luku \textit{Ohje}-n�kym�ss�. 

\section{Sovelluksen n�kym�kartta}

Kuvassa \ref{sov_tutkija_kartta} havainnollistetaan tutkijan k�ytt�liittym�n n�kymien v�list� jakautumista eri n�kymiin ja niiden v�lilehti� n�kym�karttana. Luvuissa 3.3 - 3.9 kuvataan kunkin n�kym�n toiminnallisuus ja yhteydet muihin n�kymiin.

\begin{figure}[htp]
\centering
\scalebox{0.65}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{sov_tutkija_kartta.eps} }
\caption{Tutkijan k�ytt�liittym�n n�kym�kartta.} \label{sov_tutkija_kartta}
\end{figure}

\section{Sovelluksen n�kymien rakenne}

Sovelluksen toiminnallisuus on sijoitettu v�lilehtin� esitett�viin n�kymiin. V�lilehtiratkaisu mahdollistaa sulavan siirtymisen n�kym�st� toiseen yl�reunan v�lilehtikuvakkeiden kautta. Muista navigointimahdollisuuksista n�kymien v�lill� on mainintoja luvuissa 3.4 - 3.8.

N�kymien rakenne on ulkoasultaan ja sijoittelultaan samanlainen. Vasemmalla puolella n�kym�� on hakukomponentti, jolla k�ytt�j� voi hakea tiettyyn n�kym��n liittyvi� tietoja. Esimerkiksi k�ytt�jien hallintan�kym�ss� kyseisell� hakukomponentilla voi hakea tietokannasta j�rjestelm�ss� olevia k�ytt�ji�. 

N�kymien oikealla puolella olevassa v�lilehdess� n�ytet��n hakutuloslistasta valittuun tietokokonaisuuteen liittyvi� tietoja, miss� voidaan muokata kyseiseen tietokokonaisuuteen liittyvi� tietoja.

\section{Sovelluksen p��n�kym�}

Sovelluksen p��n�kym�n� toimii \textit{Oma sivu} -n�kym�, joka n�ytt�� tutkijalle ensiarvoista tietoa kuntoutettavista. N�kym� my�s huomauttaa tutkijalle, jos h�nell� on jokin asia j��nyt kesken aiemmilla istunnoilla h�nen kirjautuessaan ulos j�rjestelm�st�. Kyseinen n�kym� avautuu aina ensimm�isen�, kun sovellukseen kirjaudutaan sis��n. T�m�n n�kym�n kautta kirjaudutaan my�s ulos j�rjestelm�st�.

Sovelluksen p��n�kym�n rakenne eroaa ulkoasultaan muista n�kymist�, sill� p��n�kym�ss� ei luoda tai muokata j�rjestelm�n tietokannan tietoja, vaan p��n�kym� toimii ensisijaisena informaatiovirtana sovelluksen k�ytt�j�lle. 

N�kym��n liittyv�t toiminnallisuudet sovittiin tilaajien kanssa projektin j�lkeiseen jatkokehitykseen. Uloskirjautumisen sijainnin muuttamista ja muita jatkokehitysideoita kuvataan luvussa 8.3.

\section{K�ytt�jien hallinta}

K�ytt�jien hallintan�kym�n kuvassa ?.? tutkija voi luoda uusia k�ytt�ji� j�rjestelm��n, hakea olemassa olevia k�ytt�ji� ja muokata heid�n tietojaan, hallita k�ytt�jien ryhmi� sek� tarkastella k�ytt�j�n suorittamien tapahtumien suoritedataa. P��n�kym�n toimintakokonaisuudet ovat uuden k�ytt�j�n luonti ja haetun k�ytt�j�n tietojen muokkaaminen. Tietojen muokkaamisen osatoimintakokonaisuudet on jaettu aliv�lilehdelle ja ne ovat k�ytt�j�n perustietojen muokkaaminen, k�ytt�j�n ryhmien j�senyyden tarkasteleminen, lis��minen ja poistaminen sek� tapahtumasuoritushistoria tarkastelu ja vieminen.

\textbf{Luotaessa uutta k�ytt�j��} tutkija painaa hakukomponentin \textit{Luo uusi} -painiketta, jolloin oikealla oleva aliv�lilehti aktivoituu muokattavaksi. T�m�n j�lkeen tutkija sy�tt�� pakollisiin sy�tekenttiin tarvittavat k�ytt�j�n perustiedot, jonka j�lkeen h�n voi tallentaa k�ytt�j�n j�rjestelm�n tietokantaan. Tutkija voi tallentamisen j�lkeen jatkaa juuri tallennetun k�ytt�j�n muokkausta tai valita toisen k�ytt�j�n muokattavaksi.

\textbf{K�ytt�j�n tietoja muokattaessa} tutkija voi muokata k�ytt�j�n perustietoja \textit{K�ytt�j�n tiedot} -aliv�lilehdess�. Muokattaviin k�ytt�j�n perustietoihin kuuluvat etunimi, sukunimi, k�ytt�j�tunnus ja k�ytt�j�n kuvaus. V�lilehdell� voidaan my�s tallentaa tai poistaa kyseinen muokattavaksi valittu k�ytt�j� \textit{Poista k�ytt�j�} -painikkeella. \textit{K�ytt�j�n ryhm�t} -v�lilehdell� tutkija voi n�hd� ryhm�t, joissa k�ytt�j� on j�senen� ja voi halutessaan lis�t� k�ytt�j�n uuteen ryhm��n tai poistaa k�ytt�j�n valitusta ryhm�st�. N�kym�st� voi my�s p��st� tarkastelemaan valitun k�ytt�j�n ryhm�n tietoja \textit{Tarkastele valittua ryhm��} -painikkeen avulla. \textit{Suoritetut tapahtumat} -v�lilehdell� tutkija voi tarkastella k�ytt�j�n suorittamista tapahtumista ker�tty� suoritedataa ja ottaa kyseisen datan xls-tiedostomuodossa Excel-taulukkolaskentaohjelmaan painamalla \textit{Vie .xls-muotoon} -painiketta.

\section{Ryhmien hallinta}

Ryhmien hallintan�kym�n kuvassa ?.? tutkija voi luoda uusia ryhmi� j�rjestelm��n, hakea olemassa olevia ryhmi� ja muokata niiden tietoja, hallita ryhm��n kuuluvia k�ytt�ji� sek� hallita ryhmien kuntoutusohjelmia. N�kym�n p��oimintakokonaisuudet ovat uuden ryhm�n luonti ja haetun ryhm�n tietojen muokkaaminen. Aliv�lilehdille jaetut tietojen muokkaamisen osatoimintakokonaisuudet ovat ryhm�n perustietojen muokkaaminen, ryhm�n k�ytt�jien j�senyyksien tarkasteleminen, lis��minen ja poistaminen sek� ryhm�n kuntoutusohjelmien tarkasteleminen, lis��minen ja poistaminen.

\textbf{Luotaessa uutta ryhm��} tutkija painaa hakukomponentin \textit{Luo uusi} -painiketta, jolloin oikealla oleva aliv�lilehti aktivoituu muokattavaksi. T�m�n j�lkeen tutkija sy�tt�� pakollisiin sy�tekenttiin tarvittavat ryhm�n perustiedot, jonka j�lkeen h�n voi tallentaa ryhm�n j�rjestelm�n tietokantaan. Tutkija voi tallentamisen j�lkeen jatkaa juuri tallennetun ryhm�n muokkausta tai valita toisen ryhm�n muokattavaksi.

\textbf{Ryhm�n tietoja muokattaessa} tutkija voi muokata valitun ryhm�n perustietoja \textit{Ryhm�n tiedot} -v�lilehdell�. Muokattaviin ryhm�n perustietoihin kuuluvat nimi, ryhm�n rooli, ryhm��n liitetty tutkimus ja ryhm�n kuvaus. V�lilehdell� voidaan my�s tallentaa tai poistaa kyseinen muokattavaksi valittu ryhm� \textit{Poista ryhm�} -painikkeella. \textit{Ryhm�n j�senet} -v�lileh-dell� tutkija voi n�hd� ryhm��n kuuluvat k�ytt�j�t ja voi halutessaan joko lis�t� ryhm��n uuden k�ytt�j�n tai poistaa ryhm�st� valitun k�ytt�j�n. V�lilehdelt� voi my�s p��st� suoraan tarkastelemaan valitun ryhm�n j�senen� olevan k�ytt�j�n tietoja \textit{Tarkastele valittua ryhm��} -painikkeen avulla. \textit{Ryhm�n aikataulut} -v�lilehdell� tutkija voi tarkastella ryhm�n sis�lt�mi� kuntoutusohjelmia, lis�t� uusia kuntoutusohjelmia ryhm�lle sek� poistaa ryhm�lt� kuntoutusohjelmia. N�kym�st� voi hyp�t� my�s tarkastelemaan ryhm�ll� olevian kuntoutusohjelman tietoja \textit{Tarkastele valittua aikataulua} -painikkeen avulla.

\section{Tutkimusten hallinta}

Tutkimusten hallintan�kym�n kuvassa ?.? tutkija voi luoda uusia tutkimuksia j�rjestelm��n sek� hakea ja muokata olemassa olevia tutkimuksia. N�kym�n p��toimintakokonaisuudet ovat uuden tutkimuksen luonti sek� haetun tutkimuksen tietojen muokkaaminen.

\textbf{Luotaessa uutta tutkimusta} tutkija painaa hakukomponentin \textit{Luo uusi} -painiketta, jolloin oikealla oleva aliv�lilehti aktivoituu muokattavaksi. T�m�n j�lkeen tutkija sy�tt�� pakollisiin sy�tekenttiin tarvittavat tutkimuksen perustiedot, jonka j�lkeen h�n voi tallentaa tutkimuksen j�rjestelm�n tietokantaan. Tutkija voi tallentamisen j�lkeen jatkaa juuri tallennetun tutkimuksen muokkausta tai valita toisen tutkimuksen muokattavaksi.

\textbf{Tutkimuksen tietoja muokattaessa} tutkija voi muokata tutkimuksen perustietoja \textit{Tutkimuksen tiedot} -v�lilehdell�. Muokattaviin tutkimuksen perustietoihin kuuluvat nimi ja tutkimuksen kuvaus. V�lilehdell� voidaan my�s tallentaa tai poistaa kyseinen muokattavaksi valittu tutkimus \textit{Poista tutkimus} -painikkeella. V�lilehdess� n�ytet��n my�s tutkimukseen kuuluvat ryhm�t, joita voi hyp�t� tarkastelemaan \textit{Tarkastele valittua ryhm��} -painikkeen avulla.

\section{Tapahtumien luonti ja muokkaus}

Tapahtumien luonti- ja muokkausn�kym�n kuvassa ?.? tutkija voi luoda uusia tapahtumia j�rjestelm��n sek� hakea ja muokata olemassa olevia tapahtumia. N�kym�n p��toimintakokonaisuudet ovat uuden tapahtuman luonti sek� haetun tapahtuman muokkaaminen. Tapahtuman muokkaamisen osatoimintakokonaisuudet ovat tapahtuman perustietojen muokkaaminen sek� tapahtuman rakenteen ja sis�ll�n muokkaaminen.

\textbf{Luotaessa uutta tapahtumaa} tutkija painaa hakukomponentin \textit{Luo uusi} -painiketta, jolloin oikealla oleva aliv�lilehti aktivoituu muokattavaksi. T�m�n j�lkeen tutkija sy�tt�� pakollisiin sy�tekenttiin tarvittavat tapahtuman perustiedot, jonka j�lkeen h�n voi muokata tapahtuman rakennetta ja sis�lt�� tapahtumamuokkaimella, joka sijaitsee \textit{Tapahtuman sis�lt�} -v�lilehdess�. Tutkija voi tallentaa tapahtuman j�rjestelm�n tietokantaan \textit{Tallenna tapahtuma} -painikkeella. Tutkija voi tallentamisen j�lkeen jatkaa juuri tallennetun tapahtuman muokkausta tai valita toisen tapahtuman muokattavaksi.

\textbf{Tapahtuman tietoja muokattaessa} tutkija voi muokata tapahtuman perustietoja \textit{Tapahtuman tiedot} -v�lilehdell�. Muokattaviin tapahtuman perustietoihin kuuluvat otsikko, kuvaus ja tyyppi. V�lilehdell� voidaan my�s tallentaa tai poistaa kyseinen muokattavaksi valittu tapahtuma \textit{Poista tapahtuma} -painikkeella. \textit{Tapahtuman sis�lt�} -v�lilehdell� tutkija voi muokata tapahtuman rakennetta ja sis�lt�� tapahtumamuokkaimella.

Tapahtumamuokkaimen vasemmalla puolella olevassa \textbf{piirtoalueessa} n�ytet��n tapahtuman rakenne. Uusia teht�v�komponentteja lis�t��n piirtoalustaan painalla hiiren oikeaa painiketta piirtoalustan tyhj�ss� tilassa. T�m�n j�lkeen tutkija valitsee hiirivalikosta lis�tt�v�ksi halutun teht�v�komponenttityypin. Kun tutkija painaa hiiren oikeaa painiketta teht�v�komponentin sis�ll�, voi tutkija siirt�� tai poistaa valitun teht�v�komponentin tai luoda etenemistien kahden komponentin v�lille. Etenemistie kertoo seuraavan teht�v�n osoitteen, kun halutaan siirty� tapahtumaa suoritettaessa teht�v�st� toiseen. Teht�v�nkomponentin sis�lt�� voidaan muokata tapahtumamuokkaimen oikean puolen tietoalueessa, jossa n�ytet��n piirtoalueesta hiirell� valittuun teht�v�komponenttiin liittyvi� tietoja.

\textbf{Lis�tt�vi� teht�v�komponenttityyppej�} ovat tekstikomponentti, monivalintakomponentti, liukus��dinkomponentti, sensorikomponentti, mediakomponentti sek� h�lytyskomponentti, joista projektissa ehdittiin toteuttaa teksti- ja monivalintakomponentti. Tekstikomponentin muokattaviin ominaisuuksiin kuuluvat otsikko ja tekstisis�lt�, kun monivalintakomponentin muokattaviin ominaisuuksiin kuuluvat otsikko sek� etenemisvaihtoehtojen lis��minen, etenemisvaihtoehdon seuraavan tapahtuman osoitteen valitseminen, etenemisvaihtoehdon arvon valitseminen sek� etenemisvaihtoehdon tekstin lis��minen.

\section{Kuntoutusohjelmien luonti ja muokkaus}

Kuntoutusohjelmien luonti- ja muokkausn�kym�n kuvassa ?.? tutkija voi luoda uusia kuntoutusohjelmia j�rjestelm��n sek� hakea ja muokata olemassa olevia kuntoutusohjelmia. N�kym�n p��toimintakokonaisuudet ovat uuden kuntoutusohjelman luonti sek� haetun kuntoutusohjelman tietojen muokkaaminen. Tietojen muokkaamisen osatoimintakokonaisuudet ovat kuntoutusohjelman perustietojen muokkaaminen sek� kuntoutusohjelmassa olevien tapahtumien tarkasteleminen, lis��minen, poistaminen ja aikatauluttaminen.

\textbf{Luotaessa uutta kuntoutusohjelmaa} tutkija painaa hakukomponentin \textit{Luo uusi} -painiketta, jolloin oikealla oleva aliv�lilehti aktivoituu muokattavaksi. T�m�n j�lkeen tutkija sy�tt�� pakollisiin sy�tekenttiin tarvittavat kuntoutusohjelman perustiedot, jonka j�lkeen h�nen t�ytyy lis�t� tapahtumia kuntoutusohjelmaan \textit{Kuntoutusohjelman muokkaaminen} -v�lilehdell�. Siin� tutkija voi lis�t� j�rjestelm�ss� olevia tapahtumia kuntoutusohjelmaan, poistaa kuntoutusohjelmasta tapahtumia sek� aikatauluttaa kuntoutusohjelmaan lis��mi��n tapahtumia. Tutkija voi tallentamisen j�lkeen jatkaa juuri tallennetun kuntoutusohjelman muokkausta tai valita toisen kuntoutusohjelman muokattavaksi.

\textbf{Kuntoutusohjelman tietoja muokattaessa} tutkija voi muokata valitun kuntoutusohjelman perustietoja \textit{Aikataulun tiedot} -v�lilehdell�. Muokattaviin kuntoutusohjelman perustietoihin kuuluu kuntoutusohjelman kuvaus. V�lilehdell� voidaan my�s tallentaa tai poistaa kyseinen muokattavaksi valittu kuntoutusohjelma. \textit{Aikataulun muokkaus} -v�lilehdell� tutkija voi tarkastella kuntoutusohjelman sis�lt�mi� tapahtumia ja niiden ajoitusta, lis�t� uusia tapahtumia kuntoutusohjelmaan ja aikatauluttaa ne sek� poistaa tapahtumia kuntoutusohjelmasta.

Tutkija voi my�s \textbf{luoda vapaaehtoisia kuntoutusohjelmia} \textit{Aikataulun muokkaus} -v�lilehdell�. T�ll�in kuntoutusohjelmassa oleva tapahtuma asetetaan vapaaehtoiseksi \textit{Merkitse tapahtuma vapaaehtoiseksi harjoitteeksi} -asetusnapilla.

\section{Jatkokehitykseen sovitut n�kym�t}

Tilaajan kanssa jatkokehitykseen sovitut n�kym�t ovat mediatiedostojen lataamis- ja tarkastelun�kym�, raporttin�kym� sek� ohjen�kym�. \textbf{Mediatiedostojen lataamis- ja tarkastelun�kym�ss�} tutkija voi lis�t� mediatiedostoja j�rjestelm��n ja esikatsella j�rjestelm�ss� olevia mediatiedostoja. Mediatiedostoilla tarkoitetaan kuva-, ��ni- tai videotiedostoja. Mediatiedostoja voi j�rjestelm��n lis��misen j�lkeen k�ytt�� mediakomponentin (katso luku 3.7) n�ytett�v�n� sis�lt�n�. \textbf{Raporttin�kym�ss�} tutkija voi tarkastella j�rjestelm��n tallentunutta suoritedataa graafisessa muodossa sek� luoda erilaisia raportteja eri tiedostoformaatteihin, esimerkiksi pdf-muotoon. \textbf{Ohjen�kym�ss�} tutkija voi lukea sovelluksen k�ytt�ohjeita. Mahdollisesti kyseinen ohjen�kym� saattaa olla j�rkev� avautua omaan selainikkunaan, eik� t�ten v�ltt�m�tt� tarvitsisi sijaita v�lilehten�.


% --- chapter 4 ---

\chapter{Kuntoutettavan k�ytt�liittym�}

Luvussa esitell��n p��osin kuntoutettavan k�ytett�v�ksi toteutetun sovelluksen k�ytt�liittym�n eri n�kym�t sek� niihin liittyv�t toiminnot ja niiden v�liset suhteet.

Toteutettu kuntoutettavan k�ytt�liittym� ei sis�ll� kaikkia tarvittavia toiminnallisuuksia. Toteutettuihin toiminnallisuuksiin kuuluu sovelluksen sis��nkirjautuminen \textit{Sis��nkirjautuminen}-n�kym�ss�, edistymisen seuraaminen \textit{Edistyminen}-n�kym�s-s�, tapahtumien suorittaminen \textit{Tapahtumat}-n�kym�n kautta sek� vapaaehtoisten tapahtumien suorittaminen \textit{Tutkimukset}-n�kym�ss�. Jatkokehityksess� toteutetaan p�iv�kirjaviestien luonti ja lukeminen \textit{P�iv�kirja}-n�kym�ss� sek� ryhm�kohtaisten viestien lukeminen \textit{Viestit}-n�kym�ss�. 

\section{Sovelluksen n�kym�kartta}

Kuvassa \ref{sov_kuntoutettava_kartta} havainnollistetaan kuntoutettavan k�ytt�liittym�n n�kymien v�liset suhteet n�kym�karttana. Luvuissa 4.3 - 4.8 kuvataan kunkin n�kym�n toiminnallisuus ja yhteydet muihin n�kymiin.

\begin{figure}[htp]
\centering
\scalebox{0.9}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{sov_kuntoutettava_kartta.eps} }
\caption{Kuntoutettavan k�ytt�liittym�n n�kym�kartta.} \label{sov_kuntoutettava_kartta}
\end{figure}

\section{Sovelluksen n�kymien rakenne}

Kuntoutettavan k�ytt�liittym�n n�kymien rakenne ja ulkoasu noudattaa samaa tyyli� koko sovelluksessa. Jokainen n�kym� on jaettu kolmeen osaan. Ylimp�n� on kaistale otsikkotiedolle (kuva 4.2), jossa n�ytet��n esimerkiksi valikoissa valikon nimi sek� tapahtumaa suoritettaessa tapahtuman nimi. N�kym�mallin keskell� olevassa sis�lt�alueessa (kuva 4.3) n�ytet��n valikoissa navigointipainikkeet, alavalikoissa valikon sis�lt� ja tapahtumaa suoritettaessa tapahtuman teht�v�n sis�lt�. 

N�kym�mallssa alimpana on varattu alue toimintopainikkeille (kuva 4.4). Vasen toimintopainike toimii aina takaisin-, peruutus- tai kieltopainikkeena, kun keskimm�inen ja oikea painike toimivat eri tavalla eri n�kymiss�. Esimerkiksi tapahtumaa suoritettaessa keskimm�inen ja oikea painike toimivat tapahtuman teht�vien etenemis- ja paluupainikkeina. Oikeaa painiketta k�ytet��n my�s hyv�ksymispainikkeena tietyiss� tilanteissa, kuten esimerkiksi tapahtuman keskeytt�misess�.

\begin{figure}[htp]
\centering
\scalebox{0.3}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{kuntoutettava_header.eps} }
\caption{K�ytt�liittym�n otsikkoalue.} \label{kuntoutettava_header}
\end{figure}

\begin{figure}[htp]
\centering
\scalebox{0.3}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{kuntoutettava_content.eps} }
\caption{K�ytt�liittym�n sis�lt�alue.} \label{kuntoutettava_content}
\end{figure}

\begin{figure}[htp]
\centering
\scalebox{0.3}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{kuntoutettava_footer.eps} }
\caption{K�ytt�liittym�n navigointipainikealue.} \label{kuntoutettava_footer}
\end{figure}

\section{Sovelluksen p��n�kym�}

Sovelluksen p��n�kym�st� (katso kuva 4.2) p��see \textit{Oma profiili}, \textit{Tapahtumat} ja \textit{Harjoitteet}-n�kymiin vastaavilla painikkeilla. P��valikon vasemmalla painikkeella kuntoutettava voi kirjautua ulos sovelluksesta ja keskipainikkeella kuntoutettavalle avautuu n�kym�, jossa n�ytet��n sovellukseen liittyvi� tietoja.

\begin{figure}[htp]
\centering
\scalebox{0.65}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{sov_kuntoutettava_kl_paavalikko.eps} }
\caption{Sovelluksen p��valikko.} \label{sov_kuntoutettava_kl_paavalikko}
\end{figure}

\section{Oma profiili -n�kym�}

\textit{Oma profiili} -n�kym�n kautta p��see \textit{Edistyminen}, \textit{P�iv�kirja} sek� \textit{Viestit}-n�kymiin vastaavilla painikkeilla. P��valikon vasemmalla painikkeella kuntoutettava voi palata takaisin luvun 4.3 p��n�kym��n. Muilla alareunan painikkeilla ei ole toiminnallisuutta.

\begin{figure}[htp]
\centering
\scalebox{0.65}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{sov_kuntoutettava_kl_omaprofiili.eps} }
\caption{Oma profiili -alavalikko.} \label{sov_kuntoutettava_kl_omaprofiili}
\end{figure}

\section{Edistyminen-n�kym�}

Kuntoutettava p��see \textit{Edistyminen}-n�kym��n luvun 4.4 n�kym�n kautta. N�kym�ss� kuntoutettava voi tarkastella suorittamiaan tapahtumia. P��valikon vasemmalla painikkeella kuntoutettava voi palata takaisin luvun 4.4 n�kym��n. Muilla alareunan painikkeilla ei ole toiminnallisuutta.

\section{Tapahtumat-n�kym�}

Kuntoutettava p��see \textit{Tapahtumat}-n�kym��n luvussa 4.3 esitetyn p��n�kym�n kautta. N�kym�ss� n�ytet��n kuntoutettavalle h�nen suorittamattomien tapahtumien lista. Kuntoutettava voi valita tapahtumalistasta suoritettavaksi haluamansa tapahtuman, jos se on ajoituksen osalta suoritettavissa sill� hetkell�. Tapahtuman suorittamiseen siirryt��n painamalla lista-alkion oikealla puolella olevaa \textit{Aloita}-painiketta. 

Kuntoutettava voi alareunan vasemmalla painikkeella palata takaisin p��valikkoon sek� muilla alareunan painikkeilla voidaan valita n�kym��n n�ytett�v�ksi joko tulevia tai r�stiin j��neit� tapahtumia, jolloin painettu painike painautuu pohjaan. Painamalla painettua nappia toisen kerran n�kym� n�ytt�� listan kaikista suorittamattomista tapahtumista. 

\section{Tapahtumien suorittaminen}

Tapahtuman suorittaminen aloitetaan \textit{Tapahtumat}- tai \textit{Harjoitteet}-n�kym�n kautta. Tapahtuma sis�lt�� yhden tai useamman teht�v�n, jonka kuntoutettavan toivotaan suorittavan. Jotkin teht�v�tyyppien n�ytett�vist� sis�ll�ist� kaipaavat kuntoutettavan kosketussy�tett�. Esimerkiksi monivalintateht�v�ss� kuntoutettavan on valittava vaihtoehdoista sopivin, ennen kuin h�n voi edet� tapahtumassa eteenp�in.

Tapahtuman teht�vi� p��see eteen- ja taaksep�in alareunan keski- ja oikealla painikkeella. Alareunan vasemmalla painikkeella kuntoutettava voi peruuttaa tapahtuman suorittamisen. T�ll�in kuntoutettavalta varmistetaan viel�, ett� h�n haluaa varmasti poistua tapahtumasta. 

\section{Harjoitteet-n�kym�}

Kuntoutettava p��see \textit{Harjoitteet}-n�kym��n luvussa 4.3 esitetyn p��n�kym�n kautta. \textit{Harjoitteet}- ja \textit{Tapahtumat}-n�kym�t ovat ulkoasultaan ja toiminnallisuuksiltaan l�hes samanlaisia. \textit{Harjoitteet}-n�kym�ss� n�kyy kuntoutettavalle suunnattuja vapaaehtoisia tapahtumia, joita h�n voi suorittaa useamman kerran tai niit� ei ole v�ltt�m�t�nt� suorittaa ollenkaan. 

\textit{Harjoitteet}-n�kym�n vasemman alareunan painikkeella kuntoutettava voi palata takaisin luvun 4.3 n�kym��n. Tapahtuman suorittamiseen siirryt��n samalla tavalla kuin \textit{Tapahtumat}-n�kym�ss�.

\section{Jatkokehitykseen sovitut n�kym�t}

Tilaajan kanssa jatkokehitykseen sovitut n�kym�t ovat \textit{P�iv�kirja} sek� \textit{Viestit}-n�kym�. \textit{P�iv�kirja}-n�kym�ss� kuntoutettava voi tallentaa p�iv�kirjamerkint�j� joko kuva-, ��ni- tai tekstimuodossa. Kukin p�iv�kirjan merkint� tallentuu j�rjestelm�n tietokantaan. \textit{Viestit}-n�kym�ss� kuntoutettava voi tarkastella h�nelle tulleita ryhm�kohtaisia viestej�, joita tutkija on l�hett�nyt oman k�ytt�liittym�ns� kautta. \textit{Viestit}-n�kym�n olennaisin merkitys on toimia palautekanavana tutkijan ja kuntoutettavan v�lill�.


% --- chapter 5 ---

\chapter{Tietoj�rjestelm�n rakenne}

Luvussa kuvataan sovelluksen rakenne ja sen toteutusratkaisut yleisell� tasolla. Sovellus koostuu kahdesta WWW-selainsovelluksesta, jotka ovat yhteydess� palvelimella olevaan projektissa suunniteltuun tietokantaan. Sovellus k�ytt�� Vaadin-sovelluskehitysymp�rist�n k�ytt�liittym�kirjastoja ja komponentteja. Prototyypin k�ytt�liittymist� kuntoutettavan mobiilisovellus noudattaa enemm�n MVC-mallia, kun taas tutkijapuolen sovellus hy�dynt�� sit� vain osittain.

\section{Tietoj�rjestelm�n asiakas-palvelinarkkitehtuuri}

Kuvassa \ref{sov_arkkitehtuuri} esitet��n tietoj�rjestelm�n yleinen rakenne sek� ulkopuoliset ohjelmistot, joita j�rjestelm� k�ytt��. Palvelimella olevaan MySQL-tietokannanhallintaj�r\-jestelm��n  tallennetaan tietoj�rjestelm�n tiedot. Tomcat-palvelin tarjoaa suoritusalustan tutkijan ja kuntoutettavan k�ytt�liittymille, joita k�ytet��n WWW-selainten kautta mobiililaitteilla ja tietokoneilla.

\begin{figure}[htp]
\centering
\scalebox{0.8}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{sov_arkkitehtuuri.eps} }
\caption{Tietoj�rjestelm�n asiakas-palvelinarkkitehtuuri.} \label{sov_arkkitehtuuri}
\end{figure}

Tietoj�rjestelm�n toteutus aloitettiin maaliskuun alkupuolella kuntoutettavan k�ytt�liittym�st�. Tietokannan suunnittelu ja tutkijan k�ytt�liittym�n toteutus aloitettiin maaliskuun loppupuolella. Virtuaalipalvelimen ryhm� sai k�yttt�ns� huhtikuun alkupuolella testausta varten.

\section{Tietoj�rjestelm�n rakenne ja rajapinnat}

Luvussa kuvataan tietoj�rjestelm��n liittyv�t ulkopuoliset komponentit lyhyesti. Tietoj�rjestelm� hy�dynt�� Vaadin-sovelluskehitysalustaa. Kuvassa 5.? kuvataan projektissa toteutetun tietoj�rjestelm�n arkkitehtuuri.

Tietoj�rjestelm� hy�dynt�� seuraavanlaisia ulkopuolisia komponentteja:

 \begin{compactitem}
  \item \textbf{log4j} on Java-kirjasto lokien kirjoittamiseen,
  \item \textbf{joda-time} on Java-kirjasto, jota k�ytet��n tapahtumien aikojen esitt�misess� ja laskemisessa,
  \item \textbf{SessionGuard} on Vaadinin lis�osa, joka pit�� palvelimen ja sovelluksen yhteyden p��ll�, jotta k�ytt�j�n "istunto" ei vanhene sek�
  \item \textbf{TableExport} on Vaadinin lis�osa, jota k�ytet��n suoritedatan tallentamiseen Excel-taulukkomuodossa.
 \end{compactitem}

\begin{figure}[htp]
\centering
\scalebox{0.85}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{sov_rakenne_ja_rajapinnat.eps} }
\caption{Tietoj�rjestelm�n rakenne.} \label{sov_rakenne_ja_rajapinnat}
\end{figure}

\section{Tietoj�rjestelm�n komponentit}

Luvussa kuvataan tiivistetysti sovelluksessa toteutettujen komponenttien k�ytt�tarkoitusta. Kaikkien projektissa toteutettujen komponenttien tarkempi dokumentaatio l�ytyy projektin luokkadokumentaatiosta [?]. 

\textbf{PaattiLoginUtils}-paketti on kokoelma luokkia, joiden avulla sis��nkirjaudutaan sovelluksiin. Komponentin l�hdekoodi l�ytyy \texttt{PaattiLoginUtils}-kansiosta.

\textbf{PaattiDatabaseUtils}-paketti on kokoelma luokkia, joiden avulla k�ytet��n tietoj�rjestelm�n tietokantaa. Komponentin l�hdekoodi l�ytyy \texttt{PaattiDatabaseUtils}-kansiosta.

\textbf{PaattiApplication} on kuntoutettavan k�ytt�liittym�n ohjelma. Komponentin l�hdekoodi l�ytyy \texttt{Paatti}-kansiosta \texttt{paattiapplication}-paketista.

\textbf{MobileViewHandler}-komponentti on kuntoutettavan k�ytt�liittym�n n�kym�hallitsija, joka hoitaa yhteyden kaikkien n�kymien ja tietokannan v�lill�. Komponentin l�hdekoodi l�ytyy \texttt{Paatti}-kansiosta \texttt{paattiapplication}-paketista.

\textbf{MobileView}-komponentti on k�ytt�liittym�n runko, johon asetetaan n�kym�n logiikka ja sis�lt�. Komponentin l�hdekoodi l�ytyy \texttt{Paatti}-kansiosta \texttt{mobileview}-paketista.

\textbf{MobileViewLogic}-komponentti on luokka, josta on peritty kuntoutettavan k�ytt�liittym�n n�kymien logiikat. Komponentin l�hdekoodi l�ytyy \texttt{Paatti}-kansiosta \texttt{mobileview}-paketista.

\textbf{MenuView}-komponentti on luokka, josta on peritty kuntoutettavan k�ytt�liittym�n sovelluksen valikkon�kym�t. Komponentin l�hdekoodi l�ytyy \texttt{Paatti}-kansiosta \texttt{menuview}-paketista.

\textbf{MobileContentView}-komponentti on luokka, josta on peritty kuntoutettavan k�ytt�liittym�n sovelluksen n�kym�t. Komponentin l�hdekoodi l�ytyy \texttt{Paatti}-kansios\-ta \texttt{mobilecontentview}-paketista.

\textbf{PaattiResearchApplication}-komponentti on tutkijan k�ytt�liittym�n ohjelma. Komponentin l�hdekoodi l�ytyy \texttt{PaattiResearch}-kansiosta \texttt{paattiapplication}-paketista.

\textbf{ApplicationTabSheet}-komponentti sis�lt�� kaikki tutkijan k�ytt�liittym�n sovelluksen n�kymien v�lilehdet. Komponentin l�hdekoodi l�ytyy \texttt{PaattiResearch}-kansiosta \texttt{views}-paketista.

\textbf{ApplicationView}-komponentti on abstraktiluokka, josta on peritty tutkijan k�ytt�liittym�n sovelluksen muut n�kym�t. Komponentin l�hdekoodi l�ytyy \texttt{PaattiRe\-search}-kansiosta \texttt{views}-paketista.

\textbf{ApplicationViewTab}-komponentti on abstraktiluokka, josta on peritty tutkijan k�ytt�liittym�n sovelluksen n�kymiss� olevat v�lilehdet. Komponentin l�hdekoodi l�ytyy \texttt{PaattiResearch}-kansiosta \texttt{views}-paketista.

\textbf{SearchComponent}-komponentti on tutkijan k�ytt�liittym�n n�kymiss� oleva hakukomponentti. Komponentin l�hdekoodi l�ytyy \texttt{PaattiResearch}-kansiosta \texttt{compo\-nents}-paketista.

\section{Toteutusratkaisujen kehittyminen}

Kuntoutettavan k�ytt�liittym�n toteutusratkaisujen suurin muutos tapahtui n�kymien n�ytt�misess�. Kuntoutettavan k�ytt�liittym� latasi sovellusta k�ytett�ess� seuraavan n�kym�n uudelleen aina kun n�kym�st� siirryttiin toiseen. My�hemmin kuntoutettavan k�ytt�liittym�n n�kymien latausta muutettiin niin, ett� kaikki sovelluksen n�kym�t luodaan vain kerran silloin, kun niihin menn��n sovelluksessa ensimm�isen kerran. Sovellus tallettaa luodut n�kym�t ja lataa n�ytett�vi� n�kymi� uudelleen sis�isest� tietorakenteesta.

Tutkijan k�ytt�liittym�n toteutusratkaisujen suurin muutos tapahtui projektin viimeistelyvaiheessa toukokuun alkupuolella. Sovelluksen rakennetta muutettiin enemm�n noudattamaan MVC-arkkitehtuuria. Sovellusta my�s refaktoroitiin hy�dynt�m��n enemm�n perint�� ja rajapintoja koodin siistimisen ja sovelluksen suorituskyvyn parantamisen vuoksi.


% --- chapter 6 ---

\chapter{Tietoj�rjestelm�n tietokanta}

Projektryhm� suunnitteli tietokannan j�rjestelm�lle. Tietokantaan tallennetaan tutkijan luomia k�ytt�ji�, ryhmi�, tutkimuksia, kuntoutusohjelmia, tapahtumia ja kuntoutettavan tapahtumien suorittamisesta tulevaa suoritedataa. 

\section{Tietokannan ER-kaavio}

Kuvan 6.1 ER-kaaviossa on esitetty tietokannan taulut ja niiden kent�t sek� suhteet toisiin tietokannan tauluihin. Luvuissa 6.2 - 6.15 kuvataan tietokannan taulujen ja kenttien merkitys tarkemmin sek� kuvataan esimerkkitilanteita taulujen k�ytt��n liittyen.

Kuvan 6.1 tauluihin ei ole piirretty \texttt{rowStatus}-kentt��, sill� se on jokaisella taululla kentt�n�. \texttt{RowStatus}-kentt��n tallennetaan taulukossa olevan sarakkeen tila (kuten \texttt{ACTIVE} tai \texttt{DELETED}).

\begin{figure}[htp]
\centering
\scalebox{0.42}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=-270]{sov_tietokanta.eps} }
\caption{J�rjestelm�n tietokanta ER-kaaviona.} \label{sov_tietokanta}
\end{figure}

\newpage

\section{USER-taulu}

\texttt{USER}-tauluun tallennetaan j�rjestelm�n k�ytt�j�t. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{userID} on k�ytt�j�n tietokannan id-numero,
  \item \texttt{firstName} on k�ytt�j�n etunimi,
  \item \texttt{lastName} on k�ytt�j�n sukunimi,
  \item \texttt{name} on k�ytt�j�n k�ytt�j�tunnus,
  \item \texttt{password} on k�ytt�j�n salasana sek�
  \item \texttt{description} on lyhyt kuvaus k�ytt�j�st�.
 \end{compactitem}

\texttt{USER}-taulu on kytk�ksiss� \texttt{TASKDATA}, \texttt{EVENT} ja \texttt{USERGROUP}-tauluihin.
 
\section{USERGROUP-taulu}

\texttt{USERGROUP}-tauluun tallennetaan j�rjestelm�n ryhm�t. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{groupID} on k�ytt�j�n tietokannan tunnistenumero,
  \item \texttt{name} on ryhm�n nimi sek�
  \item \texttt{description} on lyhyt kuvaus ryhm�st�.
 \end{compactitem}
 
\section{ROLE-taulu}

\texttt{ROLE}-tauluun tallennetaan j�rjestelm�n ryhmien roolityypit. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{roleID} on roolin tietokannan tunnistenumero sek�
  \item \texttt{name} on roolin nimi.
  \item \texttt{description} on lyhyt kuvaus roolista.
 \end{compactitem}

\section{RESEARCH-taulu}

\texttt{RESEARCH}-tauluun tallennetaan j�rjestelm�n tutkimukset. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{researchID} on tutkimuksen tietokannan tunnistenumero,
  \item \texttt{name} on tutkimuksen nimi sek�
  \item \texttt{description} on lyhyt kuvaus tutkimuksesta.
 \end{compactitem}

\section{SCHEDULE-taulu}

\texttt{SCHEDULE}-tauluun tallennetaan j�rjestelm�n kuntoutusohjelmat. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{scheduleID} on kuntoutusohjelman tietokannan tunnistenumero,
  \item \texttt{zeroTime} on kuntoutusohjelman tallennusajankohta sek�
  \item \texttt{description} on lyhyt kuvaus kuntoutusohjelmasta.
 \end{compactitem}

\section{EVENT-taulu}

\texttt{EVENT}-tauluun tallennetaan j�rjestelm�n tapahtumat. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{eventID} on tapahtuman tietokannan tunnistenumero,
  \item \texttt{title} on tapahtuman otsikko,
  \item \texttt{status} on tapahtuman tila,
  \item \texttt{origEventID} on tapahtuman alkuper�isyyden ilmaisemiseen k�ytett�v� tunnistenumero,
  \item \texttt{estimatedTime} on tapahtuman arvioitu kesto sek�
  \item \texttt{description} on lyhyt kuvaus tapahtumasta.
 \end{compactitem}

\section{EVENTTIME-taulu}

\texttt{EVENTTIME}-tauluun tallennetaan aikataulutettujen tapahtumien ajoitus kuntoutusohjelmassa. Taulu sis�lt�� seuraavanlaiset kent�t:

\begin{compactitem}
  \item \texttt{eventTimeID} on ajan tietokannan tunnistenumero,
  \item \texttt{absolute} ilmaisee ajan absoluuttisuuden,
  \item \texttt{year} ilmaisee ajan vuotta,
  \item \texttt{month} ilmaisee ajan kuukautta,
  \item \texttt{day} ilmaisee ajan p�iv��,
  \item \texttt{weekday} on ajan viikonp�iv�,
  \item \texttt{week} ilmaisee ajan viikkoa,
  \item \texttt{fromHour} on ajan aloituskohta,
  \item \texttt{toHour} on ajan lopetuskohta sek�
  \item \texttt{minute} ilmaisee ajan minuuttia.
 \end{compactitem}
 
Kent�t \texttt{fromHour} ja \texttt{toHour} ilmaisevat ajanjaksoa, jolloin tapahtuma on teht�viss�. Jos kuntoutettava ei suorita tapahtumaa asetetulla ajankohdalla, tapahtuma siirtyy r�stitapahtumaksi.

\section{EVENTTYPE-taulu}

\texttt{EVENTTYPE}-tauluun tallennetaan tapahtumatyypit (kuten kysely ja liikunta). Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{eventTypeID} on tapahtumatyypin tietokannan tunnistenumero sek�
  \item \texttt{description} on tapahtumatyypin kuvaus.
 \end{compactitem}

\section{TASK-taulu}

\texttt{TASK}-tauluun tallennetaan tapahtumiin liittyv�t teht�v�t. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{taskID} on teht�v�n tietokannan tunnistenumero,
  \item \texttt{content} on teht�v�n otsikko,
  \item \texttt{url} on teht�v�n tila,
  \item \texttt{sequence} on teht�v�n j�rjestys tapahtumassa,
  \item \texttt{description} on lyhyt kuvaus teht�v�st�,
  \item \texttt{posX} on tapahtuman x-koordinaatti piirtoalueella sek�
  \item \texttt{posY} on tapahtuman y-koordinaatti piirtoalueella.
 \end{compactitem}

\section{TASKTYPE-taulu}

\texttt{TASKTYPE}-tauluun tallennetaan teht�v�tyypit (kuten teksti ja monivalinta). Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{taskTypeID} on teht�v�tyypin tietokannan tunnistenumero,
  \item \texttt{textMin} on teht�v�tyypin tekstimuotoisen datan minimi,
  \item \texttt{textMax} on teht�v�tyypin tekstimuotoisen datan maksimi,
  \item \texttt{binaryMin} on teht�v�tyypin bin��rimuotoisen datan minimi,
  \item \texttt{binaryMax} on teht�v�tyypin bin��rimuotoisen datan maksimi sek�
  \item \texttt{description} on lyhyt kuvaus teht�v�tyypist�.
 \end{compactitem}

\section{CHOICE-taulu}

\texttt{CHOICE}-tauluun tallennetaan teht�vien sis�ll� olevat valinnat. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{choiceID} on valinnan tietokannan tunnistenumero,
  \item \texttt{value} on valinnan arvo,
  \item \texttt{sequence} on valinnan j�rjestys teht�v�ss� sek�
  \item \texttt{description} on lyhyt kuvaus valinnasta.
 \end{compactitem}

\section{TASKDATA-taulu}

\texttt{TASKDATA}-tauluun tallennetaan tapahtumien suoritedataan liittyv�t tiedot. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{taskdataID} on suoritedatan tunnistenumero,
  \item \texttt{executionTime} on suoritedatan suoritusajankohta sek�
  \item \texttt{sequence} on suoritedatan j�rjestys teht�v�ss�.
 \end{compactitem}

\section{BINARYDATA-taulu}

\texttt{BINARYDATA}-tauluun tallennetaan bin��rimuotoinen suoritedata (kuten kuva ja ��ni). Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{binarydataID} on bin��rimuotoista dataa sis�lt�v�n suoritedatan tunnistenumero sek�
  \item \texttt{sequence} on datan j�rjestys suoritedatassa.
 \end{compactitem}

\section{TEXTDATA-taulu}

\texttt{TEXTDATA}-tauluun tallennetaan tekstimuotoinen suoritedata. Taulu sis�lt�� seuraavanlaiset kent�t:

 \begin{compactitem}
  \item \texttt{textID} on tekstimuotoista dataa sis�lt�v�n suoritedatan tunnistenumero sek�
  \item \texttt{sequence} on datan j�rjestys suoritedatassa.
 \end{compactitem}
 

% --- chapter 7 ---

\chapter{Ohjelmointik�yt�nteet}

Luvussa kuvataan projektin ohjelmointik�yt�nteet. Projektissa noudatettiin suunnitteluvaiheessa m��riteltyj� ohjelmointik�yt�nteit�.

\section{L�hdekoodin muotoilu ja tiedostojen nime�minen}

L�hdekoodi ohjelmoitiin projektisuunnitelmassa \cite{projektisuunnitelma} sovittujen k�yt�nteiden mukaisesti k�ytt�en mallina Javan yleisi� k�yt�nteit� \cite{javakaytanteet}. Luokkien nimiss� ensimm�inen kirjain kirjoitettiin pienell� ja sanat kirjoitettiin yhteen isoin alkukirjaimin. Funktioiden ja muuttujien nimiss� ensimm�inen kirjain kirjoitettiin pienell� ja sanat kirjoitettiin yhteen isoin alkukirjaimin. L�hdekooditiedostojen hakemistorakenne oli valmiiksi m��ritelty Vaadin-sovelluskehitysymp�rist�ss�, eik� rakennetta muutettu. Muiden tiedostojen ja hakemistojen nimet kirjoitettiin pienill� kirjaimilla ja englanniksi.

Tiedostojen ja l�hdekoodin nime�minen toteutui suunnitelman mukaisesti ja verkkosivulle ja CD:lle sijoitetut dokumentit vastasivat edell�mainittuja k�yt�nteit�.

\section{L�hdekoodin kommentointi}

L�hdekoodit kommentointiin englanniksi. Kommentit aloitettiin yksitt�isten rivien tai rivin loppujen tapauksissa merkill� \texttt{//}. Useamman rivin tapauksessa kommentti aloitettiin merkill� \texttt{/*} ja p��tettiin merkill� \texttt{*/}. Luokkien ja funktioiden kommentit aloitettiin \texttt{/**} ja p��tettiin \texttt{*/}. Luokkadokumentointi muodostettiin JavaDocin avulla, jonka kommentointiohjeita noudatettiin l�hdekoodissa.

\section{L�hdekoodiesimerkki}

Sovelluksessa toteutettua l�hdekoodin sisennyst� ja kommentointia havainnollistaa seuraava esimerkki:
\begin{verbatim}
/**                                                                                                                                                                                 
* Layout for all the mobile views has slots for header,                                                                                                            
* footer and the content.                                                                                                                                                                         
*                                                                                                                                                                                  
* @author Lauri Satokangas, lauri.n.satokangas@student.jyu.fi 
* @date 13.5.2012                                                                                                       
*/                                                                                                                                                                                                                                          
public abstract class MobileView extends VerticalLayout {                                                                                                                                                                                    
                                                                                                                                                                                                                                             
    private Panel pageContent;
    private final HashMap<Object, Component> footerComponents;                                                                                                                                                                                                         
    
    // This is the left button in the footer layout.
    public Object FOOTER_BUTTON_LEFT = "leftfooterbutton";

    /**
     * Get the component in the footer.
     * @return footerComponent
     */
    public HashMap<Object, Component> getFooterComponents() {
        return footerComponents;
    }

...
\end{verbatim} 

\section{Kehitysymp�rist�}

Sovelluksen kehitysty�kaluna k�ytettiin NetBeans IDE:n versiota 7.1. Lis�osina k�ytettiin Maven-automatisointity�kalua l�hdekoodin k��nt�miseen ja Vaadin-sovellus\-kehitysalustan k�ytt�liittym�kirjastoja ja komponentteja sovelluksen toteutukseen.

\section{Testauksen k�yt�nteet}

Sovellusten toteutusvaiheessa jokainen ryhm�n j�sen toteutti k�yt�nn�n yksikk�testausta heti koodiin tekemiens� muutoksen j�lkeen omatoimisesti. Ajan puutteen vuoksi tietoj�rjestelm�lle ei laadittu j�rjestelm�testaussuunnitelmaa eik� ryhm� my�sk��n ehtinyt luoda yksikk�testej� sovelluksille. Muutama testitiedosto luotiin tietokantaa k�sitteleville tiedostoille. Integraatiotestausta ryhm� suoritti projektin viimeistelyvaiheessa jonkin verran.

Ryhm�lle jaettiin ajoissa ennen toteutuksen alussa erilaisia mobiililaitteita ja sormitietokoneita. Niiden avulla ryhm� testasi kuntoutettavan sovellusta tietyn v�liajoin ja sai n�in arvokasta tietoa liittyen sovelluksen toimivuuteen eri mobiililaitteissa.

Ryhm�lle j�rjestettiin maaliskuun puolessav�liss� k�ytettv�yysp�iv� Meeri M�ntyl�n toimesta. K�ytett�vyysp�iv�n aikana ryhm� sai k�ytt�liittymien k�ytett�vyyteen liittyv�� tietoa ja palautetta projektissa toteutettavista k�ytt�liittymist� [k�ytett�vyysp�iv�muistio l�hteeksi].

Sovelluksella oli vain muutama ulkopuolinen testaaja projektin aikana. Laajimman palautteen sovellusten toimivuudesta projektiryhm� sai vastaavalta ohjaajalta Jukka-Pekka Santaselta [useita s�hk�posteja]. Sovelluksen testaukseen osallistui my�s projektin jatkokehityksest� kiinnostunut Tero Kallioinen [pari s�hk�postia]. Projektin tilaajien kiireellisen aikataulun vuoksi tilaajilta saatiin vain v�h�n palautetta liittyen sovellusten k�ytt�liittymien toimivuuteen. Tilaajien ainoat k�ytt�testaukset tapahtuivat projektin kahdessa viimeisess� kokouksessa. Projektin tilaajilta saatiin kuitenkin testidataa testiaineiston luomiselle ja sit� hy�dynnettiin projektissa jonkin verran.

Ryhm�n j�senet harjoittivat my�s omatoimista k�ytt�j�testausta havaitakseen sovellusten toiminnallisuuksiin liittyvi� puutteita ja bugeja. Ryhm� testasi sovellusten toiminnallisuuksien toimivuutta tasaisin v�liajoin, varsinkin ennen projektin loppuesityst�. 

Projektiryhm� ei ajan puutteen vuoksi ehtinyt testaamaan sovelluksia niiden loppuk�ytt�jill�. T�m� asia on otettava huomioon jatkokehityksess� sek� j�rjestett�v� kuntoon mahdollisesti jatkokehityksen alkuvaiheessa.

\section{Testauksen tulokset}

Ryhm� sovellusten testausten tulokset osoittivat, ett� toteutetut sovellukset toimivat asetettujen pakollisten ja t�rkeiden toiminnallisten vaatimusten mukaisesti. Usein toistuvia virheit� ei l�ydetty testausten aikana. Muita sovellusten tunnettuja puutteita ja virheit� kuvataan tarkemmin luvussa 8.2.


% --- chapter 8 ---

\chapter{Tavoitteiden toteutuminen}

Luvussa kuvataan projektin vaatimusten toteutuminen, tunnetut virheet ja puutteelliset toteutusratkaisut sek� jatkokehitysideat. Projektissa saatiin toteutettua 42 42:sta pakollisesta tai t�rke�st� ja 24 88:sta mahdollisesta tai jatkokehitykseen asetetusta toiminnallisesta vaatimuksesta. Tilaajan kanssa sovittiin osia toteutuksesta jo aikaisessa vaiheessa jatkokehitykseen rajallisen ajan vuoksi. Jatkokehitykseen sovittiin tutkijan k�ytt�liittym�ss� mediatiedostojen hallintan�kym�, suoritedatan raporttin�kym�, viesten l�hetys- ja lukun�kym� sek� ohjen�kym�. Kuntoutettavan k�ytt�liittym�st� jatkokehitykseen sovittiin kiihtyvyysanturidatan lukeminen, p�iv�kirjamerkint�jen luku- ja talletusn�kym� ja viestien l�hetys- ja lukun�kym�.

\section{Vaatimusten toteutuminen}

Luvussa kuvataan p��piirteitt�in sovellukselle asetettujen vaatimusten toteutuminen. Vaatimusm��rittely \cite{vaatimusmaarittely} k�sittelee tarkemmin vaatimuksia ja niiden toteutumista.

\textbf{Tutkijan k�ytt�liittym�n 63:sta vaatimuksesta} toteutettiin kaikki 24 pakollisiksi tai t�rkeiksi asetettua vaatimusta. \textit{Oma sivu}, \textit{Media}, \textit{Raportti} ja \textit{Ohje}-n�kymi� ei toteutettu projektissa ja ne siirrettiin jatkokehitykseen.

\textbf{Kuntoutettavan k�ytt�liittym�n 48:sta vaatimuksesta} toteutettiin kaikki 11 pakollisiksi tai t�rkeiksi asetettua vaatimusta. Vaatimus yksinkertaisten kuvakkeiden lis��misest� n�kymiin vieviin painikkeisiin ja tapahtuman tyyppien ilmaisuun sek� \textit{P�iv�kirja}, \textit{Viestit} ja \textit{Ohje}-n�kymiin liittyv�t vaatimukset sovittiin jatkokehitykseen.

\textbf{Tapahtuman suorittamisen 8:sta vaatimuksesta} toteutettiin kaikki 3 pakollisiksi tai t�rkeiksi asetettua vaatimusta. Kuntoutettava voi suorittaa tapahtumia ja keskeytt�� suoritettavan tapahtuman.

\textbf{Sis��nkirjautumiseen liittyvist� 3:sta mahdollisesta vaatimuksesta} toteutettiin 2 projektissa. Sis��nkirjautuminen tallentaa kirjautumistiedot keksiin, jolloin esimerkiksi kuntoutettavan tarvitsee kirjautua sovellukseen vain yhden kerran, ellei h�n poista keksitietoja oman mobiililaitteen selaimesta. Kirjautumistietojen salaamiseen liittyv� vaatimus sovittiin jatkokehitykseen.

\textbf{Tapahtumien teht�v�komponentteihin liittyvist� 19:sta vaatimuksesta} toteutettiin kaikki 7 pakollisiksi tai t�rkeiksi asetettua vaatimusta. Media-, sensori-, sy�te-, liukus��din- ja h�lytysteht�v�komponentteja ei toteutettu projektissa, ja ne sovittiin jatkokehitykseen.

\textbf{Suoritedatan tallentamiseen eri tiedostomuodoissa} projektiryhm� toteutti vain xls-muotoiseen dataan liittyv�n vaatimuksen. Muissa tiedostomuodoissa viety� dataa ei ehditty projektin aikana edes harkitsemaan.

\textbf{Kiihtyvyysanturidatan ja muiden sensoridatojen ker��miseen asetettuja vaatimuksia} ei ehditty toteuttaa projektin aikana. Kuntoutettavan k�ytt�liittym�� ei asetettu projektissa hy�dynt�m��n PhoneGap-rajapintaa. Kyseiset vaatimukset sovittiin tilaajan kanssa jatkokehitykseen.

\textbf{Viesteihin liittyvi� vaatimuksia} ei ehditty toteuttaa projektissa. Ryhm�kohtaisilla viesteill� tutkija voisi tiedottaa haluamiaan ryhmi� jostain tarpeellisista asioista. Viestien tarkoitus on luoda eri k�ytt�j�kuntien v�lille vuorovaikutus- ja palautekanavia.

Projektissa toteutettuja vaatimuksia ei kirjattu testatuiksi tai hyv�ksytyiksi, koska suunnitelmallista ja hallittua j�rjestelm�testausta ei ehditty suorittaa projektin aikana.

\section{Tunnetut puutteet ja virheet}

Tutkijan sovelluksessa kuntoutusohjelmien aikatauluttamisn�kym�ss� \textbf{tutkijan ei ole mahdollista valita kaikkia tietokannan mahdollistavia ajoitukseen liittyvi� ominaisuuksia}. T�llaisia ovat mm. absoluuttisen ajan asettaminen ja aikav�li, jolloin tapahtuman voi suorittaa.

Tutkijan sovelluksessa kuntoutusohjelmien \textbf{aikatauluttamisessa k�ytett�v��n ajanasetuskomponenttiin ei ole ohjelmoitu tarkistinta}, jos tutkija sy�tt�� sy�teriville virheellisen aikatiedon. Ongelmaa ei tule, jos tutkija asettaa ajan vieress� olevan painikkeen painalluksen kautta avautuvasta p�iv�m��r�n ja ajan asetusikkunasta.

\textbf{Uuden kuntoutusohjelman tallentaminen luo tapahtumista uudet kopiot tietokantaan} suoritedatan tunnistamista varten. N�in k�y my�s, jos tutkija muokkaa ja tallentaa kussakin v�liss� jo olemassa olevan kuntoutusohjelman. Jos esimerkiksi tutkija luo kymmenen tapahtumaa sis�lt�v�n kuntoutusohjelman, yhdell� tapahtumalla on kymmenen monivalintateht�v�� ja jokaisella niist� on kymmenen valintaa, tulee uuden kuntoutusohjelman tallennuksessa luotua kokonaisuudessaan 1001 uutta taulualkiota tietokantaan. T�st� kopioiminen voi aiheuttaa ongelmia jo pelk�st��n yhden k�ytt�j�n toimesta.

Kuntoutusohjelmaa tallentaessa heitt�� virheen, jos kuntoutusohjelmaan ei ole lis�tty tapahtumia.

\textbf{J�rjestelm�n k�ytt�jien roolit m��r�ytyv�t k�ytt�j�n ryhmien j�senyyksien mukaan}. T�m� tarkoittaa sit�, ett� yksi k�ytt�j� voi olla eri rooleissa eri ryhmiss�. J�rjestelm�n rooleja on ajateltu k�ytett�v�n sovellusten k�ytt�oikeuksien jakamiseen. Esimerkiksi tutkijalla voisi olla t�ydet k�ytt�oikeudet tutkijan sovelluksessa, sek� omaisella tai opiskelijalla voisi olla rajoitetut tutkijan oikeudet sovelluksen k�ytt��n. K�ytt�oikeuksien m��r��misess� voi synty� ongelmia silloin, kun yksi k�ytt�j� on j�senen� useassa ryhm�ss� eri rooleilla. Ongelman voisi ratkaista asettamalla k�ytt�j�roolit \texttt{USER} ja \texttt{USERGROUP}-taulujen v�lisen \texttt{BELONGS}-taulun kautta.

\textbf{Kuntoutettavan sovelluksen tapahtuman suorittamisessa on pieni bugi}. Kun kuntoutettava on monivalintateht�v�ss�, valitsee h�n yhden vaihtoehdon ja menee tapahtumassa eteenp�in. Jos kuntoutettava palaa takaisin edelliseen teht�v��n ja ei valitse vaihtoehtoa ja yritt�� menn� tapahtumassa eteenp�in, niin tapahtuman teko p��ttyy siihen. 

K�ytt�jien salasanoihin liittyy pari puutteellista ratkaisua. \textbf{K�ytt�jien salasanoja ei tallennetta salatussa muodossa tietokantaan} ja tutkijan k�ytt�liittym�ss� \textbf{tutkija n�kee tarkasteltavan k�ytt�j�n salasanan \textit{K�ytt�j�n tiedot} -aliv�lilehdell�}. N�m� asia tulisi ottaa k�sittelyyn projektin jatkokehityksen alkuvaiheessa.

\textbf{Tutkija ei pysty t�ll� hetkell� hakemaan k�ytt�ji� kuin k�ytt�j�n k�ytt�j�tunnuksen mukaan}. Tutkijan olisi tarkoitus halutessaan my�s voitava hakea tietokannasta k�ytt�ji� sek� etunimen tai sukunimen mukaan.

\textbf{N�kymien hakukomponentin \textit{Hae}-painikkeella pystyy my�s valitsemaan valitun kohteen tiedot tarkasteltavaksi \textit{Valitse}-napin tapaan}. Hakukomponentin \textit{Hae}-painikkeella olisi vain tarkoitus hakea hakukentt��n sy�tetyn tekstin perusteella tietoa tietokannasta.

\textbf{Tietokannan \texttt{BELONGS}-taulu k�ytt�� avaimenaan muokkausaikaa koosteavaimen sijaan}. Muokkausaika toimii t�ll� hetkell� vertailukohteena, kun tutkija poistaa ja tai p�ivitt�� tarkasteltavaa kohdetta. Koosteavain koostuisi k�ytt�j�n ja k�ytt�j�n ryhm�n ID-numerosta.

\textbf{Tapahtumamuokkaimen alueen piirto tapahtuu palvelimella ja palvelin l�hett�� aina uudelleenpiirretyn kuvan asiakasp��tteelle}. Tapahtumanmuokkaimen alueen piirron voisi asettaa jatkokehityksess� tapahtumaan asiakasp��ss�, jos se on mahdollista. Ongelmia voi synty� tapahtumamuokkaimen k�ytett�vyyteen silloin, jos tapahtumamuokkainta muutetaan niin, ett� piirtoalueesta l�hetett�vien kuvien koko kasvaa suureksi.

Tutkijan k�ytt�liittym�ss� \textbf{tutkijalta ei kysyt� varmennusta h�nen tallentaessa muutoksia tai poistaessa valittua kohdetta}. T�ll� voisi est�� tahattomat poistot ja muutosten tallennukset. Vaihtoehtoisesti tutkija voisi asetuksistaan ottaa pois p��lt� varmennuksen kysymisen, jos jatkuva varmentaminen haittaa k�ytt�liittym�n k�ytett�vyytt�.

\section{Jatkokehitysideat}

Tutkijan k�ytt�liittym�n yl�reunaan p��v�lilehden yl�puolelle tulisi asettaa kapea alue, jossa n�kyisi sovelluksen nimi ja jossa olisi oikeassa yl�reunassa uloskirjautumispainike. T�ll�in sovelluksesta uloskirjautuminen voisi tapahtua mist� v�lilehden n�kym�st� tahansa.

Tutkijan k�ytt�liittym� kaipaa vihjetekstej� useisiin paikkoihin. Ulkopuolisten k�ytt�testauksen palautteessa ilmeni, ett� tapahtumamuokkaimen k�ytt�misen oppiminen ei v�ltt�m�tt� ole aloittelijalle kaikista helpoin teht�v�.

Kiihtyvyysanturidatan ker��miseen k�ytett�v�lle PhoneGap-rajapinnalle on mahdollisesti tulossa tuki Vaadin-sovelluskehitysalustaan tulevaisuudessa. Jos kyseinen laajennus tulee saataville l�hitulevaisuudessa, niin jatkokehitysryhm�n kannattaa odottaa kyseist� laajennusta ennen kiihtyvyysanturiin liittyvien toiminnallisten vaatimusten toteuttamista.

K�ytt�j�n sy�tt�mi� sy�tteit� sy�tekenttiin ei tarkasteta mill��n lailla. Sy�tteiden tarkistuksella voitaisiin eliminoida \texttt{DROP TABLE *} -tyyppisten sy�tteiden meno tietokantaan.

\textit{Oma sivu} -n�kym� tulisi vaihtaa \textit{Viestit} -n�kym�ksi. Siin� tutkija voisi tarkastella kuntoutettavilta tulleita viestej� ja h�lytyksi� sek� l�hett�� ryhmille ryhm�kohtaisia viestej�. Kyseisen n�kym�n tulisi my�s olla p��n�kym�, kun tutkija kirjautuu sis��n tutkijan k�ytt�liittym��n.

Tietoj�rjestelm�lle voisi asettaa oman testitietokannan tietokannan testaukselle ja testaustiedostoille. N�in tietokantaa voisi testata eri kannalla, kuin mit� tietoj�rjestelm� k�ytt�isi.

Tiedon salauksen tietokantaan tallentaessa voisi asettaa tapahtumaan muillekin kuin salasanoille. T�llaisia kohteita voisi olla k�ytt�jien etunimi, sukunimi ja k�ytt�j�tunnus. T�ll� hetkell� tietokantaan tallentuu vain salaamatonta dataa.

Lokituksen voisi asettaa tapahtumaan sovelluksia k�ytett�ess�. Lokitus helpottaisi j�rjestelm�n virheiden havaitsemista ja kyseiset tiedostot voi helposti arkistoida muualle.

Tapahtuman muokkauksesta syntyv�� muutoshistoriaa tulisi pysty� tarkastelemaan tapahtumaa muokatessa. Muutoshistorian voisi sijoittaa omaan aliv�lilehteen, josta tutkija voisi tarkastella tapahtumaan tehtyj� muutoksia.

V�lilehtien sis�lle sijoitetut \textit{Tallenna} ja \textit{Poista}-painikkeet voisivat sijaita v�lilehtien ulkopuolella alhaalla, jolloin tallentamisen ja poistamisen voisi tehd� riippumatta p��ll� olevasta v�lilehdest�.

Toteutettujen k�ytt�liittymien ulkoasuteemoihin ei ehditty k�ytt�m��n tarpeeksi aikaa projektin aikana. K�ytt�liittymien teema-asetuksia voi muokata CSS-tyylitiedos\-tojen kautta. K�ytt�liittymien graafista linjaa kannattaa kysy� paremmin asiaan perehtyneilt�.

Kaikkien toimintojen j�rjestyst� k�ytt�m��rien ja yleisyyden mukaan ei ehditty projektin aikana k�ytt�m��n tarpeeksi aikaa. Esimerkiksi hakukomponentin toiminnot voisi sijoittaa yleisimm�st� harvemmin k�ytettyihin painikkeisiin ylh��lt� alas.

Tutkijan k�ytt�liittym�ss� tutkijoilla voisi olla tapahtumien n�kemiseen ja muokkaamiseen liittyvi� erityisoikeuksia. Esimerkiksi tapahtuman n�keminen hakulistalla ja muokkaus voisi olla rajattu vain sen luoneelle ja muokanneille sek� tapahtumaan sidotun ryhm�n tutkijoille. Tietokannan taulujen \texttt{rowStatus}-kent�n toimintaa voisi laajentaa kattamaan kyseisen ominaisuuden k�ytt�liittym�ss�.

Tapahtumamuokkaimeen liittyy useita parannusehdotuksia. Yhden teht�v�n siirt�minen piirtoalueella tulisi olla mahdollista raahamalla tapahtumaa hiiren painike pohjassa. Teht�vien etenemissuunnan teht�vien v�lill� tulisi esitt�� joko nuolella tai vastaavalla havainnollistavalla visualisoinnilla. Piirtoalueella n�ytett�v�t teht�v�tyypit tulisi visuaalisesti olla erotettavissa muun kuin v�rin avulla. Tapahtumamuokkaimessa tulisi n�ytt�� tapahtumassa olevat teht�v�t listana k�ytt�j�lle. Tutkijalla tulisi lis�ksi my�s olla mahdollisuus tehd� uusia tapahtumatyyppej� tapahtumille.

Tutkijan tulisi olla mahdollista tehd� jaksottain tapahtuvia kuntoutusohjelmia. T�m� tarkoittaisi sit�, ett� tutkijan olisi mahdollisuus tehd� tapahtumalle aika, joka toistuu tasaisesti tiettyn� aikana. Esimerkiksi tutkija voisi asettaa tapahtuman suoritettavaksi kerran viikossa yhden kuukauden ajan. 


% --- chapter 9 ---

\chapter{K�ytt�ohjeita yll�pit�j�lle}

Luvussa kuvataan lyhyesti, kuinka j�rjestelm�n voi asettaa kuntoon py�rim��n palvelimelle, kuinka tutkijan k�ytt�liittym��n pystyy lis��m��n uuden n�kym�n ja kuinka tapahtumamuokkaimissa k�ytett�vien teht�v�komponenttien lis�ys tapahtuu.

\section{Sovelluksen asennus palvelimelle}

TODO

\section{Tietokokonaisuuden hallintan�kym�n lis��minen}

TODO

\section{Teht�v�komponenttien lis��minen}

TODO


% --- chapter 10 ---

\chapter{Yhteenveto}

Paatti-projekti toteutti Sovellusprojekti-kurssilla kev��ll� 2012 Jyv�skyl�n yliopiston psykologian laitokselle prototyypin tietoj�rjestelm�st�, jolla tuetaan muun muassa i�kk�iden, ty�uupumuksesta k�rsivien ja mielenterveyspotilaiden itsen�ist� el�m�� ja kuntoutumista sek� tuetaan tutkijoiden tekem�� tutkimusta.

Projektissa toteutettiin prototyypit vaadituista kahdesta sovelluksesta, joista toista k�ytet��n kuntoutusohjelmien luomiseen ja niiden aikatauluttamisen ryhmille sek� toista kuntoutusohjelmien seuraamiseen ja tekemiseen. Toteutettu j�rjestelm�kokonaisuus toimii asetettujen p��toiminnallisuuksien mukaisesti ja antaa siten hyv�n pohjan tuotantoversion kehitt�miselle.

Tietoj�rjestelm�ss� tutkija luo tutkimuksiinsa liittyen kuntoutettavista ryhmi�, joille m��ritet��n omat kuntoutusohjelmat. Kuntoutusohjelmat sis�lt�v�t aikataulutettuja tapahtumia, jotka sis�lt�v�t m��ritetyss� j�rjestyksess� suoritettavia teht�vi�. Teht�v�t voivat olla kysymyksen tai ohjeen muodossa ja voivat sis�lt�� teksti� tai monivalinnan. 

Kuntoutettavia voi siirt�� ryhm�st� toiseen edistymisen mukaan tutkijan toimesta. Kuntoutettava voi olla monessa ryhm�ss�, jolloin h�n suorittaa useampaa kuntoutusohjelmaa samanaikaisesti. Tutkija pystyy seuraamaan kuntoutettavan tai ryhm�n edistymist� omasta k�ytt�liittym�st��n. Tietoj�rjestelm�n tietokantaan ker��m�� tietoa saa my�s siirretty� toisiin j�rjestelmiin .xls-tiedostomuodossa.

Kuntoutettava n�kee suoritettavat kuntoutusohjelman tapahtumat mobiililaitteessa olevasta WWW-sovelluksesta. Tapahtumat voivat olla esimerkiksi liikuntaharjoitteita, rentoutusharjoitteita tai l��kkeiden ottamisen muistutuksia.

Projektin rajallinen aikataulu ei mahdollistanut kaikkien tilaajien vaatimusten toteuttamista ja siksi toteutettu j�rjestelm�prototyyppi kaipaa jatkokehityst�. Toteutunut j�rjestelm�prototyyppi vied��n jatkokehitykseen, jossa tehd��n projektin aikana j��neet toiminnallisuudet sek� korjataan sovelluksissa esiintyv�t puutteet ja ongelmat.


%L�HTEET
\begin{thebibliography}{1}
%Katso kirjoitusohjeen luku 2.3 ja 2.4.
\bibitem{vaatimusmaarittely}
  Tapio Ker�nen, Toni Salminen, Jari Salokangas ja Lauri Satokangas,
  ''Paatti-projekti, Vaatimusm��rittely'',
  Jyv�skyl�n yliopisto,
  tietotekniikan laitos,
  2012.

%\bibitem{tabusuunnitelma}
%  Tuomas Kumpulainen, Kari Tuurihalme, Outa Walkama ja Tuomas Virtanen,
%  ''Tabu-projekti, Sovellusraportti'',
%  Jyv�skyl�n yliopisto,
%  tietotekniikan laitos,
%  2009.

\bibitem{javakaytanteet}
  Oracle,
  ''Code Conventions for the Java Programming Language'',
  saatavilla PDF-muodossa <URL: \texttt{http://www.oracle.com/technetwork/java/\\codeconventions-150003.pdf}>,
  viitattu 25.3.2012.

\bibitem{sovellusprojektienohje}
  Jukka-Pekka Santanen,
  ''Tietotekniikan Sovellusprojektien ohje'',
  saatavilla HTML-muodossa <URL: \texttt{http://www.mit.jyu.fi/opetus/\\sovellusprojektit/projohje.html}>,
  Jyv�skyl�n yliopisto,
  tietotekniikan laitos,
  11.9.2006.
  
\bibitem{projektiraportti}
  Tapio Ker�nen, Toni Salminen, Jari Salokangas ja Lauri Satokangas,
  ''Paatti-projekti, Projektiraportti'',
  Jyv�skyl�n yliopisto,
  tietotekniikan laitos,
  2012.

\bibitem{projektisuunnitelma}
  Tapio Ker�nen, Toni Salminen, Jari Salokangas ja Lauri Satokangas,
  ''Paatti-projekti, Projektisuunnitelma'',
  Jyv�skyl�n yliopisto,
  tietotekniikan laitos,
  2012.

\bibitem{learningvaadin}
  Nicolas Frankel,
  ''Learning Vaadin'',
  Packt Publishing,
  2011

\bibitem{bookofvaadin}
 Vaadin Ltd,
 ''Book of Vaadin - 4th Edition'',
 2012

\end{thebibliography}

% Dokumentin  lopetus
\end{document}
