% .tex-tiedosto projektin dokumenttien latomiseksi.
% Kirjoitelmaluokka, tässä käytetään projektien projdoc-luokkaa.
\documentclass[twoside]{projdoc}

\usepackage{paralist}
\usepackage{alltt}
\usepackage{graphicx}
\usepackage{calc}


\newlength{\imgwidth}

\newcommand\scalegraphics[2][]{%
    \settowidth{\imgwidth}{\includegraphics{#2}}%
    \setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#2}%
}

% Projektin nimi
\project{Paatti}

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

% Versionumero: numerointikäytäntö on projektikohtainen
\version{0.3.1}

% Dokumentin nimi
\title{Projektiraportti}

% 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 toteutti 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. Projektiraportissa kuvataan projektin läpivientiä käsitellen tavoitteita, resursseja, käytänteitä, tehtävien työ\-njakoa ja työmääriä, prosessimallia ja aikataulua sekä arvioitujen riskien toteutumista ja hallintaa. Projektiraportti vertaa projektin toteutumaa suunnitelmaan kuvaten eroja sekä niiden syitä ja vaikutuksia.} 

% Tiivistelmä projektista
\projectabstract{Paatti-projekti suunnitteli ja toteutti 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{Aikataulu, kokemuksia, käytänteet, ohjelmistoprojekti, oppiminen, projektiorganisaatio, prosessimalli, raportti, resurssit, riskien hallinta, tavoitteet, tehtävät, tulokset, työnjako, työmäärät.}.

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

% 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 & Dokumentin pohja luotu ja kirjoitus aloitettu projektisuunnitelman pohjalta.  & LS\\
\hline
0.0.2    & 14.5.2012 & Kirjoitettu luvuista 1-5.  & LS\\
\hline
0.0.3    & 14.5.2012 & Kirjoitettu prosessimallista.  & LS\\
\hline
0.1.0    & 15.5.2012 & Toimitettu versio ohjaajan tarkastettavaksi.  & LS\\
\hline
0.1.1    & 19.5.2012 & Korjattu havaittuja virheitä ja puutteita luvuista 1--4.  & LS\\
\hline
0.1.2    & 20.5.2012 & Korjattu havaittuja virheitä ja puutteita luvuista 5--7. Lisätty kaksi kappaletta lukuun 10. & LS\\
\hline
0.2.0    & 21.5.2012 & Toimitettu versio ohjaajan tarkastettavaksi.  & LS\\
\hline
0.2.1    & 21.5.2012 & Muokattu lukua "Organisaatio ja resurssit".  & LS\\
\hline
0.2.2    & 22.5.2012 & Korjattu havaittuja virheitä ja puutteita sekä muokattu johdantoa.  & LS\\
\hline
0.2.3    & 22.5.2012 & Kirjoitettu työtehtävistä ja työnjaosta.  & LS\\
\hline
0.2.4    & 23.5.2012 & Kirjoitettu työtehtävistä ja työnjaosta sekä riskien hallinnasta.  & LS\\
\hline
0.2.5    & 23.5.2012 & Kirjoitettu työtehtävistä ja työnjaosta sekä riskien hallinnasta.  & LS\\
\hline
0.3.0    & 24.5.2012 & Toimitettu versio ohjaajan tarkastettavaksi.  & LS\\
\hline
0.3.1    & 25.5.2012 & Korjattu kirjoitusvirheitä.  & LS\\
\hline
\end{tabular}


% \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}

%----------------------------------------------------------------------------
% \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}

Jyväskylän yliopiston psykologian laitos on tehnyt tutkimusta iäkkäiden, työuupumuksesta kärsivien ja mielenterveyspotilaiden kuntouttamisesta jo vuosien ajan. Tutkimuksissa on ilmennyt tarvetta pystyä antamaan kuntoutettaville apua ja hoitokeinoja myös ilman tutkijan tai lääkärin fyysistä läsnäoloa. Tähän tarkoitukseen Paatti-projekti kehitti Sovellusprojekti-kurssilla keväällä 2012 prototyypin tietojärjestelmästä, jolla tuetaan kuntoutettavien itsenäistä elämää ja kuntoutumista sekä tutkijoiden tekemää tutkimusta. 

Projektiraportti kuvaa projektin toteutunutta läpivientiä määritellen sen tulokset, osallistujat ja muut resurssit, käytänteet, prosessimallin, aikataulun sekä riskien hallintaa. Jäsenten osalta käsitellään tehtäviä, työmääriä ja tehtäväjakoa projektissa. Projektiraportin laatimisessa  on hyödynnetty Judo-projektin projektiraporttia \cite{judoraportti}, Tabu-projektin projektiraporttia \cite{taburaportti} sekä Sovellusprojektien ohjetta \cite{sovellusprojektienohje}.  Projektissa laadittu sovellusraportti \cite{sovellusraportti} kuvaa toteutetun sovelluksen käyttöliittymän, toteutusratkaisut, havaitut ongelmat ja jatkokehitysideat. Vaatimusmäärittelyssä \cite{vaatimusmaarittely} kuvataan kehitetylle tietojärjestelmälle asetettuja vaatimuksia ja niiden toteumaa. Projektin muut tulokset on esitelty luvussa 3.3

Luvussa 2 kuvataan dokumentissa käytetyt termit ja niiden merkitys. Luvussa 3 esitellään projektin taustoja sekä tavoitteiden, tulosten ja projektiryhmän jäsenten oppimistavoitteiden toteutumista. Luvussa 4 esitellään projektiorganisaatio ja resurssit. Luvussa 5 kuvataan projektin käytänteet. Luvussa 6 tarkastellaan projektiryhmän tehtäviä sekä tehtävien työmääriä ja ryhmän työnjakoa. Luvussa 7 kuvataan projektin prosessimallia ja aikataulua. Luvussa 8 kuvataan projektiin liittyneiden riskien hallintaa sekä käsitellään niiden vaikutusta projektin läpivientiin sekä tuloksiin. Luvussa 9 esitellään ryhmän jäsenten kokemuksia projektista.

\chapter{Termit}

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

\section{Aihealueen termit}
Projektin 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 ja tehokkuuteen. % TODO: mieti parempi teksti
  \item[Hälytystehtävä] on tehtävätyyppi, jonka ehtojen täyttyessä tietojärjestelmä lähettää järjestelmän kautta viestin toiselle käyttäjälle.
  \item[Interventio] on psykologisen tiedon, menetelmän ja osaamisen avulla tapahtuva vaikuttaminen kuntoutettavaan.
  \item[Kuntoutettava] on tietojärjestelmän käyttäjä, joka suorittaa kuntoutusohjelmia.
  \item[Kuntoutusohjelma] on tutkijan ryhmälle tai käyttäjälle laatima aikataulutettujen tapahtumien kokonaisuus.
  \item[Käyttäjärooli] on käyttäjän käyttöoikeuksia tietojärjestelmässä kuvaava rooli. Niitä ovat mm. kuntoutettava ja tutkija.
  \item[Mobiililaite] on älypuhelin tai sormitietokone.
  \item[Metatieto] on tietoa kuvailevaa tietoa, 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. % TODO: käytetäänkö tätä termiä?
  \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 aikataulutetaan osaksi kuntoutusohjelmaa.
  \item[Tehtävä] on tapahtuman sisällä oleva yksittäinen kuntoutettavan suoritettava toimenpide, 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 ja kuntoutusohjelmien kokonaisuus.
  \item[Vapaaehtoinen harjoite] on tapahtuma, jonka kuntoutettava voi suorittaa halutessaan.
\end{Ventry}

\section{Vaatimusmäärittelyn termit}

Vaatimusmäärittelyssä esiintyviä termejä ovat seuraavat:

\begin{Ventry}{Sovellusprojekti} 
  \item[Etenemisvaihtoehto] on monivalintatehtävän yksi mahdollinen valinta. 
  \item[Hälytyskomponentti] on tapahtuman luomisessa käytettävä tehtäväkomponentti, joka asetettavan ehdon täyttyessä lähettää viestin käyttäjän asetuksiin määritetyille henkilöille.
  \item[Kotoistus] on toimi, jolla tietojärjestelmä käännetään toiselle 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ää  ääni-, värinä- ja/tai tekstimuotoisella viestillä esimerkiksi alkavasta tapahtumasta. 
  \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 työkalu tapahtuman muodostamiseen tehtävistä.
  \item[Tapahtumatyyppi] on tapahtumalle asetettu tunniste, jolla kuvataan tapahtuman sisältö. Niitä voivat olla mm. liikunta- tai rentoutustapahtumat.
  \item[Valintakomponentti] esittää tehtävän, jossa käyttäjä vastaa valitsemalla yhden vaihtoehdoista.
\end{Ventry}

\section{Tekniikat ja kehitysvälineet}
Dokumentissa esiintyviä tekniikoita ja kehitysvälineitä ovat seuraavat:
\begin{Ventry}{Sovellusprojekti}
  \item[CSS] on WWW-dokumenttien ulkoasun esittämiseen käytetty tyyliohje.
  \item[Django] on WWW-kehys, joka käyttää Python-ohjelmointikieltä.
  \item[FreeMind] on ajatuskarttasovellus.
  \item[GanttProject] on ajan- ja resurssienhallintaohjelma projekteille.
  \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[Jetty] on avoimen lähdekoodin lisenssin alainen WWW-palvelin Java-sovelluksille.
  \item[jQuery] on kaikille selaimille tarkoitettu ilmainen ja avoimen lähdekoodin lisenssin alainen JavaScript-kirjasto.
  \item[\LaTeX] on ladontaohjelmisto.
  \item[Lähdekoodi] on tekstimuotoista ohjelmointikielistä listausta.
  \item[NetBeans] on integroitu ohjelmointiympäristö mm. Java- ja JavaScript-ohjelmointikielille.
  \item[OpenOffice.org] on avoimeen lähdekoodiin perustuva toimisto-ohjelmisto.
  \item[PDF] on ohjelmistoriippumaton siirrettävä tiedostomuoto do\-ku\-men\-teil\-le.
  \item[Tomcat] on WWW-palvelin Java-sovelluksille.
  \item[Vaadin] on avoimen lähdekoodin lisenssin alainen sovelluskehys WWW-sovellusten kehittämiseen Java-ohjelmointikielellä.
  \item[YouSource] on Git-versiohallintaohjelmistoa tukeva lähdekoodien julkistusjärjestelmä, jota käytetään WWW-käyttöliittymällä.
\end{Ventry}


\chapter{Tavoitteiden toteutuminen ja tulokset}

Luvussa käsitellään projektissa toteutetun tietojärjestelmän ja muiden tulosten sekä ryhmän oppimistavoitteiden toteutumista. Tietojärjestelmän laiteriippumattomuus ja laajennettavuus onnistuivat suunnitellusti, mutta mobiilaitteen kiihtyvyysanturin käyttö tietojärjestelmässä sovittiin tilaajan kanssa jatkokehitykseen. Myöskään kuntoutettavan ja tutkijan välistä viestintätoiminnallisuutta ei projektissa ehditty toteuttaa. Toteutettu prototyyppi ja projektissa laaditut sovellusraportti \cite{sovellusraportti} ja vaatimusmäärittely \cite{vaatimusmaarittely} antavat hyvät valmiudet tietojärjestelmän jatkokehitykseen. 

\section{Taustaa ja tarpeita}

Projektin tilaajana oli Jyväskylän yliopiston psykologian laitos. Tilaaja kehittää hoitokäytänteitä sekä tutkii iäkkäitä, työuupumuksesta kärsiviä ja mielenterveyspotilaita. Tietojärjestelmän kuntoutettavien tarpeet ovat pääosin yhteneviä.

Iäkkäillä on usein muistihäiriöitä, joilla voi olla vaikutusta hoito-ohjeiden noudattamiseen. Useasti myös varttuneempien ihmisten fyysinen aktiivisuus alenee. Tilaaja haluaa pystyä muistuttamaan kuntoutettavia hoito-ohjeiden noudattamisesta ja 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ä sekä opettavat keinoja selviytyä ja toipua 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 yhteyden kuntoutettavan, omaisten ja tutkijoiden välille. Tutkijan ja kuntoutettavan välille halutaan yhteys, joka mahdollistaa rutiiniluonteisten tehtävien suorittamisen ajasta ja paikasta riippumattomasti ilman tutkijan läsnäoloa. 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. Tilaaja haluaa hyödyntää tiedon keräämisessä älypuhelimien erilaisia antureita, kuten esimerkiksi kiihtyvyysanturia liikuntasuoritteiden yhteydessä.

Tutkijalle ja omaiselle tulee voida lähettää automaattinen ilmoitus kuntoutettavan havaitusta hätätilanteesta. Hätätilanne voi syntyä esimerkiksi, jos mielenterveyspotilas vastaa kysymyksiin tietyllä tavalla. Hoitoon liittyvistä tapahtumista, kuten lääkkeiden ottamisesta ja liikuntaharjoitteista, tulee voida muistuttaa kuntoutettavaa kehitettävän tietojärjestelmän kautta. Tilaaja haluaa motivoida kuntoutettavaa itsenäiseen elämään ja ottamaan vastuuta omasta paranemisestaan tarjoamalla vapaaehtoisia tapahtumia tutkijan luoman kuntoutusohjelman ohella.

\section{Toteutettu tietojärjestelmä}

Paatti-projektissa toteutettu tietojärjestelmän prototyyppi oli jatkoa Tabu-projektin kehittämälle ohjelmalle. Tabu-projekti kehitti keväällä 2009 Agora Centerille ja GeroCenterille prototyypin Oljenkorsi-sovelluksesta, jolla vanhusten ohjattua ja aikataulutettua liikkumista voitiin tukea ja seurata ilman tutkijoiden, omaisten tai hoitajien läsnäoloa. Tabu-projektin kehittämä ohjelma oli sidottu tietyn puhelinmallin käyttämiseen.

Paatti-projektin tavoitteet olivat laajemmat kuin Tabu-projektin. Tilaaja haluaa laajentaa sovelluksen käyttökohdetta vanhusten itsenäisen elämän tukemisen lisäksi myös muun muassa mielenterveyspotilaiden hoidon ja työuupumuksesta kärsivien tukemiseen. Tilaaja halusi, että kuntoutettavan käyttöliittymä toimisi useilla erilaisilla alustoilla, jolloin kuntoutettava voisi käyttää sovellusta miltei millä tahansa mobiililaitteella. Tutkijan käyttöliittymän haluttiin toimivan tietokoneella sekä mahdollisesti sormitietokoneella. Kumpikin käyttöliittymä toteutettiin WWW-sovelluksena.

Tilaajan tarpeet ja kehittävä tietojärjestelmä olivat käytettävissä olevaan aikaan ja resursseihin verrattuna laajat. Jo projektin alussa oli selvää, ettei tietojärjestelmää pystytä toteuttamaan tuotantoversion tasolle. Paatti-projekti kehitti tavoitteena olevasta tietojärjestelmästä prototyypin, jota jatkokehitetään projektin jälkeen. 

Paatti-projekti määritteli, suunnitteli ja  toteutti tietojärjestelmässä käytettävän tietokannan sekä alustavat versiot tutkijan ja kuntoutettavan käyttöliittymistä. Tutkijan käyttöliittymällä voidaan hallita tutkimuksia, ryhmiä, käyttäjiä, kuntoutusohjelmia ja tapahtumia sekä seurata kuntoutettavien edistymistä. Kuntoutettavan käyttöliittymällä voidaan suorittaa tutkijoiden laatimia kuntoutusohjelmia, suorittaa vapaaehtoisia harjoitteita ja tarkastella käyttäjän suorittamia tapahtumia. Tietojärjestelmään kerätyt tiedot tallennetaan tietokantaan, josta tiedot voidaan tarvittaessa siirtää muihin tutkimuksessa hyödynnettäviin ohjelmiin. 

Projektissa toteuttamattomia tietojärjestelmän ominaisuuksia ja toimintoja on kuvattu tarkemmin sovellusraportissa \cite{sovellusraportti}, sekä vaatimusmäärittelyssä \cite{vaatimusmaarittely}. Suunnitelmallista ja järjestelmällistä testausta ei ehditty toteuttaa Paatti-projektissa.

%\raggedbottom

\textbf{Tutkijan käyttöliittymän toiminnoista toteutuivat}

 \begin{compactitem}
  \item käyttäjien hallinta,
  \item ryhmien hallinta,
  \item tutkimusten hallinta,
  \item tapahtumien hallinta ja
  \item kuntoutusohjelmien hallinta.
 \end{compactitem}

Osittain toteutettuja toimintoja ovat
 \begin{compactitem}
  \item raporttien luominen ja
  \item tietokantaan kerätyn datan siirtäminen xls-muotoon.
 \end{compactitem}

Toteuttamattomia toimintoja ovat
 \begin{compactitem}
  \item viestien lähettäminen käyttäjille,
  \item näytettävien ryhmien rajaaminen tutkijan oikeuksien mukaan,
  \item suoritedatan esittäminen graafisessa muodossa,
  \item muistutusten asettaminen tapahtumille,
  \item mediasisällön hallinta,
  \item hälytystehtävien luominen ja hallinta,
  \item tietokantaan kerätyn datan siirtäminen csv-muodossa sekä
  \item ohjenäkymä.
 \end{compactitem}

\textbf{Kuntoutettavan käyttöliittymän toiminnoista toteutuivat}

 \begin{compactitem}
  \item kuntoutusohjelmien tapahtumien suorittaminen ja
  \item vapaaehtoisten harjoitteiden suorittaminen.
 \end{compactitem}

Osittain toteutettuja toimintoja ovat
 \begin{compactitem}
  \item merkintöjen tallentaminen päiväkirjaan,
  \item käyttöliittymän kuvakkeet ja
  \item tapahtuman päättymisestä ilmoittaminen.
 \end{compactitem}

Toteuttamattomia toimintoja ovat
 \begin{compactitem}
  \item mobiililaitteen ominaisuuksia (kuten kiihtyvyysanturi tai kamera) hyödyntävät toiminnot, 
  \item käyttöliittymän ohjeet,
  \item ilmoitukset saapuneista viesteistä ja tapahtumista,
  \item liukusäädinkomponentti sekä
  \item ääni- ja videokomponentit.
 \end{compactitem}

Tietojärjestelmän käyttäjilleen tarjoamat tiedot ja toiminnot sekä niiden priorisointi on määritelty tarkemmin vaatimusmäärittelyssä \cite{vaatimusmaarittely}. Toteutetun tietokannan sekä prototyypin rakenne, heikot toteutusratkaisut sekä jatkokehitysideat on kuvattu tarkemmin sovellusraportissa \cite{sovellusraportti}. Sovellusraportti kuvaa myös kuntoutettavan ja tutkijan käyttöliittymien näkymiä.


\section{Projektin tulokset}

Tietojärjestelmän prototyypin ohella  projektiryhmä toteutti seuraavat dokumentit:
\begin{compactenum}
\item[-]\textbf{Ajankäyttöraportti} sisältää ryhmän jäsenten kirjaamat työtunnit sekä niiden jakautumisen eri tehtäville ja tehtäväkokonaisuuksille.
\item[-]\textbf{Esittelymateriaalit} sisältävät väli- ja loppuesittelyn materiaalit ja muistiot.
\item[-]\textbf{Itsearvioinnit} sisältävät ryhmän jäsenten arvioinnit omasta toiminnasta, onnistumisesta, kokemuksista ja oppimisesta.
\item[-]\textbf{Kartoitukset} sisältävät projektin määrittelyn ja suunnittelun yhteydessä laaditut dokumentit.
\item[-]\textbf{Luokkadokumentaatio} sisältää lähdekoodista automaattisesti JavaDocilla luodut dokumentit.
\item[-]\textbf{Lähdekoodi} sisältää toteutetun sovelluksen lähdekoodin kommentteineen.
\item[-]\textbf{Kokousten dokumentit} sisältävät kokouksien esityslistat, pöytäkirjat ja tilakatsaukset.
\item[-]\textbf{Projektiraportti} kuvaa projektin läpivientiä ja asetettujen tavoitteiden saavuttamista.
\item[-]\textbf{Projektisopimus} on sopimus projektin tulosten hyödyntämisestä. Se määrittelee mm. projektin osapuolet sekä heidän oikeutensa ja velvollisuutensa.
\item[-]\textbf{Projektisuunnitelma} kuvaa projektin suunniteltuja tavoitteita, resursseja, yleisiä käytänteitä, tehtäviä, aikataulua ja riskien hallintaa.
\item[-]\textbf{Sovellusraportti} kuvaa toteutetun sovelluksen rakenteen ja toiminnot, puutteelliset ja heikot toteutusratkaisut sekä jatkokehitysideat.
\item[-]\textbf{Sähköpostiarkistot} sisältävät kaikki projektin sähköpostilistoilla käydyt keskustelut.
\item[-]\textbf{Vaatimusmäärittely} kuvaa projektin tekniset ja toiminnalliset vaatimukset, sekä tavoitteet ja rajoitteet.
\end{compactenum}

Projektin tulokset toteutuivat suunnitellusti. 

\section{Jäsenten oppimistavoitteet}

Sovellusprojekti-kurssin oppimistavoitteena on projektimuotoisen työskentelyn oppiminen. Projektiryhmän jäsenet saivat kattavan käsityksen ohjelmistoprojektissa työskentelystä sekä sen läpiviennistä. Olennaisia tehtäväkokonaisuuksia olivat ohjelmiston kehitykseen liittyen määrittely, suunnittelu, toteutus ja testaus. Projektipäällikönä toimivat jäsenet oppivat {\bf ajankäytön suunnittelua ja hallintaa} sekä projektin hallintaa ja ryhmän johtamista.

Keskeistä sovellusprojektissa on käytännön tekemisen kautta oppiminen sekä aikaisemmilla kursseilla opitun teoriatiedon soveltaminen. Opituista tiedoista olikin paljon hyötyä projektissa kohdattujen ongelmien ratkaisemisessa. 

Projektityöskentelyssä vaadittiin taitoja ongelmatilanteiden ratkaisemiseen ja ristiriitojen käsittelyyn. Ryhmä toimi aktiivisesti ja omatoimisesti pitäen projektin ja tilaajan tavoitteet sekä loppukäyttäjien tarpeet mielessä. Tarvittaessa ohjaajilta pyydettiin ohjausta.

Ryhmätyö- ja viestintätaitojen oppiminen oli olennaisessa osassa projektissa. Jäsenet oppivat viestimään sekä ryhmän sisällä että projektiorganisaatioon kuuluville henkilöille ja sidosryhmille. Projektin edetessä jäsenet oppivat myös kirjoittamaan sisällöltään ja kirjoitusasultaan laadukkaita dokumentteja. Väliesittelyt ja loppuesittely kannustivat ryhmää myös kehittämään puheviestinnän taitojaan ja toivat jäsenille esiintymiskokemusta.

Jäsenet kehittivät ohjelmointitaitojaan ja oppivat käyttämään Vaadin-sovelluskehystä. Tietokannan suunnittelusta saatiin myös hyvää kokemusta.

Edellisten tavoitteiden lisäksi jäsenet olivat asettaneet seuraavia henkilökohtaisia tavoitteita:

\begin{compactenum}
\item[-] Tapio Keränen halusi tutustua projektin koko elinkaareen.
\item[-] Toni Salmisen tavoitteena oli oppia projektin hallintaa, projektin ja ohjelmiston suunnittelua, ryhmän johtamista sekä ajanhallintaa.
\item[-] Jari Salokangas halusi käytännön kokemusta ohjelmointityökaluista, ohjelmoinnista ja projektityöskentelystä.
\item[-] Lauri Satokankaan tavoitteena oli oppia WWW- ja mobiilisovellusten suunnittelua ja toteutusta. Satokangas halusi myös oppia projektin hallintaa ja ryhmätyöskentelyä.
\end{compactenum}

Henkilökohtaiset ja ryhmän yhteiset oppimistavoitteet toteutuivat jokaisen ryhmän jäsenen osalta.


\chapter{Organisaatio ja resurssit}

Luvussa esitellään projektiorganisaatio, käytössä olleet resurssit sekä projektiin liittyvät oheiskurssit ja perehdytykset. Organisaatio ja resurssit toteutuivat miltei suunnitelman mukaisesti. Projektiorganisaatioon liittyi projektin lopussa kaksi uutta tilaajan edustajaa, mutta tällä ei ollut vaikutusta projektin läpiviennin kannalta.

\section{Projektiorganisaatio}\label{projektiorganisaatio}

Projektiryhmään kuului neljä tietotekniikan laitoksen opiskelijaa: Tapio Keränen, Toni Salminen, Jari Salokangas ja Lauri Satokangas. Lauri Satokangas ja Tapio Keränen olivat kokeneita ohjelmoijia, joista ensimmäisellä oli kokemusta Vaadin-sovellus\-kehyksestä. Kummatkin olivat myös käyttäneet aikaisemmin Netbeans-sovelluskehitintä. Toni Salmisella oli kokemusta Linux-palvelimen konfiguroinnista. Jari Salokankaan vahvuusalueita olivat visiointi ja suunnittelu. Kaikki jäsenet olivat suorittaneet useita ohjelmointikursseja yliopistossa. Jokainen pääsi hyvin hyödyntämään omia vahvuusalueitaan projektin läpiviennissä.

Tilaajan edustajana toimivat Jyväskylän yliopiston psykologian laitokselta Heikki Lyytinen, Raimo Lappalainen, Päivi Lappalainen ja Jukka Kaartinen. Jyväskylän yliopiston tietotekniikan laitokselta projektin vastaavana ohjaajana toimi Jukka-Pekka Santanen ja teknisenä ohjaajana Outa Valkama. Projektin loppuvaiheessa organisaatioon liittyi tilaajan edustajista Timo Suutama sekä Tero Kallioinen, joka toimi tietojärjestelmän pääasiallisenä koekäyttäjänä tilaajan taholta. Kallioinen tulee todennäköisesti jatkamaan tietojärjestelmän kehitystä projektin jälkeen. Organisaation muutoksilla ei ollut vaikutusta projektin suunniteltuun läpivientiin.

Projektin asiantuntijana toimii Matti Lehtinen Agora Centeriltä. Lehtistä konsultoitiin projektin alussa tietojärjestelmän mahdollisista toteutustavoista ja Tabu-projektiin liittyvistä asioista. Asiantuntijatukea oli mahdollista saada tarvittaessa myös Vesa Lappalaiselta ja Kari Tuurihalmeelta, joista jälkimmäinen oli kehittämässä Oljenkorsi-sovellusta myös Tabu-projektin jälkeen. Tuurihalmeen ja Lappalaisen tukeen ei kuitenkaan ilmennyt tarvetta. Ryhmä sai myös pikaisen perehdytyksen JavaScript-ohjelmointikieleen ja Django WWW-kehykseen Juho Vepsäläiseltä.  Tietokannan rakenteen suunnittelussa apua saatiin Pauli Kujalalta. Jyväskylän yliopiston ATK-tuki vastasi ryhmän käytössä olevista laitteista ja ohjelmistoista.

Projektiin kuuluvan viestintäkurssin kirjoitusviestinnän opettajana toimi Kaisa Leino ja puheviestinnän opettajana Minna Haapsaari. Projektin aikana järjestettävän käytettävyyspäivän piti Meeri Mäntylä.

\section{Projektin tilat, laitteet ja ohjelmistot}

Tietotekniikan laitos tarjosi ryhmälle projektin ajaksi käyttöön lukittavan projektihuoneen AgC222.2. Projektin jäsenillä oli projektihuoneessa käytössään kaksi Fedora 14 -käyttöjärjestelmällä ja kaksi Windows 7 -käyttöjärjestelmällä varustettua tietokonetta. 

Projektin aikana ryhmällä oli myös käytössään tietotekniikan laitoksen tarjoamia mobiililaitteita. Laitteista kaksi oli Windows Phone 7 -käyttöjärjestelmällä varustettua älypuhelinta, yksi Meego-käyttöjärjestelmällä varustettu älypuhelin ja yksi Tabu-projektin kehittämän ohjelmiston sisältävä Nokia 5800 -älypuhelin. Tilaaja tarjosi ryhmän käyttöön Kindle Fire -tablet-tietokoneen ja kaksi Android-käyttöjärjestelmällä varustettua älypuhelinta ja yhden tablet-tietokoneen. Tarjottujen laitteiden lisäksi ryhmä käytti myös omia tietokoneitaan tietojärjestelmän kehityksessä sekä omia mobiililaitteitaan järjestelmän testauksessa.

Projektiryhmä käytti projektikokouksia varten kokoustilaa Ag C226.2. Tilassa oli käytettävissä Windows 7 -tietokone ja videoprojektori esityksiä varten.

Sovellusprojektin aikana ryhmällä oli mahdollisuus käyttää yliopiston monitoimitulostimia veloituksetta. Ryhmällä oli myös oikeus varata käyttöönsä videoprojektori, kannettava PC, digitaalisanelin ja MiniDisc-tallennin. Niistä ainoastaan digitaalisanelinta käytettiin muutamissa ensimmäisissä kokouksissa, jotta sihteerinä toiminut ryhmän jäsen sai tarvittaessa tukea kokouksen nauhoitteesta.

Projektiryhmällä oli käytettävissään virkistystila, jossa oli vedenkeitin ja kahvinkeitin. Tietotekniikan laitos tarjosi ryhmälle kahvit ja teet.

Projektiryhmällä oli käytössään yhteinen verkkolevy ja WWW-sivusto projektin tiedostojen säilytystä varten. Lisäksi ryhmä sai huhtikuussa käyttöönsä virtuaalikoneen, johon oli asennettu MySQL-tietokanta ja Apache Tomcat -WWW-palvelin. Sovelluksien kehityksen aikana ryhmä päivitti palvelimelle uusimmat versiot sovelluksista, joten kaikki projektiorganisaatioon kuuluvat pääsivät testaamaan kehitettävän tietojärjestelmän versioita. 

Projektin tilat, laitteet ja ohjelmistot toteutuivat suunnitelman mukaisesti. Virtuaalikoneen käyttöönotossa oli vaikeuksia, sillä atk-tuella kesti yli viikon saada yliopiston palomuuri sallimaan yhteydet koneelle. Muita ongelmia ei projektin aikana ilmaantunut.

\section{Dokumentointityökalut}

Projektisuunnitelma, sovellusraportti ja projektiraportti laadittiin \LaTeX -ladontaohjelmistolla. Open-Office.org -toimisto-ohjelmistolla laadittiin esitysgrafiikat, projektisopimus ja pöytäkirjat. Vaatimusmäärittelyn laatimisessa käytettiin FreeMind-ajatuskarttaohjelmaa. Tilakatsaukset laadittiin Microsoft Powerpoint -toimisto-ohjelmistolla. Kaikki edellä mainitut laajemmat dokumentit julkaistiin myös pdf-muodossa. Raakatekstimuodossa laadittiin muut tekstidokumentit, kuten esityslistat.

Projektin aikataulu laadittiin GanttProject-ohjelmalla. Ajankäytönseurantaan ryhmällä oli käytössään Petri Heinosen sovellusprojekteille toteuttama Excel-sovellus \cite{ajanseurantalahde}. 

Ryhmä käytti YouSource-versiohallintajärjestelmää lähdekoodin ja dokumenttien versioiden hallintaan. Luokkadokumentaation muodostamiseen lähdekoodeista käytettiin JavaDoc-työkalua.

Dokumentointityökalut toteutuivat suunnitellusti. 

\section{Ohjelmointityökalut}

Tietojärjestelmää kehitettiin Netbeans-sovelluskehittimellä käyttäen Vaadin-sovelluskehystä. Sovellusten kehityksessä käytettiin Jetty-nimistä WWW-palvelinta sen nopeuden vuoksi ja tietokannanhallintajärjestelmänä käytettiin MySQL-ohjelmistoa. Sovelluksissa käytettiin myös CSS- ja HTML5-tekniikoita. 

Ohjelmointityökalujen valinta projektin alussa oli haastavaa, koska ryhmällä ei ollut riittävästi tietoa kehitettävän tietojärjestelmän vaatimuksista, eikä myöskään tarpeeksi vahvaa kokemusta eri työkalujen soveltuvuudesta tietojärjestelmän toteuttamiseen. Työkalujen valinnan epävarmuus hidasti työskentelyä projektin alussa. Jos ryhmälle olisi ollut selvää, mitä työkaluja käytetään, olisi niihin tutustuminen voitu aloittaa aikaisemmin.

Vaadin-sovelluskehys oli tuntematon kaikille muille paitsi Satokankaalle, mutta kaikki ryhmän jäsenet oppivat sen käytön projektin aikana. Vaadinin käyttöä opiskeltiin Internetin keskustelupalstojen sekä kirjojen \cite{bookofvaadin} ja \cite{learningvaadin} avulla. Myös projektin teknisellä ohjaajalla oli kokemusta Vaadin-sovellusten kehityksestä.


\section{Luennot ja perehdytykset}

Projektin rinnalla järjestettiin kaksi oheiskurssia. Kurssiin \textit{Sovellusprojektin hallintaa, viestintää ja työkaluja} sisältyivät seuraavat luennot:

\begin{compactenum}
\item[-]aloitusluento,
\item[-]projektin johtaminen ja hallinta,
%\item[-]projektipäälliköiden tapaamisia,
\item[-]käytettävyyspäivä,
\item[-]tekijänoikeus ja sopimukset sekä
\item[-]versiohallinta.
% \item[-]kaksi väliesittelyä.
\end{compactenum}

Kurssiin sisällytettiin myös perehdyttämistä projektin mahdollisiin työkaluihin ja tekniikoihin sekä aihealueeseen. Juho Vepsäläinen perehdytti Django-sovelluskehykseen ja JavaScript-ohjelmointikieleen, sekä Pauli Kujala opasti tietokannan suunnittelussa. Lisäksi tilaajan toimesta saatiin IPR-juristi Markku Lampola esitelmöimään sopimusjuridiikasta.

Kurssiin \textit{Projektiviestintä IT-alalla} kuuluivat puhe- ja kirjoitusviestinnän luentojen ja ryhmätöiden ohella projektissa laadittujen dokumenttien kirjoitusasun ja rakenteen muokkauksen työtunnit. Projektin aikana järjestetyt kaksi väliesittelyä kuuluivat myös viestintäkurssiin.

Luentojen ja perehdytysten toteuma poikkesi hieman suunnitellusta. Projektipäälliköiden tapaamisia ei toteutettu, eikä tilaajan järjestämä tilaisuus sopimusjuridiikasta kuulunut projektin suunniteltuihin luentoihin ja perehdytyksiin. Ryhmän jäsenet saivat järjestetyistä tilaisuuksista hyödyllistä tietoa projektityöskentelyyn. Kujalan opetukset ja neuvot tietokannan suunnittelusta olivat myös erittäin hyödyllisiä, mutta Vepsäläisen perehdytyksessä opituille tekniikoille ja työkaluille ei ollut tarvetta projektissa.

\chapter{Käytänteet}
Luvussa kuvataan käytänteitä, joiden avulla projektin tavoitteet saavutettiin laadukkaasti ja aikataulussa. Käytänteissä ei tapahtunut olennaisia muutoksia suunniteltuun verrattuna.

\section{Kokoukset}
Projektiorganisaatio piti kokouksia helmi- ja maaliskuussa miltei viikoittain ja tämän jälkeen noin kahden viikon välein. Kokouksiin osallistuivat ryhmän jäsenet, ohjaajat ja tilaajan edustajat.

Kokouksissa käsiteltiin projektille ajankohtaisia asioita sekä hyväksyttiin tavoitteita ja toteutusratkaisuja tuoden esille mahdolliset ongelmat, valinnat ja vaihtoehdot. Kahta ensimmäistä kokousta lukuunottamatta jokaisessa  kokouksessa projektipäällikkö esitteli projektin tilakatsauksen sekä ryhmän käyttämän työajan ja sen jakautumisen eri tehtäväkokonaisuuksille. Edellisen kokouksen pöytäkirjan päätökset ja osallistujien tehtävät käytiin myös läpi.

Puheenjohtajan ja sihteerin tehtäviä kierrätettiin projektiryhmän jäsenten kesken. Sihteeri laati kokouksesta pöytäkirjan, jonka puheenjohtaja tarkasti ennen sen julkistamista projektiorganisaatiolle. Jokaisen jäsenen ensimmäisen pöytäkirjan tarkasti myös kirjoitusviestinnän opettaja Kaisa Leino.  Kokouksissa hyväksyttiin edellisen kokouksen pöytäkirja sellaisenaan tai muutoksin.

Kokoukset toteutuivat suunnitellusti ja ilman suurempia ongelmia.

\section{Tiedotus}

Tiedotusvastuu projektin tilasta oli pääasiassa projektipäälliköllä. Kukin ryhmän jäsenistä huolehti omiin tehtäviinsä, vastuualueisiinsa ja tuloksiinsa liittyvästä tiedotuksesta. Projektiin liittyvistä valinnoista, muutoksista ja niiden vaihtoehdoista keskusteltiin projektikokouksissa.

Projektiorganisaation tiedotusta varten luotiin kaksi sähköpostilistaa. Listalle \linebreak\texttt{paatti@korppi.jyu.fi} kuului koko projektiorganisaatio (katso luku~\ref{projektiorganisaatio}), sekä listalle \texttt{paatti\_opetus@korppi.jyu.fi} kuuluivat ryhmän jäsenet ja ohjaajat. Listoilla tiedotettiin muun muassa yleisistä asioista, kuten tapaamisista, esityksistä ja kokouksista. Lisäksi listojen avulla jaettiin palaverien esityslistat ja pöytäkirjat. Sähköpostilistojen viestit arkistoitiin suojattuihin arkistoihin. 

\begin{compactenum}
\item[ ]{\texttt{http://korppi.jyu.fi/list-archive/paatti/} ja}
\item[ ]{\texttt{http://korppi.jyu.fi/list-archive/paatti\_opetus/}.}
\end{compactenum}

Tilaajan tarkasteltaviksi tarkoitetut dokumentit sijoitettiin projektin WWW-sivuille osoitteeseen \texttt{http://sovellusprojektit.it.jyu.fi/paatti}.

Projektiryhmän sisäinen tiedotus hoidettiin pääosin suullisesti, sillä ryhmän jäsenet työskentelivät fyysisesti samassa tilassa ja tapasivat arkipäivisin lähes päivittäin. Ryhmän jäsenten omaan käyttöön luotiin Korppi-opintotietojärjestelmään oma ryhmä ja siihen kuuluva sähköpostilista. Mikään asia ei osoittautunut niin kiireiseksi, että asia olisi tarvinnut hoitaa puhelimella.

Tiedotus toteutui hyvin ryhmän sisäisesti, mutta ryhmä olisi voinut toimia oma-aloitteisemmin organisaatiolle tiedottamisessa. Toisaalta, kokouksia pidettiin niin usein, että tilaajalle saatiin välitettyä hyvin tietoa tietojärjestelmän kehityksestä. Tilaajan puolelta tiedotus oli ajoittain hidasta, mutta siitä ei koitunut mitään ongelmia.

\section{Hakemistorakenne} \label{hakrak}

Hakemistorakenne tulee olemaan projektin WWW-sivuston kansiossa ja CD:llä seuraavanlainen:
%\newpage
\begin{alltt}
        class \textnormal{(luokkadokumentit)}
        dokumentit
            ajankaytto
            esittelyt
            itsearvioinnit
            kartoitukset
            projektiraportti
            projektisuunnitelma
            sopimukset
            sovellusraportti
            sovellussuunnitelmat
            vaatimusmaarittely
        kokoukset
            esityslistat
            poytakirjat
            tilakatsaukset
        sahkopostiarkisto
            paatti
            paatti_opetus
        sources \textnormal{(lähdekoodit)}
\end{alltt}

Hakemistorakenne toteutui suunnitelman mukaisesti.

\section{Tiedostojen nimeäminen}

Kaikki tiedostot nimettiin pienillä kirjaimilla ilman skandinaavisia merkkejä. Dokumenttien nimissä ensimmäisenä on projektin nimi, toisena dokumentin nimi ja kolmantena dokumentin versio. 

Laajempien dokumenttien tiedostot projektiryhmä nimesi tyyliin \linebreak\texttt{paatti\_dokumentinnimi\_versio\-.pääte}, eli esimerkiksi \texttt{paatti\_projektisuunnitelma\_0.0.1.tex}. Tekstimuotoiset kokousten esityslistat ja pöytäkirjat tallennettiin muodossa \linebreak\texttt{paatti\_esityslista\_kokouksenjärjestysnumero.txt} ja \texttt{paatti\_poytakirja\_kokouksenjärjestysnumero.pdf}. 

Lähdekooditiedostojen nimeämisessä käytettiin Java-ohjelmoinnin yleisiä käytänteitä \cite{javakaytanteet}. 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 mukaisest. Verkkosivulle ja CD:lle sijoitetut dokumentit vastasivat edellämainittuja käytänteitä.

\section{Lähdekoodin käytänteet} \label{koodauskaytanteet}

Lähdekoodi ohjelmoitiin käyttäen Javan yleisiä käytänteitä \cite{javakaytanteet}. Luokkien nimissä ensimmäinen kirjain kirjoitettiin isolla ja sanat kirjoitettiin yhteen isoin alkukirjaimin. Funktioiden ja muuttujien nimissä ensimmäinen kirjain kirjoitettiin pienellä ja sanat kirjoitettiin yhteen isoin alkukirjaimin.

Lähdekoodit kommentoitiin englanniksi. Kommentit aloitettiin yksittäisten rivien tai rivin loppujen tapauksissa merkillä \texttt{//}, mutta useamman rivin tapauksessa kommentti aloitettiin \texttt{/*} ja päätettiin \texttt{*/}. Luokkien ja funktioiden kommentit aloitettiin \texttt{/**} ja päätettiin \texttt{*/}. Luokkadokumentointi muodostettiin JavaDocin avulla, joten sen kommentointiohjeita noudatettiin.

%\pagebreak
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 6.3.2012                                                                                                       
*/                                                                                                                                                                                                                                          
public abstract class MobileView extends VerticalLayout {                                                                                                                                                                                    
                                                                                                                                                                                                                                             
    private Panel pageContent;                                                                                                                                                                                                               
    
    // This is the left button in the footer layout.
    public Object FOOTER_BUTTON_LEFT = "leftfooterbutton";

...
\end{verbatim} 

Lähdekoodin ja kommentoinnin käytänteet toteutuivat suunnitelman mukaisesti.

\section{Testauksen käytänteet}

Sovelluksia yksikkötestattiin kehittämisen yhteydessä projektiryhmän toimesta. Järjestelmätestaus suoritettiin ennen siirtymistä viimeistelyyn. Sovelluksista pidettiin virtuaalipalvelimella uusinta toimivaa ja testattua versiota. Kun ryhmä sai valmiiksi jonkin uuden toiminnon sovelluksesta, testattiin sen toimintaa ja toimivuuden varmistamisen jälkeen palvelimella oleva sovellus päivitettiin kyseiseen uudempaan versioon.

Ajan puutteen vuoksi tietojärjestelmälle ei laadittu testaussuunnitelmaa, mutta sovellusten ominaisuuksia järjestelmätestattiin kuitenkin kattavasti ja kaikki jäsenet testasivat sovellusten kaikkia osa-alueita. Tilaajalta saadun testimateriaalin avulla luotiin tietokantaan testidataa, jotta sovellusta pystyttiin testaamaan oikealla sisällöllä. Myös tilaajan edustajat ja ohjaajat testasivat toukokuun kolmella ensimmäisellä viikolla virtuaalipalvelimella olleita sovelluksia.

Projektin alussa tiedostettiin, että sovellusta ja sen käytettävyyttä ei todennäköisesti ehditä testaamaan laajamittaisesti. Mahdollinen testaus oikeilla loppukäyttäjillä jäi toteutumatta johtuen ajan puutteesta, joten se sovittiin tilaajan kanssa projektin jatkokehitykseen. Tilaajan edustajien ja ohjaajien havaintojen ja palautteen avulla ryhmä sai korjattua monia käyttöliittymien virheitä ja epäloogisuuksia, sekä hiottua niiden käytettävyyttä paremmiksi. Puutteelliset ja kehnot toteutusratkaisut sekä jatkokehitysideat kirjattiin sovellusraporttiin \cite{sovellusraportti}.

Testauskäytänteet toteutuivat suunnitelman mukaisesti.

\section{Versiohallinta} \label{versionhallinta}

Projektissa käytettiin YouSource-versiohallintajärjestelmää sekä dokumenttien että lähdekoodin versioiden hallintaan. Ryhmän jäsenillä ja ohjaajilla oli oikeudet YouSource-versiohallintaan.

Projektiorganisaatiolle julkistetuissa dokumenteissa ja lähdekoodeissa käytettiin  yhtenäistä versionumerointia. Projektiryhmä kasvatti versionumeroa, kun tulokseen oli lisätty uusia ominaisuuksia tai korjattu virheitä. Projektiryhmän sisäisesti julkistetuissa tuloksissa versionumero oli muotoa 0.j.k, jossa k on kokonaisluku välillä 0-99. Versionumeroa 0.j.0 käytettiin julkaistaessa versio projektiorganisaatiolle. Tilaajan ja ohjaajien hyväksymä ensimmäinen versio merkittiin versionumerolla 1.0.0. Version 1.0.0 jälkeen keskimmäinen numero ilmaisee pienet muutokset ja ensimmäinen numero huomattavat sisällölliset muutokset.

Versiohallinta ja -numerointi toteutui suunnitelman mukaisesti.

\pagebreak
\section{Tulosten hyväksyminen ja katselmoinnit} \label{tulostenhyvak}

Projektiorganisaatiolle julkistetut tulokset ovat saatavissa projektin WWW-sivuilta osoitteesta \texttt{http://sovellusprojektit.it.jyu.fi/paatti}, josta projektiorganisaatioon kuuluvat pystyivät seuraamaan niiden kehitystä. Lisäksi ohjaajat pystyivät seuraamaan projektiryhmän tuloksia versiohallinnan kautta.

Projektikokouksissa tarkastettiin projektiryhmän tuloksia. Projektisuunnitelma ja -raportti, sovellusraportti sekä vaatimusmäärittely hyväksyttiin projektipäällikön, tilaajan edustajan ja projektin vastaavan ohjaajan allekirjoituksilla. Kehitetty tietojärjestelmä ja muut projektin dokumentit hyväksyttiin kokouksissa.

Lähdekoodin osalta järjestettiin kaksi katselmointitilaisuutta. Lähdekoodin tarkasti ja hyväksyi tekninen ohjaaja Outa Valkama. Katselmoinneista laadittiin projektiorganisaatiolle muistiot \cite{katselmointi1} ja \cite{katselmointi2}.% Vastaava ohjaaja hyväksyi tuloksista projektisuunnitelman ja -raportin ja sovellusraportin.

Tulosten hyväksyminen suoritettiin suunnitelman mukaisesti.

\section{Tulosten koostaminen ja toimittaminen}

Projektin tulokset koottiin projektikansioon ja projektin CD-R-levylle. Projektin CD-R-levy sisältää kaikki projektissa laaditut dokumentit sekä sovelluksen ohjelmakoodit. Projektin CD-R-levy on koostettu luvussa~\ref{hakrak} kuvatulla tavalla. Ryhmä sijoitti tulokset myös YouSource-sivustolle.

Laitokselle ja tilaajalle toimitettiin projektikansio. Laitokselle toimitettiin yksi projektin CD-R-levy ja tilaajalle toimitettiin kolme projektin CD-R-levyä. Laitoksen projektikansio sijoitettiin projektitilan avotilassa sijaitsevaan kirjahyllyyn. Projektiryhmän jäsenet saivat projektin CD-R-levyn. Näiden lisäksi tietotekniikan laitos arkistoi yhden projektin CD-R-levyn.

Tulosten toimittaminen ja koostaminen suoritettiin suunnitelman mukaisesti.

\chapter{Tehtävät, työmäärät ja työnjako}

Luvussa määritellään ryhmän jäsenten vastuualueet sekä heidän tehtävänsä. Lisäksi esitellään ryhmän jäsenten eri tehtävien työmäärät ja työnjako.

Työnjako onnistui hyvin, mutta työtuntien tarve ja tehtäviin käytettävän ajan arviointi eivät sujuneet täysin suunnitelman mukaisesti. Käytettyjen työtuntien määrä ylitti suunnitellun määrän. Arvioitua enemmän aikaa kului työkalujen käytön oppimiseen ja koko kehityksen ajan jatkuneeseen tietojärjestelmän toteutusratkaisujen suunnitteluun. Ryhmä ei myöskään halunnut jättää tietojärjestelmän tarpeellisia toimintoja keskeneräisiksi, joten aikaa kului näiden toimintojen kehittämiseen ja viimeistelyyn.

\section{Vastuualueet tulosten osalta}

Projektin alussa \textbf{projektipäällikkönä} toimi Toni Salminen ja varapäällikkönä Lauri Satokangas. Salminen ja Satokangas vaihtoivat tehtäviä huhtikuun alkupuolella. Varapäällikölle ei projektissa ollut varsinaista tarvetta. Projektipäällikön vastuulle kuuluivat projektin suunnittelu ja hallinta, projektin tilan määritys, ajankäytön seuranta, tiedotus sekä työnjako. Projektipäällikkö vastasi myös projektisuunnitelman ja -raportin laatimisesta. Käytännössä tämä tarkoitti sitä, että Salminen kirjoitti projektisuunnitelman ja Satokangas kirjoitti sen pohjalta projektiraportin.

Ryhmän sisällä ei päälliköllä ollut suurta roolia. Tämä johtui siitä, että kaikki jäsenet osallistuivat miltei yhtä paljon tietojärjestelmän suunnitteluun ja toteutukseen. Ratkaisu osoittautui toimivaksi projektin läpiviennin kannalta. Projektipäälliköiden tarvitsi keskittyä varsinaiseen projektin hallintaan vain projektin alussa, jotta projekti saatiin kunnolla aloitettua, ja projektin lopussa, jotta kaikki projektin päättämiseen tarvittavat tehtävät saatiin suoritettua hallitusti. Ryhmän jäsenet sopivat työtehtävänsä neuvottelemalla muiden kanssa tai valitsemalla omatoimisesti tekemättömiä tehtäviä. Suurimman osan projektin elinkaaresta projektipäälliköt olivat kuitenkin samassa asemassa kuin muutkin ryhmän jäsenet.

\textbf{Dokumenttien vastuuhenkilöt} on esitetty taulukossa \ref{vastuuhenkilot}. Vastuuhenkilö ei ollut vastuussa koko dokumentin toteuttamisesta yksin, mutta vastasi sen valmistumisesta, tarkastettavaksi toimittamisesta ja tarpeellisesta muokkauksesta. Vastuuhenkilö tiedotti projektiorganisaatiolle vastuullaan olevien tulosten valmistumisesta.

\begin{table}
\begin{center}
\begin{tabular}{|l|l|r|}
\hline
\textbf{Tulos} & \textbf{Vastuuhenkilö} & \textbf{Hyväksytty} \\
\hline \hline
Projektisuunnitelma & Toni Salminen & 23.4.2012 \\
\hline
Projektiraportti & Lauri Satokangas & \\
\hline
Vaatimusmäärittely & Tapio Keränen & \\
\hline
Sovellusraportti & Jari Salokangas & \\
\hline
Tietokanta & Tapio Keränen & 24.5.2012 \\
\hline
\end{tabular}
\caption{Dokumenttien vastuuhenkilöt.} \label{vastuuhenkilot}
\end{center}
\end{table}


Kehitettyjen sovellusten osa-alueiden toteutukselle ei nimetty vastuuhenkilöitä projektin suunnittelun yhteydessä, mutta käytännössä joidenkin
kokonaisuuksien kohdalla ryhmän sisälle muodostui vastuualueita. Tapio Keränen vastasi tutkijan käyttöliittymässä olevasta tapahtumien luomiseen käytetystä työkalusta ja Lauri Satokankaan vastuulla oli kuntoutettavan käyttöliittymä. Toni Salminen ja Jari Salokangas kehittivät muita tutkijan käyttöliittymän osia.

\section{Tehtävien työmäärät ja työnjako}

Ryhmä suunnitteli käyttävänsä projektiin noin 25 työtuntia viikkoa kohden. Yhteensä työtunteja oli suunniteltu käytettäväksi 1832. Toteutunut työtuntimäätä oli noin 200 tuntia suunniteltua vähemmän. Oheiskursseihin käytettiin 100 tuntia  suunniteltua vähemmän, mutta niihin varattiinkin suunnitelmassa reilusti pelivaraa. Tämän raportin kirjoittamishetken jälkeen työtunteja tulee lisää vielä 20-30, jotta kaikki projektin päättämiseen liittyvät tehtävät saadaan suoritettua. Toteutunut työtuntimäärä on siis noin sata tuntia arvioitua pienempi, mikä tarkoittaa viiden prosentin eroa suunnitelman ja toteuman välillä. 

Yksittäisten ryhmän jäsenten työtuntimäärissä erot jäivät alle kymmeneen työtuntiin, joten jäsenten työmäärät saatiin pidettyä sopivassa tasapainossa. Projektin lopussa suoritettu tietojärjestelmän viimeistely ja dokumenttien laatiminen auttoivat työmäärien tasaamisessa. Satokankaalla ja Salokankaalla oli huhtikuun loppuun mennessä selvästi vähemmän tunteja kuin Keräsellä ja Salmisella, mutta he saivat tasattua työtunteja toukokuun kolmella viimeisellä viikolla.

Taulukossa \ref{kaikkientunnit} on esitetty suunnitellut (S) ja toteutuneet (T) työtunnit jokaiselle ryhmän jäsenelle tehtäväkohtaisesti. Työtuntien kirjaamisessa käytetyt tehtävät eivät vastaa täysin suunnitelmaan kirjattuja tehtäviä, joten taulukossa esitetty toteutuneiden työtuntien ryhmittely ei ole täysin totuudenmukainen.

Kun tarkastellaan tehtäväkokonaisuuksien toteutus, suunnittelu, testaus ja viimeistely yhdistettyjä tunteja suunnitelman ja toteuman välillä, saadaan hyvin lähellä toisiaan olevat tulokset. Em. tehtäväkokonaisuuksien suunniteltu työtuntimäärä oli 811 tuntia ja toteutunut työtuntimäärä 801 tuntia. Suunnittelussa onnistuttiin siis erinomaisesti tällä osa-alueella.

Tietokannan suunnitteluun oli suunnitelmassa varattu liian vähän aikaa. Käytännössä tietokannan suunnitteluun käytettiin ainakin kaksinkertainen määrä tunteja, ja lisäksi tarvittiin Pauli Kujalan apua tietokannan rakenteen tarkistamisessa. Tietokannan rakennetta ja tietokantataulujen sarakkeita jouduttiin muokkaamaan useaan otteeseen, jotta tarvittavat tietojärjestelmän toiminnot saatiin toteutettua.

Ryhmän olisi kannattanut heti projektin alussa sopia tarkemmin työtuntien kirjaamiskäytännöt. Jos tunnit olisi kirjattu työtuntien suunnittelun nimikkeillä olisi suunniteltujen ja toteutuneiden tuntien vertailu ollut paljon selkeämpää. Tulevissa sovellusprojekteissa asiaa kannattaisi täsmentää ryhmien jäsenille, jotta tuloksina saatavista raporteista voitaisiin tehdä entistä täsmällisempiä.

%Ajankäytön seurannassa (excel) olisi kannattanut käyttää samoja käsitteitä kuin projektisuunnitelman työmääräsuunnitelmassa.
%Oli hyvin vaikeaa selvittää mikä kuuluu mihinki.
%Palaverit:
%Raportointi ja viimeistely menee ristiin ja kokonaisvaltainen  kuuluu osittain samaan.

%perehtymisessä vaikeuksia arvioida aikoja. paljoa ei menny aihealueeseen. ehkä 20h yhteensä? vaadiniin voi laittaa loput.
%Projektin ja oheiskurssien työtunnit on arvioitu taulukossa, joka esitetään kuvissa \ref{aikasuunnitelmataulukko1} ja \ref{aikasuunnitelmataulukko2}. Tehtävien, tehtäväkokonaisuuksien ja jäsenten työtunnit on arvioitu ja järkevyys varmistettu ryhmän jäsenten kesken. Tehtäväkokonaisuuksien vähimmäiskesto päivinä on laskettu käyttäen viiden tunnin työpäiviä.

%\begin{figure}[htp]
%\centering
%\scalebox{1.0}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{paatti_tyomaarien_arviointi1cut.eps} }
%\caption{Arvioidut työtunnit (jatkuu).} \label{aikasuunnitelmataulukko1}
%\end{figure}

%\begin{figure}[htp]
%\centering
%\scalebox{1.0}{\includegraphics[trim = 0mm 0mm 0mm 0mm, angle=0]{paatti_tyomaarien_arviointi2cut.eps} }
%\caption{Arvioidut työtunnit (jatkoa).} \label{aikasuunnitelmataulukko2}
%\end{figure}

\section {Ryhmän työtunnit tehtäväkokonaisuuksittain}

Työtuntien kirjaamisessa käytetyt tehtäväkokonaisuuksien nimikkeet eivät vastaa täysin kuvassa \ref{kaikkientunnit} näkyviä tehtäväkokonaisuuksia. Toteutuksen suuri osuus työtunneista selittyy sillä, että siihen merkittiin myös tunteja, jotka olisivat kuuluneet pikemminkin suunnitteluun, testaukseen tai viimeistelyyn. Projektin kehitysvaiheessa oli hyvin vaikeaa erotella käytettyjä tunteja eri tehtäväkokonaisuuksiin, ja usein koko päivän tunnit merkittiinkiin toteutukseen.

%\begin{figure}[h!]
%\centering
%\scalebox{1.0}{\includegraphics[]{paatti_kaikkien_tunnit.png} }
%\caption{Toteutuneet työtunnit.} \label{kaikkientunnit}
%\end{figure}

\begin{figure}[h!]
\centering
\includegraphics{paatti_kaikkien_tunnit.png}
\caption{Toteutuneet työtunnit.} 
\label{kaikkientunnit}
\end{figure}

\section {Tapio Keräsen työtunnit tehtäväkokonaisuuksittain}

Keränen vastasi pääosin ensimmäisestä vaatimusmäärittelystä, tietokannan suunnittelusta ja toteutuksesta sekä tutkijan käyttöliittymässä käytettävästä tapahtumien muokkaus -työkalusta. Toteutuneiden työtuntien kuvasta \ref{tapiontunnit} voidaan nähdä, että Keräsen osuus tietojärjestelmän ohjelmointityöstä oli keskimääräistä hieman suurempi.

\begin{figure}[h!]
\centering
\scalegraphics{tapion_tunnit.png}
\caption{Keräsen toteutuneet työtunnit.} 
\label{tapiontunnit}
\end{figure}

\section {Toni Salmisen työtunnit tehtäväkokonaisuuksittain}

Salminen toimi projektipäällikkönä huhtikuun puoleen väliin asti, mikä näkyy selvästi eri tehtäväkokonaisuuksien tasaisena jakautumisena toteutuneiden työtuntien kaaviossa \ref{tonintunnit}. Projektin läpiviennin suunnittelu ja projektisuunnitelman kirjoittaminen muodostavat selvästi suuren osan työtuntimäärästä. Projektisuunnitelman kirjoittamisen jälkeen Salminen siirtyi ohjelmoimaan tutkijan käyttöliittymän näkymiä, ja hän toteutti myös tietojärjestelmän sisäänkirjautumisessa käytetyt komponentit.

\begin{figure}[h!]
\centering
\scalegraphics{tonin_tunnit.png}
\caption{Salmisen toteutuneet työtunnit.} 
\label{tonintunnit}
\end{figure}

\section {Jari Salokankaan työtunnit tehtäväkokonaisuuksittain}

Salokangas kirjoitti projektin sovellusraportin ja toteutti myös tutkijan käyttöliittymän näkymiä, kuten Salminenkin. Hän vastasi myös sovellusten suunnittelussa laadituista käyttöliittymäkuvauksista ja sovellusten ulkoasun suunnittelusta. Salokankaalla oli kevään aikana lukuisia muita kursseja, joten hän ei aina ehtinyt käyttää suunniteltua määrää työtunteja projektiin. Hän ehti kuitenkin saavuttaa muiden ryhmäläisten työtuntimäärän projektin viimeisillä viikoilla. Kaaviossa \ref{jarintunnit} näkyvät Salokankaan suunnitteluun ja dokumenttien laatimiseen käytettyjen työtuntien suuri osuus.

\begin{figure}[h!]
\centering
\scalegraphics{jarin_tunnit.png}
\caption{Salokankaan toteutuneet työtunnit.} 
\label{jarintunnit}
\end{figure}

\section {Lauri Satokankaan työtunnit tehtäväkokonaisuuksittain}

Satokangas keskittyi pääosin tietojärjestelmän ohjelmointiin, sillä hänellä oli aiempaa kokemusta käytetystä sovelluskehyksestä. Hän toteutti pääosin kuntoutettavan käyttöliittymän ja rungon tietokantayhteydet hoitavasta apuluokasta. Kuvassa \ref{laurintunnit} näkyy, että melkein puolet käytetyistä työtunneista on mennyt toteutukseen. Satokangas toimi projektipäällikkönä huhtikuun puolivälistä toukokuun loppuun. Projektipäällikön tehtävät jäivät selvästi vähemmälle kuin ohjelmointiin käytetty aika. Projektin hallinta keskittyikin ajallisesti pääasiassa toukokuun kolmelle viimeiselle viikolle ja oli täten selvästi pienemmässä osassa muuhun toimintaan verrattuna.

Satokangas oli huhtikuun alussa kaksi viikkoa matkalla, mutta tämä oli otettu huomioon jo suunnitteluvaiheessa eikä matkalla ollut vaikutusta toteutettuihin työtunteihin. Hän saavutti muiden ryhmäläisten työtuntimäärän 

\begin{figure}[h]
\centering
\scalegraphics{laurin_tunnit.png}
\caption{Satokankaan toteutuneet työtunnit.} 
\label{laurintunnit}
\end{figure}

\chapter{Prosessimalli ja aikataulu}

Luvussa kuvataan projektissa noudatettua prosessimallia ja toteutunutta aikataulua.

\section{Prosessimalli}
Projekti toteutettiin käyttämällä räätälöityä ketterää prosessimallia. Projekti vietiin läpi neljässä vaiheessa. Ensimmäisessä vaiheessa suunniteltiin projektin läpivienti, laadittiin vaatimusmäärittely sekä suunniteltiin sovelluksen käyttöliittymää ja rakennetta. Toisessa vaiheessa kehitettiin tietojärjestelmän runko ja suunniteltiin tietokanta. Kolmannessa eli toteutusvaiheessa tietojärjestelmän runkoon lisättiin ominaisuuksia. Viimeisessä vaiheessa sovellus, lähdekoodi ja dokumentaatio viimeisteltiin sekä päätettiin projekti. 

Vaiheiden vaihtumis- tai loppumisajankohdat eivät kuitenkaan olleet aivan yksikäsitteisiä, sillä vaiheita toteutettiin osittain päällekkäin toistensa kanssa. Vaatimusmäärittelyä ja tietokantaa muutettiin vielä toukuunkin aikana. Varsinaisia vaiheita onkin vaikeaa erottaa toteutuneesta prosessista. Vaiheiden tuloksia ei myöskään pääsääntöisesti hyväksytetty ohjaajilla tai tilaajilla.

%Toteutusvaiheissa sovellusta kehitetään lisäämällä ominaisuuksia viikon tai kahden viikon sykleissä. Projektin aikana ryhmä ehtii tehdä kahdesta neljään toteutusvaihetta. Kunkin toteutusvaiheen alussa ryhmä asettaa tavoitteita, jotka voivat olla uusia ominaisuuksia tai olemassa olevien ominaisuuksien kehittämistä. Kunkin toteutusvaiheen päätyttyä tarkastellaan, onko vaiheen alussa asetetut tavoitteet saavutettu ja kannattaako keskeneräisiä tavoitteita jatkaa seuraavassa toteutusvaiheessa.

Prosessimalli ei toteutunut täysin suunnitelman mukaisesti. Ryhmä keskusteli aina työn alla olevista toiminnoista ja päätti yhdessä, mitä osiota kukin toteuttaa seuraavaksi, mutta projektin alussa suunniteltu erityisten kehityssyklien käyttö jäi toteutumatta. Tietojärjestelmän kehitys oli myös suunniteltua iteratiivisempaa, kuitenkin sen runko saatiinkin aikaisessa vaiheessa valmiiksi,  yksittäiset näkymät ja niiden toteutustapa kokivat suuriakin muutoksia projektin aikana. 

Selkeän prosessimallin puuttuminen ei missään vaiheessa haitannut projektin esitymistä. Ryhmän omaksumat käytänteet korvasivat prosessimallin puutteita. Tarvittavia työtunteja toimintojen toteuttamiseen lisättiin tarvittaessa ja osittain jäsenet toteuttivat useita päällekkäisiä toimintoja ja tehtäviä. Jäsenet käyttivät useasti pariohjelmointia apunaan tietojärjestelmän kehitysvaiheessa.

\section{Aikataulu}

Projekti alkoi 2.2.2012, ja se päättyi [Toni lisää päivämäärän]. Tietojärjestelmän prototyyppi hyväksyttiin 24.5.2012. Projekti suunniteltiin päättyvän viimeistään toukokuun lopussa. Viimeiset tulokset luovutettiin kesäkuun ensimmäisellä viikolle, joten suunnitellusta aikataulusta ei jääty merkittävästi jälkeen. Aikataulun tehtäväkokonaisuuksien toteutuneet aikajänteet kuvataan Gantt-kaaviossa \ref{ganttkaavio}.

\begin{figure}[htp]
\centering
\scalegraphics{ganttkaavio.png} } 
\caption{Gantt-kaavio suunnitellusta aikataulusta.} \label{aikataulu}
\end{figure}

\section {Ryhmän työtunnit viikoittain}

Kuvassa \ref{tunnit_viikot} on esitetty ryhmän käyttämien työtuntien jakautuminen eri viikoille. Suunniteltu työtuntimäärä viikkoa kohden oli 25 tuntia jokaista jäsentä kohden, eli yhteensä 100 tuntia viikossa. Työtunteja ei kertynyt yhdelläkään viikolla tasaisesti ryhmän jäsenten kesken. Viikot 6-12 ovat ainoa pidempi ajanjakso, jolloin tuntimäärä pysyi keskiarvoltaan tasaisena. 

Keräsellä ja Salokankaalla oli kevään aikana muita opintoja, jotka vaikuttivat heidän työtuntiensa määrään. Kuvassa näkyy myös pääsiäisen aika (viikot 13 ja 14), jolloin Satokangas ja Salokangas eivät suorittaneet projektiin liittyviä tehtäviä. Vastaavasti kuvassa on myös nähtävissä Salokankaan loppukiri viikoilla 17-20.

Viikolla 21 pääasiassa Salokangas ja Satokangas työskentelivät projektin parissa. Salminen ja Keränen eivät työskennelleet, jotta ero heidän tuntimääriinsä ei kasvaisi suuremmaksi.


\begin{figure}[h]
\centering
\scalegraphics{tunnit_viikot.png}
\caption{Ryhmän työtunnit viikoittain.} 
\label{tunnit_viikot}
\end{figure}

\section {Tapio Keräsen työtunnit viikoittain}

Kuvassa \ref{tapio_viikkotunnit} näkyy, että Keräsen suorittama viikottainen työtuntimäärä oli kaikkein lähimpänä suunniteltua 25 viikkotuntia. Pääsiäisviikon vapaapäivät näkyvät tässäkin kuvassa, kuten myös viikko 19, jolloin ryhmä korjasi sovellusten bugeja ja refaktoroi lähdekoodia. 

\begin{figure}[h]
\centering
\scalegraphics{tapio_viikkotunnit.png}
\caption{Keräsen työtunnit viikoittain.} 
\label{tapio_viikkotunnit}
\end{figure}

\section {Toni Salmisen työtunnit viikoittain}

Kuvassa \ref{toni_viikkotunnit} näkyy pääsiäisloman viikot 14 ja 15, sekä yksittäisenä piikkinä viikko 19. Viikolla 19 Salminen korjasi tutkijan käyttöliittymästä havaittuja puutteita ja virheitä. 

\begin{figure}[h]
\centering
\scalegraphics{toni_viikkotunnit.png}
\caption{Salmisen työtunnit viikoittain.} 
\label{toni_viikkotunnit}
\end{figure}

\section {Jari Salokankaan työtunnit viikoittain}

Salokankaan viikottainen työmäärä oli noin 20 tuntia viikolle 14 asti, jolloin hän oli lomalla. Sen jälkeinen viikko 15 oli pääsiäinen, jolloin myös muu ryhmä teki vähemmän töitä. Kuvassa \ref{jari_viikkotunnit} näkyy hyvin Salokankaan loppukiri viikoilla 16-20.

\begin{figure}[h]
\centering
\scalegraphics{jari_viikkotunnit.png}
\caption{Salokankaan työtunnit viikoittain.} 
\label{jari_viikkotunnit}
\end{figure}

\section {Lauri Satokankaan työtunnit viikoittain}

Satokankaan tuntimäärissä ei näy suuria poikkeamia, lukuunottamatta viikkoja 13 ja 14 jolloin hän oli matkalla. 

\begin{figure}[h]
\centering
\scalegraphics{lauri_viikkotunnit.png}
\caption{Satokankaan työtunnit viikoittain.} 
\label{lauri__viikkotunnit}
\end{figure}

\chapter{Riskit ja niiden hallinta} \label{riskit}

Luvussa kuvataan projektissa kartoitetut riskit sekä kuvataan niiden ehkäisemistä, ennakointia ja käsittelyä.

Luvussa kuvataan projektin ennakoitujen riskien toteutumista ja niiden vaikutusta projektin läpivientiin ja tuloksiin. Projektin aikana ei toteutunut ennakoimattomia riskejä. Riskejä ennakoitiin käyttäen hyväksi edellisten sovellusprojektien dokumentteja, joissa kuvattiin riskejä ja niiden toteumia. Tietojärjestelmän kehitysvaiheessa oli muutamia ongelmia Vaadin-sovelluskehyksen kanssa, mutta ryhmä selvitti asiat omatoimisesti, eikä ongelmista tullut missään vaiheessa suurta riskiä projektin läpiviennille. Vaatimusten ja tietokannan muuttuminen 

\section{Riskien todennäköisyydet ja haitat}

Riskien todennäköisyydet, haittavaikutukset ja toteutunut riski on esitetty taulukossa~\ref{riskitaulukko}. Todennäköisyyttä ja haittavaikutusta arvioidaan asteikolla pieni, keskinkertainen ja suuri.

\begin{center}
\begin{table}[ht]
\centering
\begin{tabular}{|p{0.2\textwidth}|p{0.2\textwidth}|p{0.2\textwidth}|p{0.2\textwidth}|}
\hline
\textbf{Riski} & \textbf{Todennäköisyys} & \textbf{Haittavaikutus}  & \textbf{Toteutunut haitta}\\
\hline \hline
Kehittäjien tietotaidon puutteet & keskinkertainen & keskinkertainen & pieni \\ \hline
Tavoitteiden rajaaminen ja muuttuminen & keskinkertainen & keskinkertainen & keskinkertainen \\ \hline
Jäsenten poissaolot & keskinkertainen & pieni & pieni\\ \hline
Projektihallinnan kokemattomuus & keskinkertainen & pieni & pieni\\ \hline
Tiedotuksen puutteet & pieni & keskinkertainen & pieni \\ \hline
\end{tabular}
\caption{Arvioidut riskit sekä niiden todennäköisyys ja haittavaikutus.} \label{riskitaulukko}
\end{table}
\end{center}


\section{Kehittäjien tietotaidon puutteet}

Ohjelmiston toteutuksessa käytettiin Vaadin-sovelluskehystä, josta vain Satokankaalla oli aiempaa kokemusta. Muu ryhmä oppi Vaadinin käytön hyvin projektin aikana. Vaadinin avulla toteutettu tietokantakäsittely hidasti joitain kehitysvaiheita, kun tiedon tallentaminen useampaan tietokantatauluun kerralla ei onnistunut yksinkertaisesti. Tekninen ohjaaja suositteli ryhmää tutustumaan myös muihin ratkaisuihin, mutta lyhyen tutustumisen jälkeen muita vaihtoehtoja ei koettu Vaadinia paremmiksi. Muiden ratkaisujen käyttö olisi myös vaatinut lisää aikaa käytettäväksi niiden tutkimiseen ja opiskeluun. Ryhmä ei aina osaa ennakoida mahdollisia ongelmakohtia. Tietotaidon puute voi vaikeuttaa tavoitteiden toteuttamista ja näin ollen viivästyttää projektin aikataulua.
%
%Ryhmän sisällä on tietoa osasta työkaluista ja tekniikoista, joiden käyttämiseen myös muut ryhmän jäsenet tutustutetaan. Näin olemassa olevaa taitoa pystytään hyödyntämään ryhmän sisällä. Pysymällä tutuissa työkaluissa ja tekniikoissa pystytään myös paremmin ennakoimaan ongelmia. 
%
%Kurssin aikana voidaan myös järjestää perehdytyksiä ryhmän jäsenille vieraampiin työkaluihin ja tekniikoihin. Ongelmatilanteissa projektiryhmällä on käytettävissään tekninen ohjaaja ja asiantuntijoita.


\section{Tavoitteiden rajaaminen ja muuttuminen}

Tilaajan edustajien tavoitteet olivat hyvin yhteneviä ja niissä painotettiin samoja asioita. Ryhmän muodostama kuva ohjelmiston tavoitteista voi osoittautui tilaajan edustajille sopivaksi. Ryhmä sai hyvin esille omat ehdotuksensa tavoitteiksi ja tavoitteiden rajaamiseksi.

Ennen kuin ohjelmiston toteutus aloitettiin, ei ryhmällä ollu kovin selkeää kuvaa tietojärjestelmän lopullisesta muodosta, mutta projektin aikana määrittelyt saatiin tarkennettua hyvin. Ryhmä tunnisti omat resurssinsa ja osasi hyvin arvioida mitkä tavoitteista pystyttiin toteuttamaan. Tavoitteiden muuttuminen ja rajaaminen eivät aiheuttaneet merkittävää haittaa projektin läpiviennille.  ja tilaajalla olla selkeä kuva siitä, mitä ohjelmiston osia ja toimintoja toteutetaan projektin aikana valmiiksi. Ryhmä joutui projektin alussa käyttämään paljon aikaa sovittaakseen tilaajan näkemykset yhtenäiseksi vaatimusmäärittelyksi.

Käyttöliittymäprototyyppien avulla tilaajalle saatiin esiteltyä suunniteltua tietojärjestelmää ja protyypeistä saadun palautteen avulla pystytiin tarkentamaan vaatimusmäärittelyä ja tavoitteita.

%Ohjelmistoa kehitettäessä on tärkeää kommunikoida tiiviisti ryhmän ja tilaajan välillä, jotta mahdolliset erot tavoitteissa huomattaisiin nopeasti. Käyttöliittymäprototyypeillä voidaan tilaajalle esitellä  projektiryhmän näkemystä kehitettävän ohjelmiston toiminnallisuuksista ja ominaisuuksista jo ennen ohjelmiston toteutusvaihetta. Tilaajan edustajille tulee painottaa, ettei ohjelmisto tule projektin päättyessä sisältämään kaikkia vaatimusmäärittelyssä kuvattuja ominaisuuksia.

%
%Sovittujen tavoitteiden muuttuessa täytyy ryhmän ja tilaajan yhdessä päättää, mitä vaatimusmäärittelyn vaatimuksia voidaan siirtää projektin jälkeiseen jatkokehitykseen, jotta uudet tavoitteet voidaan toteuttaa pysyen aikataulussa. Jos projektin aikana huomataan, että vaatimusmäärittelyn priorisointi on liian optimistinen ja kaikkia luvattuja vaatimuksia ei ehditä toteuttaa, täytyy ryhmän ja tilaajan yhdessä päättää, mitä vaatimusmäärittelyn vaatimuksia voidaan asettaa pienemmälle prioriteetille.


\section{Jäsenten poissaolot}

Ryhmän jäsenillä ei ollut ennakoimattomia poissaoloja. Lauri Satokankaalla oli suunniteltu kahden viikon poissaolo kesken projektin, jonka aikana hän osallistui projektiin rajoitetusti. Tästä ei kuitenkaan ollut mainittavaa haittaa projektin läpiviennille. 

\section{Projektihallinnan kokemattomuus}

%Projektipäällikkönä toimivilla jäsenillä ei ole kokemusta projektin läpiviemisestä, joten työmäärien ja aikataulun arvioiminen on vaikeaa. Kokemattomuuden takia työtehtävien tasainen jakaminen ryhmän jäsenille ja ryhmän jäsenten taitojen hyödyntäminen ei ole todennäköisesti ihanteellista. Projektipäällikön vaihtuminen huhtikuun alkupuolella tuo myös omat haasteensa projektin hallintaan.
%
%Projektipäällikön täytyy huolehtia, että kaikki dokumentit ovat koko ajan saatavilla tarkasteluun. Projektipäälliköksi vaihtuvan jäsenen täytyy pitää itsensä ajantasalla nykyisen projektipäällikön toimista.  Projektipäälliköiden täytyy ennen ja jälkeen vaihdon olla tiiviissä vuorovaikutuksessa, jotta vaihto ei aiheuta häiriöitä muiden jäsenten työskentelyyn.
%
%Projektihallinnassa ryhmän jäsenten apu projektipäälliköille on ensiarvoisen tärkeää. Ryhmän jäsenten täytyy muistaa, että projektipäällikkö on oppimassa projektin johtamista. Projektiryhmän jäsenillä on velvollisuus huomauttaa, jos projekti ei etene oikeaan suuntaan. Ryhmän jäsenten täytyy olla oma-aloitteisia ja huomauttaa, jos tehtäviä jää tekemättä. Jos projektin hallinnassa esiintyy ongelmia tai epäselvyyksiä, täytyy niiden ratkaisemisesta keskustella projektin ohjaajan kanssa.


\section{Tiedotuksen puutteet}

Tiedotuksen puutteesta ryhmä sai palautetta projektin loppuesittelyssä. Ryhmän olisi tullut olla omatoimisempi ja tiedottaa tilaajalle projektin etenemisestä. Aiheutunut haitta jäi kuitenkin todennäköisesti pieneksi.

Ryhmän sisäisessä tiedotuksessa ei ollut mitään ongelmia. Ryhmä oli melkein kaikkina arkipäivinä samassa tilassa työskentelemässä, joten kommunikointi ja työtehtävistä keskustelu onnistuivat hyvin.
%Projektiorganisaatiossa tiedonkulku on tärkeää. Tiedotuksen puute voi vaarantaa koko projektin aikataulussa pysymisen tai jopa projektin onnistumisen. 
%
%Tiedotuksen täytyy olla riittävää ja yksikäsitteistä, jotta jokainen osapuoli pysyy ajantasalla projektin etenemisestä ja omista tehtävistään. Jos projektin tiedotuksessa havaitaan puutteita, projektipäällikön täytyy pystyä korjaamaan havaitut ongelmat ja pyytää asianomaisia parantamaan tiedottamistaan. Projektiryhmän jäsenten täytyy tiedottaa projektipäällikköä valmistuneista tehtävistään sekä mahdollisista ongelmista projektiin liittyen. Jos projektipäällikkö ei ole tavoitettavissa, niin tiedotetaan varapäällikköä tai vastaavaa ohjaajaa.

\chapter{Jäsenten kokemuksia}

Luvussa projektiryhmän jäsenet kuvaavat kokemuksiaan ja oppimiaan asioita. 

Projekti oli ryhmän jäsenten mielestä hyvä kokemus ja tietojärjestelmän toteuttaminen oli mielekästä. Kaikki ryhmän jäsenet toteuttivat sovellusta ja jokaisella oli omat vastuualueensa sovellusten toiminnoista. Myös dokumentaation kirjoittaminen kuului kaikkien tehtäviin, joten yksittäisille jäsenille ei tullut suhteessa muuhun ryhmään suurta työmäärää dokumenttien kirjoituksesta. 

\section {Yhteisiä kokemuksia}

\section {Tapio Keräsen kokemuksia}

\section {Toni Salmisen kokemuksia}

\section {Jari Salokankaan kokemuksia}

\section {Lauri Satokankaan kokemuksia}

\chapter{Yhteenveto}

Paatti-projekti määrittelu, suunnitteli ja 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.

Tietojärjestelmässä tutkija luo tutkimuksiinsa liittyen kuntoutettavista ryhmiä, joille hän määrittää omat kuntoutusohjelmat. Ne sisältävät aikataulutettuja tapahtumia, jotka sisältävät tehtäviä. Yksittäinen tehtävä voi sisältää tekstiä, kuvan, videon tai äänitallenteen. Tehtävät voivat olla joko kysymyksen tai ohjeen muodossa. 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 kuntoutettavien suoritteista saa myös siirrettyä toisiin järjestelmiin xls-tiedostoina.

Kuntoutettava saa mobiililaitteessa käyttämäänsä WWW-sovellukseen kuntoutusohjelmaan kuuluvia tapahtumia. Tapahtumat voivat olla esimerkiksi liikuntaharjoitteita, rentoutusharjoitteita tai lääkkeiden ottamisen muistutuksia. Tapahtumat voivat olla joko kerran suoritettavia aikataulutettuja tapahtumia tai vapaaehtoisia harjoitteita, joita voidaan suorittaa useita kertoja. Kuntoutettava voi myös nähdä sovelluksesta suorittamiansa tapahtumia.

Projektin tulokset luovutettiin tilaajalle kesäkuun alussa. Projekti onnistui tavoitteissan erinomaisesti. Kaikkia ensimmäisessä vaatimusmäärittelyssä suunniteltuja toimintoja ei ehditty toteuttaa, mutta ryhmä pystyi projektin aikana hyvin arvioimaan toimintojen toteutumisasteita ja muuttamaan vaatimusmäärittelyä sen mukaisesti. 

Tietojärjestelmän kehittäminen jatkuu projektin jälkeen tilaajan toimesta. Mahdollisesti Salokangas ja/tai Salminen jatkavat tietojärjestelmän kehitystä tilaajan kanssa.

Sovellusprojektin aikana projektiryhmä sai paljon kokemusta tietojärjestelmän suunnittelusta, määrittelystä ja toteutuksesta. Lisäksi ryhmä sai kattavan käsityksen ohjelmistoprojektissa työskentelystä sekä sen vaatimuksista ja työtavoista. Ryhmän jäsenet oppivat asioita käytännön tekemisen kautta sekä soveltivat aikaisemmilla kursseilla opittua teoriatietoa.


%LÄHTEET
\begin{thebibliography}{1}
%Katso kirjoitusohjeen luku 2.3 ja 2.4.

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

\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{ajanseurantalahde}
  Heinonen Petri, 
  ''Ajankäytönseurantasovellus'',
  saatavilla Excel-muodossa <URL: \texttt{http://appro.mit.jyu.fi/tools/ajankaytto/\\ajankaytonseuranta.xls}>,
  Jyväskylän yliopisto,
  informaatioteknologian tiedekunta, 
  viitattu 8.3.2012.

\bibitem{judoraportti}
  Huttunen Petri, Malinen Marko ja Wirpi Olli,
  ''Judo-projekti, Projektiraportti'',
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2011.

\bibitem{katselmointi1}
  Keränen Tapio,
  ''Paatti-projekti 1. koodikatselmoinnin muistio'',
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2012.

\bibitem{vaatimusmaarittely}
  Keränen Tapio, Salminen Toni, Salokangas Jari ja Satokangas Lauri,
  ''Paatti-projekti, Vaatimusmäärittely'',
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2012.

\bibitem{taburaportti}
  Kumpulainen Tuomas , Tuurihalme Kari, Valkama Outa ja Virtanen Tuomas,
  ''Tabu-projekti, Projektiraportti'',
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2009.

\bibitem{katselmointi2}
  Salokangas Jari,
  "Paatti-projekti 2. koodikatselmoinnin muistio",
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2012.

\bibitem{sovellusraportti}
  Salokangas Jari,
  ''Paatti-projekti, Sovellusraportti'',
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2012.

\bibitem{sovellusprojektienohje}
  Santanen Jukka-Pekka,
  ''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{bookofvaadin}
  Vaadin Ltd,
  ''Book of Vaadin - 4th Edition'',
  2012.
  
\end{thebibliography}

% Dokumentin  lopetus
\end{document}
