% .tex-tiedosto projektin dokumenttien latomiseksi.

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

\usepackage{paralist}
\usepackage{alltt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{enumitem}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes,shadows,arrows}

\setlist[enumerate]{leftmargin=2cm}


% Projektin nimi
\project{Kepler}

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

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

% Dokumentin nimi
\title{Projektisuunnitelma}

% Tekijät: huomaa aakkosjärjestys sukunimen mukaan
\author{Joonas Konki}{Anu Koskela}{Mikko Kuhno}{Henrik Paananen}{Atte Räty}
% Puhelinnumerot: tekijöitä vastaava järjestys!
\authorphones{044-9975150}{040-7255948}{040-9105675}{044-5885874}{040-5734898}
% Sähköpostiosoitteet: tekijöitä vastaava järestys!
\authoremails{joonas.konki@jyu.fi}{anu.k.koskela@student.jyu.fi}{mikko.kuhno@gmail.com}{henrik.j.paananen@student.jyu.fi}{atte.t.raty@student.jyu.fi}
% Etu- ja sukunimen alkukirjaimet: tekijöitä vastaava järjestys!
\authorinitials{JK}{AK}{MK}{HP}{AR}

% Tiivistelmä dokumentista: tämä ei siis ole tiivistelmä projektista,
% vaan tämän ko. dokumentin tarkoituksesta. 
\docabstract{Kepler-projekti kehittää keväällä 2015 Jyväskylän yliopiston fysiikan laitokselle WWW-sovelluksen oppilaslaboratorion töiden mittausvuorojen varaamiseen. Projektisuunnitelmassa kuvataan sovellusprojektin suunniteltua läpivientiä haluttujen tulosten sekä projektiryhmän resurssien, käytänteiden, tehtäväjaon, työmäärien, aikataulutuksen ja riskienhallinnan osalta.} 

% Tiivistelmä projektista
\projectabstract{Kepler-projekti kehittää Jyväskylän yliopiston fysiikan laitokselle WWW-sovelluksen oppilaslaboratorion töiden mittausvuorojen varaamiseen.}

% Avainsanat: dokumentin sisältöön liittyviä olennaisia asiasanoja: aakkosjärjestys, ensimmäinen sana isolla alkukirjaimella ja piste loppuun.
\keywords{Aikataulu, ajanvaraus, käytänteet, mittausvuoro, oppilaslaboratorio, projektiorganisaatio, projektin läpiviennin suunnitelma, prosessi, resurssit, riskienhallinta, taustaa, tavoitteet, tehtävät, tulokset, työmäärät, työnjako, varausjärjestelmä, WWW-sovellus.}

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

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

\begin{tabular}{|c|r|p{9.0cm}|p{1.5cm}|}
\hline
\textbf{Versio} & \textbf{Päivämäärä} & \textbf{Muutokset} & \textbf{Tekijät} \\
\hline \hline
0.0.1    &  6.2.2015  & Dokumentin pohja luotiin ja kirjoittaminen aloitettiin. & JK\\
\hline
0.0.2    &  12.2.2015  & Tulosten vastuuhenkilöt lisättiin ja kielikorjauksia tehtiin. & JK\\
\hline
0.0.3    &  18.2.2015  & Ohjelmointityökalut-lukua kirjoitettiin. & JK\\
\hline
0.0.4    &  19.2.2015  & Projektin suunnitellun aikataulun Gantt-kaavio lisättiin. & JK\\
\hline
0.0.5    &  23.2.2015  & Johdanto lisättiin. & JK\\
\hline
0.0.6    &  23.2.2015  & Johdantoa muokattiin. Taustaa ja tavoitteita kuvaavaa lukua kirjoitettiin. Tietojärjestelmän rakennekaavio lisättiin. & JK\\
\hline
0.0.7    &  27.2.2015  & Käytänteet-lukua kirjoitettiin lisää. Jäsenten esittelyjä lisättiin. & JK, MK, HP, AR\\
\hline
0.0.8    &  28.2.2015  & Käytänteet-lukua täydennettiin lähdekoodin, tes\-tauk\-sen ja versiohallinnan osalta. & JK\\
\hline
0.0.9    &  28.2.2015  & Käytänteet-lukua täydennettiin katselmoinnin ja tulosten koostamisen osalta. & JK\\
\hline
0.0.10    &  28.2.2015  & Tehtävien arvioidut työmäärät lisättiin. Jäsenten esittelyjä täydennettiin. & JK\\
\hline
0.0.11    &  1.3.2015  & Tehtävien arvioitujen työtuntien kuvaaja lisättiin. Pieniä korjauksia tehtiin. & JK\\
\hline
0.0.12   &  1.3.2015  & Prosessia ja aikataulua kuvaava luku kirjoitettiin. & JK\\
\hline
0.0.13   &  1.3.2015  & Riskejä ja niiden hallintaa kuvaavaa lukua aloitettiin. & JK\\
\hline
0.0.14   &  2.3.2015  & Riskejä ja niiden hallintaa kuvaavaa lukua kirjoitettiin lisää. & JK\\
\hline
0.0.15   &  5.3.2015  & Ohjaajan havaitsemia virheitä korjattiin. Kieli\-asua korjattiin ja useita lisäyksiä tehtiin. & JK\\
\hline
0.0.16   &  5.3.2015  & Anu Koskelan esittely lisättiin. Kohdealueen haas\-teel\-li\-suu\-den riskejä käsittelevä luku poistettiin tarpeettoman toiston välttämiseksi. & JK, AK\\
\hline
0.0.17   &  5.3.2015  & Yhteenveto-luku kirjoitettiin. & JK\\
\hline
0.1.0   &  6.3.2015  & Pieniä kieliasukorjauksia tehtiin. & JK\\
\hline
\end{tabular}

\begin{tabular}{|c|r|p{9.0cm}|p{1.5cm}|}
\hline
\textbf{Versio} & \textbf{Päivämäärä} & \textbf{Muutokset} & \textbf{Tekijät} \\
\hline \hline
0.1.1    &  9.3.2015  & Gantt-kaavio päivitettiin. & JK\\
\hline
0.1.2    &  11.3.2015  & Ohjaajan havaitsemia virheitä korjattiin. Gantt-kaavio päivitettiin. & JK\\
\hline
0.2.0    &  11.3.2015  & Versio julkistettiin projektiorganisaation tarkastettavaksi. & JK\\
\hline
0.2.1    &  20.3.2015  & Ohjaajan havaitsemia virheitä korjattiin. & JK\\
\hline
1.0.0    &  24.3.2015  & Valmis versio projektisuunnitelmasta. & JK\\
\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{5cm}p{6cm}p{3cm}}
~~~$\bullet$~~Sakari Juutinen & \texttt{sakari.juutinen@phys.jyu.fi} \\
~~~$\bullet$~~Panu Rahkila  & \texttt{panu.rahkila@jyu.fi} \\
\end{tabular}

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

\begin{tabular}{p{5cm}p{6cm}p{3cm}}
~~~$\bullet$~~Jukka-Pekka Santanen & \texttt{santanen@mit.jyu.fi} \\
~~~$\bullet$~~Petri Partanen & \texttt{petri.m.partanen@student.jyu.fi} \\
\end{tabular}

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

\begin{tabular}{p{5cm}p{9cm}}
~~~$\bullet$~~Sähköpostilistat: & \texttt{keplerit@korppi.jyu.fi} ja \newline \texttt{kepler\_opetus@korppi.jyu.fi} \\
~~~$\bullet$~~Sähköpostiarkistot: & \texttt{http://korppi.jyu.fi/kotka/servlet
/list-archive/keplerit/} ja \newline \texttt{http://korppi.jyu.fi/kotka/servlet
/list-archive/kepler\_opetus/} \\ 
~~~$\bullet$~~Työhuone: & Agora C226.4, puh. 040-3573826
\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}

Kepler-projekti kehittää kevään 2015 Sovellusprojekti-kurssilla WWW-sovelluksen Jyväskylän yliopiston fysiikan laitoksen oppilaslaboratorion laboratoriotöiden varausten hallintaan. Varausjärjestelmää tulevat käyttämään pääasiassa fysiikan perus- ja aineopintokurssien opiskelijat ja laboratoriovuoroja ohjaavat assistentit sekä varausjärjestelmän pääkäyttäjät. Kehitettävä sovellus tulee korvaamaan nykyisen WWW-selaimella käytettävän Brahe2007-varausjärjestelmän.

Käyttöliittymän ulkoasu halutaan päivittää uudessa varausjärjestelmässä. Lisäksi tehdyt varaukset halutaan näkymään opiskelijoiden Korppi-kalentereissa. Vanhasta varausjärjestelmästä puuttuva pääkäyttäjän näkymä ja sen toiminnot toteutetaan uudessa järjestelmässä. Lisäksi kartoitetaan muiden yliopiston laitosten varausjärjestelmätarpeet, sekä pyritään huomioimaan ne uuden järjestelmän kehittämisessä ja suunnittelussa.

Projektissa laaditaan vaatimusmäärittely~\cite{vaatimusmaaritelma}, jossa kuvataan toteutettavan sovelluksen käyttäjille ja muille tietojärjestelmille tarjoamat tiedot ja toiminnot. Muita projektissa laadittavia tärkeimpiä dokumentteja ovat projektiraportti ja sovellusraportti. Projektisuunnitelman laatimisessa on hyödynnetty Liikkuva-projektin ja Paatti-projektin projektisuunnitelmia~\cite{liikkuvasuunnitelma} ja \cite{paattisuunnitelma} sekä Sovellusprojektien ohjetta~\cite{sovellusprojektienohje}.

Luvussa 2 kuvataan dokumentissa käytettyjä termejä. Luvussa 3 kuvataan projektin taustoja ja tavoitteita, kehitettäviä tuloksia sekä projektiryhmän jäsenten oppimistavoitteita. Luvussa 4 esitellään projektiorganisaatio ja käytettävissä olevat resurssit. Luvussa 5 kuvataan projektin käytänteet sekä luvussa 6 projektin keskeisimmät tehtävät, arviot tehtävien työmääristä ja tulosten vastuuhenkilöt. Luvussa 7 esitellään projektissa noudatettavaa prosessia ja aikataulua. Luvussa 8 kuvataan projektin läpivientiin ja tuloksiin liittyvien riskien arviointia ja hallintaa.

\chapter{Termit}

Luvussa kuvataan projektin aihealueeseen, tietojärjestelmään ja toteutustekniikoihin liittyviä termejä.

\section{Aihealueen ja varausjärjestelmän termejä}
Projektin aihealueen ja kehitettävän varausjärjestelmän termejä ovat seuraavat:

\begin{Ventry}{Laboratorioselostus}
% Termilistat ladotaan Ventry-ympäristöllä, parametrina pisin termi,
% jolloin sisentyy oikein:
\item[Assistentti] on fysiikan laboratoriotöiden ohjaajasta käytetty nimitys. Hän on perus-, aine- tai syventäviin opintoihin liittyvien kurssien laboratoriotöitä laboratoriovuoron aikana ohjaava henkilö.
\item[Laboratorioselostus] on arvosteltava kirjallinen raportti, jossa on kuvattu mittausten toteutus, laskut virhearvioineen, ja niistä tehdyt johtopäätökset.
\item[Laboratoriotyö] on fysiikan kurssiin liittyvä oppilaslaboratoriossa tehtävä kokeellinen työ. Työhön sisältyy yleensä mittauksia varatun mittausvuoron aikana sekä kirjallisen raportin kirjoittaminen.
\item[Laboratoriovuoro] on yleensä neljän tunnin mittainen assistentin ohjaama tilaisuus, jossa laboratoriotyöhön liittyvät mittaukset voidaan suorittaa.
\item[Oppilaslaboratorio] on fysiikan laitoksen tiloissa toimiva yksikkö, jossa opiskelijat voivat suorittaa fysiikan kursseihin liittyviä laboratoriotöitä assistenttien ohjauksessa.
\item[Mittauslaitteisto] on yhdestä tai useammasta mittalaitteesta koostuva laitteisto, jolla laboratoriotyön mittaukset suoritetaan.
\item[Mittausryhmä] on opiskelijaryhmä, joka on varannut ajan laboratoriotyön mittaamiselle joltakin ohjatulta laboratoriovuorolta.
\item[Mittausvuoro] on opiskelijan yhdeltä laboratoriovuorolta varaama aika jonkin tietyn laboratoriotyön mittaamiseen. 
\item[Ohjaaja] on assistentin käyttäjäroolin nimi kehitettävässä varausjärjestelmässä.
\item[Opiskelija] on mittausvuoroja varaavan opiskelijan käyttäjäroolin nimi kehitettävässä varausjärjestelmässä.
\item[Pääkäyttäjä] on pääkäyttäjän käyttäjäroolin nimi kehitettävässä varausjärjestelmässä.
\item[Sovellus] on tietojärjestelmän osa, joka sisältää varausjärjestelmäsovelluksen ja käyttöliittymän sekä niiden väliset välityskerrokset.
\item[Tietojärjestelmä] on ihmisistä, tietojenkäsittelylaitteista, tiedonsiirtolaitteista ja sovelluksista koostuva järjestelmä, jonka tarkoituksena on tietojen käsittelyn avulla tehostaa, nopeuttaa tai helpottaa jotain toimintoa tai tehdä se mahdolliseksi.
\end{Ventry}

\section{Ohjelmistoja ja teknisiä termejä}
Ohjelmistoja ja teknisiä termejä ovat seuraavat:

\begin{Ventry}{GanttProject}
\item[Bootstrap] on WWW-dokumenttien ulkoasun muokkausta helpottava, HTML-kuvauskieltä ja CSS-tyylikieltä käyttävä kirjasto.
\item[CSS] on tyylikieli WWW-dokumenttien ulkoasun esittämiseen.
\item[Excel] on taulukkolaskentaohjelma, jonka toiminta perustuu taulukon soluihin.
\item[GanttProject] on ajan- ja resurssienhallintaohjelma projekteille.
\item[Git] on hajautettu versiohallintajärjestelmä.
\item[HTML5] on uusin versio WWW-dokumenttien HTML-kuvauskielestä.
\item[JavaScript] on WWW-sovelluksissa käytetty dynaamisesti tyypitetty komentosarjakieli.
\item[jQuery] on WWW-dokumenttien dynaamisen sisällön käsittelyä helpottava avoimen lähdekoodin lisenssin alainen JavaScript-kirjasto.
\item[Korppi] on Jyväskylän yliopiston opintotietojärjestelmä.
\item[\LaTeX] on tekstinladontaohjelmisto.
\item[Käyttöliittymä] on ohjelmiston osa, jonka kautta käyttäjä käyttää ohjelmistoa.
\item[Lähdekoodi] on tietokoneohjelman tekstimuotoinen ohjelmointikielinen listaus. Ennen varsinaista suorituskelpoista ohjelmaa lähdekoodi käännetään konekieliseksi ohjelmaksi.
\item[OAuth] on avoimen standardin mukainen protokolla käyttäjien autentikointiin.
\item[PDF] eli Portable Document Format on PostScript-kieleen pohjautuva ohjelmistoriippumaton ja siirrettävä tiedostoformaatti.
\item[Pyramid] on Python-ohjelmointikielellä toteutettu WWW-sovelluskehys.
\item[React] on WWW-dokumenttien dynaamisen sisällön käsittelyä helpottava avoimen lähdekoodin lisenssin alainen JavaScript-kirjasto.
\item[YouSource] on Git-versiohallintaohjelmistoa tukeva lähdekoodien julkistusjärjestelmä, jota käytetään WWW-käyttöliittymällä.
\end{Ventry}

\section{Projektin hallinnan termejä}
Projektin hallinnan termejä ovat seuraavat:

\begin{Ventry}{Käytettävyystestaus}
\item[Järjestelmätestaus] sisältää toimenpiteet, joilla varmistetaan kokonaan integroidun järjestelmän vastaavan sille asetettuja vaatimuksia.
\item[Katselmointi] on tulosten tarkastamismenetelmä, jossa tarkastetaan alunperin suunnitelluista tuloksista eroavat toteutukset ja esitetään parannusehdotuksia. 
\item[Käytettävyystestaus] sisältää toimenpiteet, joilla varmistetaan käyttöliittymän olevan helppokäyttöinen.
\item[Tilakatsaus] on projektipäällikön esittelemä viikottainen katsaus, jossa raportoidaan projektin eteneminen.
\end{Ventry}

\chapter{Taustaa ja kokonaistavoitteita}

Luvussa käsitellään Kepler-projektissa toteutettavalle sovellukselle ja muille tuloksille sekä projektiryhmän jäsenille asetettuja tavoitteita ja taustatietoja.


\section{Taustaa ja tuettava prosessi}

Projektin tilaaja on Jyväskylän yliopiston fysiikan laitos. Fysiikan laitoksen oppilaslaboratoriossa opiskelijat voivat toteuttaa kokeelliset mittaukset fysiikan perus- ja aineopintotasoisiin kursseihin liittyviin laboratoriotöihin. Mittaukset tehdään mittausvuoroilla joko yksin tai pareittain, riippuen kyseessä olevasta työstä. Laboratoriossa tehtäviä mittauksia ohjaavat oppilaslaboratorion assistentit, ja mittauksiin käytetään oppilaslaboratorion mittauslaitteistoja. Syventävien opintojen kursseihin liittyy laboratoriotöitä, joiden varaukset on hoidettu nykyisen varausjärjestelmän ulkopuolella.

Fysiikan laboratoriotyöt ovat tärkeä osa perus- ja aineopintotasoisten fysiikan kurssien sisältöä. Laboratoriotöissä luennoilla opetettua teoriaa pääsee soveltamaan käytäntöön. Jokaiseen kurssiin kuuluu vaihteleva määrä pakollisia laboratoriotöitä, joita voidaan valikoida annettujen vaihtoehtoisten töiden joukosta. Töiden mittauksissa käytetään monenlaisia mittauslaitteistoja, joilla voidaan mitata erilaisia fysikaalisia suureita. Mittausvuorot ovat yleensä neljän tunnin mittaisia. Mikäli mittaukset jäävät kesken, niitä voi tulla täydentämään jollekin toiselle vuorolle.

Mittaustuloksista ja laboratoriotöistä mittausryhmä tai yksittäinen oppilas kirjoittaa arvosteltavissa ''selostustöissä'' vuoron jälkeen kirjallisen raportin. Kyseisen laboratorioselostuksen laatiminen harjaannuttaa mm. tieteellisen asiatyylin kirjoittamisessa, mittauslaitteistojen epätarkkuuksien tuntemisessa ja virheanalyysissä. Osa töistä on nk. ''lapputöitä'', jotka sisältävät valmiin kaavakkeen, joka täytetään mittausvuoron aikana. Nämä työt on mahdollista suorittaa mittausvuoron aikana, ja hyväksyttää heti vuoron ohjaajalla.

Laboratoriovuorojen ohjaajat ovat kyseisiä fysiikan kurssien töitä suorittaneita opiskelijoita, tohtorikoulutettavia tai tutkijoita. Ohjaajista käytetään usein nimitystä oppilaslaboratorion assistentti tai ''assari''. Laboratoriovuoroa ohjaavan on osattava ohjata joko perusopinto- tai aineopintokurssien kaikki työt. Tästä syystä laboratoriovuorolle varattavia mittausvuoroja on pääasiassa kahdenlaisia: perusopintoihin ja aineopintoihin liittyvät mittausvuorot. Laboratoriovuorolla voi olla kerrallaan enintään kuusi ohjattavaa mittausvuoroa. Laboratoriovuorojen ohjaamisen lisäksi assistentti vastaa yhden tai useamman kirjallisen selostuksen tarkastamisesta ja arvostelusta. Oppilaslaboratorion johtaja päättää varattavista laboratoriovuoroista ja valitsee niille alustavasti ohjaajat, mutta vuoroja voi vapaasti vaihtaa sopimalla vaihdoista toisten ohjaajien kanssa. 

Kokonaisuutena oppilaslaboratorion toiminnan pyörittäminen on iso urakka. Kursseihin liittyviä laboratoriotöitä on paljon ja laboratoriovuoroja useita jokaisena arkipäivänä. Vuorot voivat olla ajallisesti päällekkäin tai lomittain. Opiskelijoiden aikataulut muuttuvat, ja varattuja mittausvuoroja täytyy pystyä muuttamaan joustavasti. Laboratoriovuorojen ohjaajia on parikymmentä ja vaihtuvuus melko suurta. Mittauslaitteistoja, työpisteitä ja resursseja on rajallinen määrä. Ainakin kaksi työtä käyttävät samaa mittauslaitteistoa, minkä vuoksi molempia töitä ei voi suorittaa samalla laboratoriovuorolla. Oppilaslaboratorion vuorojen hallintaan tarvitaan varausjärjestelmä em. tarpeiden ja rajoitusten huomioimisen helpottamiseksi.

\section{Kehitettävä varausjärjestelmä}

Kepler-projektissa kehitettävä tietojärjestelmä on WWW-sovellus oppilaslaboratorion laboratoriotöiden varausten hallintaan. Varausjärjestelmää tulevat käyttämään pääasiassa fysiikan perus- ja aineopintokurssien opiskelijat, laboratoriovuorojen ohjaajat sekä pääkäyttäjä. Kehitettävä sovellus tulee korvaamaan nykyisen WWW-selaimella käytettävän Brahe2007-varausjärjestelmän. Vanha järjestelmä on todettu perustoiminnoiltaan hyväksi, mutta se on vaikeasti ylläpidettävä. Lisäksi siitä puuttuu oleellinen pääkäyttäjän näkymä, jonka tulee sisältää toiminnot laboratoriovuorojen, mittauslaitteistojen, töiden ja assistenttien tietojen hallintaan. 

WWW-selaimella käytettävän varausjärjestelmän avulla opiskelijat voivat varata mittausvuoroja kursseihin liittyville laboratoriotöille. Varattuja mittausvuoroja voi perua vähintään kaksi arkipäivää ennen vuoron alkua. Varauksista ja peruutuksista lähetetään opiskelijalle sähköposti-ilmoitus. Ohjaajat voivat nähdä omalle ja muiden laboratoriovuoroille ilmoittautuneet opiskelijat. Varausjärjestelmän pääkäyttäjä voi lisätä, muokata ja poistaa laboratoriovuoroja, laboratoriotöitä, töihin kuuluvia resursseja eli mittauslaitteistoja ja ohjaajien käyttäjäoikeuksia.

Syventävien opintojen kurssien laboratoriotöiden varauksia ei ole aiemmin hoidettu varausjärjestelmän avulla. Kehitettävään varausjärjestelmään lisätään mahdollisuus syventävien kurssien laboratoriotöiden varaamiseen. Lisäksi uusi varausjärjestelmä pyritään suunnittelemaan ja toteuttamaan siten, että se soveltuisi mahdollisimman pienin muokkauksin yliopiston muiden laitosten varausjärjestelmäksi erilaisiin tarkoituksiin.

\section{Sovelluksen tavoitteet ja toiminnallisuudet}

Opiskelijan käyttöliittymän toimintokokonaisuuksia ovat
\begin{compactitem}
\item kirjautuminen järjestelmään JYU-tunnuksilla,
\item käyttöliittymän käyttämän kielen valitseminen englanninkieliseksi tai suomenkieliseksi,
\item autentikointi ja käyttäjätietojen haku yliopiston muista järjestelmistä,
\item ilmoitustaulun katseleminen,
\item mittausvuorojen varaaminen,
\item varattujen ja aiemmin tehtyjen mittausvuorojen selaaminen,
\item varattujen mittausvuorojen peruminen,
\item sähköposti-ilmoitukset varauksista ja peruutuksista,
\item varattavien mittausvuorojen kalenterinäkymä,
\item oman Korppi-kalenterin näyttö varausjärjestelmässä,
\item varattujen mittausvuorojen näkymän siirto omaan Korppi-kalenteriin,
\item mittausryhmien muodostaminen ja piilottaminen sekä
\item mittausryhmien poistaminen, jos mittausryhmällä ei ole varattuja mittausvuoroja.
\end{compactitem}

Ohjaajan käyttöliittymän toimintokokonaisuuksia ovat kaikki opiskelijan käyttöliittymän toiminnot ja lisäksi
\begin{compactitem}
\item lista omista laboratoriovuoroista,
\item lista omalle ja muiden ohjaajien laboratoriovuoroille varatuista töistä,
\item lista omalle ja muiden ohjaajien laboratoriovuoroille varauksen tehneiden opiskelijoiden tiedoista,
\item omalle laboratoriovuorolle saapumattomien opiskelijoiden merkintä,
\item lista muiden ohjaajien laboratoriovuoroille varatuista töistä sekä
\item laboratorioselostuksen arvostelulomake.
\end{compactitem}

Pääkäyttäjän käyttöliittymän toimintokokonaisuuksia ovat kaikki opiskelijan ja ohjaajan käyttöliittymän toiminnot ja lisäksi
\begin{compactitem}
\item ilmoitustaulun sisällön muokkaaminen,
\item laboratoriovuorojen historiatietojen selaaminen,
\item laboratoriovuorojen lisääminen, muokkaaminen ja poistaminen,
\item sähköposti-ilmoitus laboratoriovuoron poistamisesta mittausvuoron varanneille opiskelijoille ja ohjaajalle,
\item laboratoriotöiden lisääminen, muokkaaminen ja poistaminen,
\item laboratoriotöihin kuuluvien mittauslaitteistojen lisääminen, muokkaaminen ja poistaminen sekä
\item ohjaajien käyttöoikeuksien lisääminen ja poistaminen.
\end{compactitem}

Kehitettävän sovelluksen käyttöliittymän käyttäjille tarjoamat tiedot ja toiminnallisuudet on kuvattu tarkemmin vaatimusmäärittelyssä \cite{vaatimusmaaritelma}. Tietojärjestelmän kokonaisrakenne on esitetty kuvassa \ref{fig:rakenne}.
\begin{figure}[htp]
\centering
\scalebox{0.65}{\includegraphics[trim = 0mm 0mm 0mm 0mm, clip, angle=0]{rakenne.png} }
\caption{Tietojärjestelmän yleinen rakenne ja ulkopuoliset ohjelmistot.} \label{fig:rakenne}
\end{figure}

\newpage
\section{Projektin tulokset}\label{tulokset}

Sovelluksen ohella projektiryhmä toteuttaa seuraavat tulokset:
\begin{compactenum} %{Palaverien dokumentit}
\item[-]\textbf{Ajankäyttöraportti} sisältää ryhmän jäsenten kirjaamat työtunnit sekä niiden jakautumisen eri tehtäväkokonaisuuksille ja tehtäville.
\item[-]\textbf{Esittelymateriaalit} sisältävät väliesittelyiden ja loppuesittelyn materiaalit ja muistiot.
\item[-]\textbf{Haastattelut} sisältävät muiden laitosten varausjärjestelmätarpeiden selvittämiseksi tehtyjen haastattelujen muistiot ja yhteenvedon.
\item[-]\textbf{Itsearvioinnit} sisältävät ryhmän jäsenten arvioinnit omasta toiminnasta, onnistumisesta, kokemuksista ja oppimisesta.
\item[-]\textbf{Käyttöohje} sisältää ohjeita sovelluksen käyttämiseen.
\item[-]\textbf{Lisenssisitoumus} määrittää avoimen lähdekoodin ja avointen dokumenttien lisenssit, joiden puitteissa ryhmän jäsenet antavat muille oikeuksia projektin tulosten hyödyntämiseen.
\item[-]\textbf{Luokkadokumentit} sisältävät lähdekoodista generoidut luokkien kuvaukset.
\item[-]\textbf{Lähdekoodi} sisältää sovelluksen ohjelmointikielisen lähdekoodin kommentteineen.
\item[-]\textbf{Palaverien dokumentit} sisältävät pidettyjen kokouksien esityslistat, pöytäkirjat ja tilakatsaukset.
\item[-]\textbf{Projektiraportti} kuvaa projektin toteutunutta läpivientiä ja asetettujen tavoitteiden saavuttamista.
\item[-]\textbf{Projektisuunnitelma} kuvaa projektin suunniteltua läpivientiä mm. tavoitteiden, resurssien, käytänteiden, tehtäväjaon ja niiden arvioitujen työmäärien, prosessin ja aikataulun sekä riskien hallinnan osalta.
\item[-]\textbf{Sovellussuunnitelmat} sisältävät laaditut hahmotelmat käyttöliittymän, tietokannan ja rajapintojen osalta.
\item[-]\textbf{Sovellusraportti} kuvaa toteutetun sovelluksen rakenteen, toiminnot, puutteelliset ja heikot toteutusratkaisut sekä jatkokehitysideat.
\item[-]\textbf{Sähköpostiarkistot} sisältävät kaikki projektille perustetuilla sähköpostilistoilla projektiryhmän käymät keskustelut.
\item[-]\textbf{Testausraportit} sisältävät projektissa suoritettujen testauskertojen tulokset.
\item[-]\textbf{Testaussuunnitelmat} kuvaavat järjestelmätestauksen ja käytettävyystestauksen suunniteltua läpivientiä.
\item[-]\textbf{Vaatimusmäärittely} kuvaa kehitettävän sovelluksen toiminnalliset ja tekniset vaatimukset, tavoitteet ja rajoitteet.
\end{compactenum}

\newpage
\section{Jäsenten oppimistavoitteet}

Tietotekniikan laitoksen Sovellusprojekti-opintojakson oppimistavoitteena on projektimuotoisen työskentelyn oppiminen ja harjoitteleminen käytännössä. Opintojakson aikana projektiryhmän jäsenet saavat kattavan käsityksen ryhmätyöstä ohjelmiston projektimuotoisessa toteutuksessa sekä sen vaatimuksista ja työtavoista. Olennaisia tehtäväkokonaisuuksia ovat ohjelmiston kehitykseen liittyen määrittely, suunnittelu, toteutus ja testaus. Erityisesti projektipäällikkö oppii ajankäytön suunnittelua ja hallintaa, projektin hallintaa ja ryhmän johtamista.

Keskeistä sovellusprojektissa on oppiminen käytännön tekemisen kautta sekä aikaisemmilla opintojaksoilla opitun teoriatiedon soveltaminen käytäntöön. Jäsenet tulevat arvioimaan omaa ja muiden työskentelyä projektin lopussa.

Ryhmätyö- ja viestintätaitojen oppiminen on erittäin tärkeässä osassa projektissa. Jäsenet oppivat ja harjoittelevat viestimään sekä ryhmän sisällä että muille projektiorganisaatioon kuuluville ja sidosryhmille. Projektin aikana jäsenet oppivat kirjoittamaan sisällöltään ja kirjoitusasultaan täsmällisiä dokumentteja. Ryhmätyössä vaaditaan taitoja ongelmatilanteiden ratkaisemiseen ja ristiriitojen käsittelyyn. Ryhmän tulee toimia aktiivisesti ja omatoimisesti pitäen projektin tavoitteet ja loppukäyttäjien tarpeet mielessä. Aina tarvittaessa ja viipymättä on pyydettävä neuvoa muilta projektiryhmän jäseniltä ja ohjausta vastaavalta tai tekniseltä ohjaajalta.

Edellisten tavoitteiden lisäksi jäsenet ovat asettaneet seuraavia henkilökohtaisia tavoitteita:
\begin{compactenum}
\item[-] Joonas Konkin tavoitteena on oppia ja harjoitella projektin hallintaa, ajankäytön hallintaa, ryhmän johtamista, ohjelmistokehityksen menetelmiä ja prosessimalleja sekä WWW-sovellusten ohjelmointia.
\item[-] Anu Koskelan tavoitteena on oppia projektityöskentelyyn liittyviä taitoja sekä oppia käyttämään WWW-sovellusten kehittämisessä tarvittavia työkaluja.
\item[-] Mikko Kuhnon tavoitteena on oppia enemmän ohjelmointia ja varsinkin ryhmätyönä tehtävää ohjelmointia sekä sitä, miten varsinainen tilaustyö viedään alusta loppuun.
\item[-] Henrik Paanasen tavoitteena on saada kokemusta ryhmä- ja
projektimuotoisesta työskentelystä, oppia lisää WWW-sovelluskehyksien
käytöstä ja saada kokemusta Python-ohjelmointikielen käytöstä.
\item[-] Atte Rädyn tavoitteena on oppia projektimuotoista työtapaa
projektissa, joka oikeasti vastaa työelämän projekteja. Tämän lisäksi
hän haluaa parantaa ohjelmointitaitojaan. Atte haluaa myös oppia
tuntemaan tietojärjestelmiä paremmin yleisellä tasolla ja oppia siitä,
miten verkkosovellusten taustalla pyörivät palvelimet toimivat.
\end{compactenum}

\chapter{Organisaatio ja resurssit}

Luvussa esitellään projektiorganisaatio, sen käytettävissä olevat resurssit ja projektiin liittyvät oheiskurssit ja perehdytykset.


\section{Projektiorganisaatio}\label{projektiorganisaatio}

Kepler-projektiryhmään kuuluu viisi tietotekniikan laitoksen pääaineopiskelijaa: Joonas Konki, Anu Koskela, Mikko Kuhno, Henrik Paananen ja Atte Räty. Projektipäällikkönä toimii Joonas Konki ja varapäällikkönä Mikko Kuhno. 

Joonas Konki on fysiikan laitoksella kokeellisen ydinfysiikan jatko-opiskelija ja tietotekniikan laskennallisten tieteiden maisteriopiskelija. Joonas on suorittanut fysiikan laboratoriotyöt, toiminut muutaman vuoden oppilaslaboratorion ohjaajana, ja ylläpitää nykyisen laboratoriotöiden varausjärjestelmän tietokantaa. Ohjelmoinnista ja tietokantojen ylläpidosta hänelle on kertynyt kokemusta tietotekniikan ohjelmointikursseilta, mittausdatan analysointiin kirjoitetuista Java-koodeista, säteilyn vuorovaikutusten simuloinnista väliaineissa C++ -kirjastoilla, fysiikan laitoksen ydinspektroskopiaryhmän tiedonkeruujärjestelmän virtuaalisten ja fyysisten palvelimien ja tietoverkkojen ylläpidosta sekä omista pienimuotoisista ohjelmointiprojekteista mm. Java-, C-, C++ - ja Python-ohjelmointikielillä. Projektimuotoisesta työskentelystä ja projektien läpiviennistä hänellä on kokemusta osallistumisesta pitkäkestoisiin akateemisiin tutkimusprojekteihin, joissa suunnitellaan ja toteutetaan ydinspektroskopiaan liittyviä mittauslaitteistoja sekä tehdään kokeellisia mittauksia atomin ytimien rakenteen tutkimiseksi.

Anu Koskela on tietotekniikan maisteriopiskelija. Hänen maisteriopintojen suuntautumisvaihtoehtona on laskennalliset tieteet ja teolliset järjestelmät. Anu on myös kiinnostunut sovellusten käytettävyydestä ja on suorittanut muutamia aiheeseen liittyviä kursseja. Lisäksi hänen taustallaan on taideaineiden opintoja. Ohjelmointikokemusta Anulle on kertynyt opintoihin liittyvistä ohjelmointikursseista ja harjoitustöistä, joissa on käytetty mm. Java-, Processing-, LSL- ja Haskell-ohjelmointikieliä.

Mikko Kuhno on Mikkelin Ammattikorkeakoulusta valmistunut ja tammikuussa 2014 maisterivaiheeseen siirtynyt tietotekniikan insinööri. Ammattikorkeakoulussa Mikon opiskelu painottui 3d-mallintamisen puolelle. Ammattikorkeakoulun puolella opiskellaan myös johtamistaitoja, joten projektin läpiviennin hallinta ja sen ohjaaminen haluttuun lopputulokseen ovat hänelle kohtuullisen tuttua. Ohjelmointitaustana hänellä on lähinnä pelimoottorit, joissa on käytetty C\#-ohjelmointikieltä. Lisäksi yliopistolla käydyillä kursseilla \textit{Ohjelmointi 2} ja \textit{SOA} hän on tutustunut Javaan ja Pythoniin.

Henrik Paananen on tietotekniikan laitoksen Pelit ja pelillisyys
-maisteriohjelman opiskelija. Hänen erityisosaamisenaan on
reaaliaikainen tietokonegrafiikka ja pelimoottoriarkkitehtuuri.
Hän on myös kiinnostunut kääntäjätekniikasta ja WWW-sovelluksista.
Ohjelmointikokemusta Paananen on kartuttanut lukuisissa omissa
projekteissaan, kurssien harjoitustöissä ja työharjoittelussa.
Paananen on käynyt WWW-sovelluskurssin, jolla hankituista
WWW-sovelluksien perusteista on etua sovelluksen toteutuksessa.

Atte Räty on tietotekniikan maisterivaiheen opiskelija. Atte on ollut aiemmin
mukana useilla projektiopintojaksoilla, kuten mobiiliapplikaatio, tietotekniikan
aineopintojen projekti ja monitieteellinen työelämäprojekti.
Ohjelmoinnista hänellä on kokemusta C\#:lla, Javalla, Pythonilla ja
JavaScriptillä. Tämän lisäksi hänellä on kokemusta Linux-komentorivillä työskentelystä. Hän on opintojensa aikana toteuttanut joitakin pieniä verkkosovelluksia.

Tilaajan edustajina toimivat Jyväskylän yliopiston fysiikan laitokselta tutkijatohtori Panu Rahkila ja oppilaslaboratorion johtajana toimiva yliopistonlehtori Sakari Juutinen. Jyväskylän yliopiston tietotekniikan laitokselta projektin vastaavana ohjaajana toimii Jukka-Pekka Santanen. Projektin teknisenä ohjaajana toimii Petri Partanen. Jyväskylän yliopiston IT-palvelut (Agoran ATK-lähituki) vastaa ryhmän käytössä olevista tietokonelaitteista ja ohjelmistoista.

Projektiin kuuluvalla viestintäkurssilla kirjoitusviestinnän opettajana toimii Juha Jalkanen ja puheviestinnän opettajana Hanna Kivimäki. Projektin väliesittelyt pidetään puheviestinnän osuuden yhteydessä.


\section{Projektin tilat, laitteet ja verkkolevyt}

Tietotekniikan laitos tarjoaa ryhmälle projektin ajaksi käyttöön lukittavan projektihuoneen AgC226.4. Projektin jäsenille annetaan projektihuoneeseen avaimet ja lisäksi RFID-avain, jolla pääsee Agoran sähkölukolla varustetuista ovista opiskelijoille tarkoitettuihin julkisiin tiloihin 5:30--23:00 välisinä aikoina. Projektiryhmän jäsenillä on käytössään viisi Windows 7 -käyttöjärjestelmällä varustettua tietokonetta ja toimistotarvikkeita, kuten nitoja, rei'itin, valkotaulu, valkotaulutusseja, valkotaulujen puhdistusnestettä, taulun pyyhintään sieni, kuulakärkikyniä ja paperia.

Projektiryhmällä on mahdollisuus varata kokoustila Ag C226.1 projektipalavereita varten. Tilassa on käytettävissä Windows 7 -tietokone ja videoprojektori esityksiä varten.

Sovellusprojektien avotilassa ryhmän käytettävissä on yliopiston ylläpitämä monitoimitulostin. Ryhmän jäsenet pystyvät tulostamaan projektiin liittyvät dokumentit ilman heille henkilökohtaisesti aiheutuvia lisämaksuja. Ryhmällä on mahdollisuus varata käyttöönsä videoprojektori, kannettava Windows PC, Olympuksen digitaalisanelin, MiniDisc-tallennin ja toimivuudeltaan epävarma MP3-tallennin. Aiemmille sovellusprojekteille hankitut satakunta kirjaa~\cite{projektikirjat} ovat myös käytettävissä. Projektiryhmän jäsenet voivat vapaasti käyttää omia laitteitaan.

Projektilla on käytössään ryhmän jäsenille yhteinen verkkolevy ja WWW-si\-vus\-to projektin tiedostojen säilytystä varten. Verkkolevy on hakemistossa \texttt{//sovpa7.cc.jyu.fi/kepler} ja julkinen WWW-sivusto osoitteessa \newline \texttt{http://sovellusprojektit.it.jyu.fi/kepler}.

Projektiryhmällä on käytettävissä projektihuoneen vieressä taukotila, jossa on kahvinkeitin, vedenkeitin ja mikroaaltouuni. Tietotekniikan laitos tarjoaa ryhmälle projektin ajaksi kahvit, kahvimaidot, teet ja mehut. Mikäli edellä mainituista tarvikkeista ilmenee puutteita, niistä tulee ilmoittaa projektin vastaavalle ohjaajalle.


\section{Dokumentointityökalut}

Projektisuunnitelma, vaatimusmäärittely, projektiraportti, projektipalaverien pöytäkirjat, haastattelujen yhteenvetoraportti ja muut projektin läpivientiin liittyvät dokumentit laaditaan \LaTeX -tekstinladontaohjelmistolla suomen kielellä. Sovellusraportti laaditaan englannin kielellä myös \LaTeX illa. Tarvittavat li\-sä\-e\-si\-tys\-gra\-fii\-kat, kuten tilakatsaukset, laaditaan \LaTeX illa käyttäen Beamer-e\-si\-tys\-gra\-fiik\-ka\-pa\-ket\-tia. Projektin läpiviennin aikataulusuunnitelma ja toteutunut ai\-ka\-tau\-lu laaditaan GanttProject-ohjelmalla sekä tehtävätaulukko LibreOfficen Calc-tau\-luk\-ko\-las\-ken\-ta\-oh\-jel\-mal\-la. Kaikki dokumentit pyritään julkistamaan myös pdf-muodossa. Kaikki muut yksinkertaiset ja lyhyet tekstidokumentit, kuten esityslistat, laaditaan raakatekstimuodossa.

Ajankäytönseurantaan ryhmällä on käytössään Petri Heinosen sovellusprojekteille toteuttama Excel-sovellus \cite{ajanseurantalahde}. Tämän lisäksi kyseisestä ajankäytönseurantapohjasta saadaan tilakatsauksiin vaadittavat graafit.

\section{Ohjelmointityökalut}

Sovelluksen kehitykseen käytetään Pyramid-ohjelmistokehystä. Pää\-a\-si\-al\-li\-se\-na ohjelmointikielenä käytetään Pythonia. Kehitysvaiheessa Python-kielistä SQLAlchemy\--työkalua käytetään tietokantarakenteen automaattiseen muodostamiseen. Tietokannanhallintajärjestelmänä käytetään SQLitea tai MySQL-ohjelmistoa. WWW-käyttöliittymässä käytetään HTML5-, CSS- ja JavaScript-ohjelmointikieliä ja sopivaksi katsottuja apukirjastoja, kuten jQuery, React ja Bootstrap. Sovelluksen lähdekoodin ryhmä sijoittaa sovittavan avoimen lähdekoodin lisenssin alaisuuteen.

\section{Versiohallinta}

Projektiryhmä käyttää lähdekoodin versioiden hallintaan Git-ver\-sio\-hal\-lin\-ta\-oh\-jel\-mis\-to\-a ja YouSource-julkistusjärjestelmää. Dokumenttien versioiden hallintaan käytetään myös YouSource-järjestelmää. YouSource-järjestelmään perustetaan projektiryhmän jäsenille   oma ryhmä (team), projekti ja tarvittavat tietovarastot.

\section{Luennot ja perehdytykset}

Projektin ohella ryhmän jäsenet suorittavat kaksi oheiskurssia. Viestintäkurssiin \textit{Projektiviestintä IT-alalla} kuuluvat kirjoitus- ja puheviestinnän luennot ja ryhmätyöt sekä viestintäkurssilla käsiteltävien dokumenttien kirjoitusasun ja rakenteen muokkauksen työtunnit. Projektin aikana järjestetään kaksi väliesittelyä, jotka ovat osa viestintäkurssia. 

Kurssiin \textit{Sovellusprojektin hallintaa, viestintää ja työkaluja} sisältyvät seuraavat opetustapahtumat:
\begin{compactitem}
\item aloitusluento (3h),
\item vaatimusmäärittely (2h),
\item versiohallinta (2h),
\item projektin johtaminen ja hallinta (4h),
\item käytettävyyspäivä (6h) sekä
\item tekijänoikeus ja sopimukset (3h).
\end{compactitem}

Oheiskurssien työtunnit kirjataan omalle tehtäväkokonaisuudelle työajanseurantasovelluksessa \cite{ajanseurantalahde}.

%
%    Käytänteet
%
\chapter{Käytänteet} \label{kaytanteet}

Luvussa käydään läpi projektin käytänteitä. Käytänteiden noudattaminen mahdollistaa projektin läpiviennin aikataulussaan, asetettujen tavoitteiden saavuttamisen ja laadukkaiden tulosten toteutumisen.

\section{Palaverit} \label{kaytanteet1}

Projektiorganisaatio pyrkii alkuvaiheessa pitämään yhteisen palaverin vähintään kerran viikossa. Jos käsiteltäviä asioita on niin vähän, ettei palaverin pitäminen ole tarpeellista tai projektiorganisaatioon kuuluvilla on muita sitoumuksia, niin palavereja voidaan järjestää harvemmin. Projektin edetessä sovelluskehityksen vaiheeseen palavereja voidaan pitää harvemmin, ja keskittyä enemmän kehitystyöhön. Seuraavan palaverin ajankohta päätetään aina edellisessä palaverissa. 

Tulevasta palaverista toimitetaan esityslista projektiorganisaatiolle vähintään vuorokausi etukäteen, jotta osallistujien on mahdollista valmistautua palaveriin kunnolla. Palaveri katsotaan päätösvaltaiseksi silloin, kun paikalla on vähintään yksi projektiryhmän jäsen, tilaajan edustaja ja projektin vastaava ohjaaja Jukka-Pekka Santanen.

Palavereissa käsitellään edellisen palaverin jälkeen tapahtuneita asioita, jotka ovat vaikuttaneet projektin etenemiseen. Lisäksi palavereissa käsitellään tulevia toimenpiteitä ja tarvittavat päätökset. Projektin läpivientiin liittyvät käytänteet sovitaan yhteisissä palavereissa. Jokaisessa palaverissa käydään läpi edellisen palaverin pöytäkirjaan merkityt päätökset sekä osallistujille sovitut toimenpiteet ja näiden tilat.

Projektipäällikkö esittää palavereissa lyhyen tilakatsauksen, jossa kuvataan projektin tehtävien etenemistä edellisen palaverin jälkeen, mahdollisia kohdattuja ongelmia ja tulevia toimenpiteitä. Tilakatsauksessa esitellään lisäksi, miten projektiryhmän jäsenten käyttämät työtunnit jakautuvat projektin tehtäväkokonaisuuksiin sekä ryhmän jäsenten viikottaiset projektiin käytetyt tuntimäärät.

Palavereissa keskustellaan toteutettavan sovelluksen ominaisuuksista, tavoitteista ja vaatimuksista sekä niiden toteutusratkaisuista ja kehitystyökaluista. Palavereissa projektiryhmä esittää sovelluksen prototyyppejä ja demonstraatioita, esimerkiksi käyttöliittymää ja sovelluksen toimintaa.

Palaverin puheenjohtajana ja sihteerinä toimivat vuorollaan jokainen projektiryhmän jäsen. Tehtäviä kierrätetään jäsenten kesken sovitussa järjestyksessä. Kunkin palaverin puheenjohtaja ja sihteeri pyritään mahdollisuuksien mukaan sopimaan etukäteen, mutta valinnasta päätetään jokaisen palaverin alussa. 

Puheenjohtaja johtaa palaverin keskustelua ja huolehtii siitä, että palaveri etenee esityslistan mukaisesti. Sihteeri laatii palaverin pöytäkirjan, jonka puheenjohtaja tarkastaa ennen sen julkistamista projektiorganisaatiolle ja muille mahdollisille palaveriin osallistuneille. 
Jokaisen ryhmän jäsenen laatima ensimmäinen pöytäkirja toimitetaan lisäksi vastaavan ohjaajan ja kirjoitusviestinnän opettajan Juha Jalkasen tarkastettavaksi ennen projektiorganisaatiolle julkistamista. Edellisen palaverin pöytäkirja hyväksytetään seuraavassa palaverissa, jolloin siihen voidaan tarvittaessa esittää muutoksia.

\section{Tiedotus} \label{kaytanteet2}

Projektin tiedotuksesta projektiorganisaatiolle vastaa pääasiassa projektipäällikkö. Ryhmän jäsenet kommunikoivat ensisijaisesti projektipäällikön kanssa, mutta voivat omilla vastuualueillaan vapaasti välittää oleelliset tiedotettavat asiat koko projektiorganisaatiolle. Projektipäällikkö toimittaa tilakatsauksen sähköpostilla projektiorganisaatiolle sellaisten viikkojen aikana, jolloin ei pidetä palaveria.

Projektiorganisaation tiedotusta varten on luotu kaksi erillistä sähköpostilistaa. Sähköpostilistojen sähköpostiarkistot eivät ole julkisia, vaan niihin vaaditaan kirjautuminen JYU-tunnuksilla.

Pääasiallista sähköpostilistaa \texttt{keplerit@korppi.jyu.fi} käytetään projektiryhmän jäsenten, ohjaajien ja tilaajan edustajien tiedotukseen. Sen jakelulistalle kuuluvat kaikki projektiorganisaation edustajat. Sen sähköpostiarkisto on osoitteessa 
\texttt{https://korppi.jyu.fi/kotka/servlet/list-archive/keplerit}.

Projektiryhmän jäsenten ja ohjaajien käyttöön on perustettu sähköpostilista \\
\texttt{kepler\_opetus@korppi.jyu.fi}. Sen sähköpostiarkisto on osoitteessa \\
\texttt{https://korppi.jyu.fi/kotka/servlet/list-archive/kepler\_opetus/}.
Sähköpostilistalla käsitellään sellaisia asioita, jotka eivät ole merkityksellisiä tilaajalle, karsien siten heille tarpeetonta sähköpostiliikennettä. Tällaisia asioita ovat esimerkiksi projektiryhmän sisäiset palaverit sekä erilaiset koulutukseen ja ohjelmiston toteutusratkaisuihin liittyvät asiat ja kohdatut ongelmat.

\section{Tiedostojen nimeäminen}

Projektissa toteutettavan sovelluksen lähdekooditiedostojen nimeämisessä käytetään Python-, HTML- ja JavaScript-ohjelmointikielten yleisiä käytänteitä. Tiedostojen ja hakemistojen nimet kirjoitetaan englannin kielellä.  Hakemistorakenteessa noudatetaan Pyramid-kehyksellä toteutetuille ohjelmille tyypillistä rakennetta. Tiedostojen ja hakemistojen nimet kirjoitetaan pienillä kirjaimilla ja välilyöntimerkin sijasta käytetään alaviivaa (\_).

Dokumentit nimetään niiden sisältöä kuvaavilla nimillä ja dokumentissa käytetyn kielen mukaisesti. Lisäksi jokaiseen julkistettuun dokumenttiin lisätään juokseva versionumero luvussa~\ref{versiohallinta} esitettyjen käytänteiden mukaisesti. Esimerkiksi projektisuunnitelman eri versiot nimetään \\ \texttt{kepler\_projektisuunnitelma\_[nu\-me\-ro].[nu\-me\-ro].[nu\-me\-ro].pdf}.

\section{Hakemistorakenne} \label{hakemistorakenne}

Projektin tuottamat tulokset tallennetaan CD-levylle ja projektin julkiseen WWW-hakemistoon päähakemiston alle seuraavan \textbf{hakemistorakenteen} mukaisesti:

\begin{verbatim}  
  application
  |-- class_documentation
  |-- source_code
  |-- user_guide
  |
  dokumentit
  |-- ajankaytto
  |-- application_report
  |-- esittelyt
  |-- haastattelut
  |-- itsearvioinnit
  |-- lisenssisitoumus
  |-- projektiraportti
  |-- projektisuunnitelma
  |-- sovellussuunnitelmat
  |-- vaatimusmaarittely
  | 
  palaverit
  |-- esityslistat
  |-- katselmoinnit
  |-- poytakirjat
  |-- tilakatsaukset
  |
  sahkopostiarkistot
  |-- keplerit
  |-- kepler_opetus
  |
  testaus
  |-- testausraportit
  |-- testaussuunnitelmat
\end{verbatim}


\section{Lähdekoodi}

Sovelluksen lähdekoodin kommentit kirjoitetaan englannin kielellä. Aliohjelmien, luokkien ja muuttujien nimeämiseen käytetään selkeitä ja kuvaavia nimiä, jotka ovat englanninkielisiä. Lähdekoodin kirjoittamisessa noudatetaan yleisiä Python-ohjelmointikielelle suositeltuja käytänteitä~\cite{python-pep-tyyli} sekä JavaScript-, HTML- ja CSS-ohjelmointikielten yleisiä hyviä käytänteitä~\cite{muut-tyylit}. Lähdekoodin kommentoinnissa seurataan niin ikään yleisiä Python-ohjelmointikielen käytänteitä~\cite{python-pep-kommentit} ja \cite{google-python-kommentit} siten, että luokkadokumentaation tekeminen Doxygen-dokumentaatiogeneraattorilla on mahdollista.

Seuraava esimerkki havainnollistaa edellä esitettyjen hyvien käytänteiden mukaista Python-ohjelmakoodia.
{\small
\begin{verbatim}
# -*- coding: utf-8 -*-

"""
reservation.py is a domain model to handle Reservation objects
"""

__author__  = "Joonas Konki \n Anu Koskela \n Mikko Kuhno \n \
               Henrik Paananen \n Atte Räty"
__date__    = "28.2.2015"
__version__ = "0.0.1"
__licence__ = "BSD 3-clause, see LICENSE for more details."
__copyright__ = "2015 Kepler project authors"

import sqlalchemy

from sqlalchemy import (
    Column,
    Integer,
    String,
    Boolean
    )

class Reservation(Base):
    """ The SQLAlchemy declarative model class for a Reservation 
        object holds information about the user who made 
        the reservation and about the available shift where 
        the reservation was made.
    """
    __tablename__ = 'reservations'
    id = Column(Integer, primary_key=True)
    shift_id = Column(Integer, nullable=False)
    user_id = Column(String, nullable=False)
    was_present = Column(Boolean, nullable=False, default=True)

    @classmethod
    def get_user_reservations(cls, user_id):
        """ Gets all the reservations of a user with the given 
            user ID. 
            
            Args:
                user_id (int): Specifies the user ID of the user.
                
            Return: 
                The query object that returns all 
                the reservations of the given user.
        """
        return DBSession.query(User).filter(User.id == id)
\end{verbatim}
}

\section{Testaus}

Ohjelmoija suorittaa kirjoittamalleen lähdekoodille aina tarvittavat yksikkötestaukset, mutta yksikkötestejä ei laadita osaksi lähdekoodia. Sovellusta koekäyttävät tilaajan edustajat ja ohjaajat. Lisäksi sen versioista pyydetään palautetta haastatelluilta muiden laitosten edustajilta. Toteutetun sovelluksen toiminnan laadunvarmistus tapahtuu käytettävyys- ja järjestelmätestauksella. Käytettävyys- ja järjestelmätestauskertoja järjestetään molempia ainakin kerran.

Sovelluksen käyttöliittymää testataan koko ajan toteutuksen aikana kaikkien jäsenten toimesta, jotta varmistutaan sen lopullisen toiminnan laadusta. Sovelluksen käytettävyydestä halutaan mahdollisimman yksinkertainen ja käyttäjäystävällinen. Käytettävyystestauksen vastuuhenkilö laatii testaussuunnitelmat varsinaisille testauskerroille ja testausraportit testauskertojen suorittamisen jälkeen. Suunnitelma sisältää valittujen käyttäjien suoritettavat toimenpiteet, sekä raportti kuvaa testin aikana ja sen jälkeen kirjatut huomiot käyttäjäkokemuksesta.

Järjestelmätestauksessa testataan sovelluksen toimintoja testitapauksilla, jotka on tarkemmin määritelty vastuuhenkilön laatimassa testaussuunnitelmassa. Vastuuhenkilö laatii testaussuunnitelmat ennen testauskertojen suorittamista, vastaa testauskertojen suorittamisesta ja laatii testausraportit testauskertojen jälkeen. Testausraportissa kuvataan testauskerran aikana tehdyt huomiot puutteista, tuloksista ja mahdollisista virhetilanteista.


\section{Versiohallinta ja -numerointi} \label{versiohallinta}

Projektiryhmä käyttää sovelluksen lähdekoodin versiohallintaan Git-ver\-sio\-hal\-lin\-ta\-oh\-jel\-mis\-to\-a ja YouSource-julkistusjärjestelmää. Dokumenttien ver\-sio\-hal\-lin\-taan käytetään myös YouSource-järjestelmää. YouSource-järjestelmään perustetaan projektiryhmän jäsenille oma ryhmä (team), projekti ja tarvittavat tietovarastot. Tilaajan edustajille ja ohjaajille järjestetään pääsy lähdekoodiin. Kaikki projektiin ja sovellukseen liittyvät dokumentit tullaan säilyttämään lisäksi projektin verkkolevyllä ja julkisella WWW-sivulla.

Dokumenttien julkistetuissa versioissa käytetään kolmiportaista versionumerointia. Ryhmän sisäisiä luonnoksia numeroidaan pienimmällä merkitsevällä numerolla (i.j.1), ja kunkin uuden julkistetun version kohdalla kasvatetaan numeroa yhdellä. Projektiorganisaatiolle julkistettuja versioita numeroidaan toisella merkitsevällä numerolla (i.1.j) ja projektiorganisaation hyväksymiä versioita ensimmäisellä merkitsevällä numerolla (1.i.j). Väliversioita voi olla yli kymmenen, kuten esimerkiksi ensimmäisen projektiorganisaatiolle julkistetun jälkeisessä neljännessätoista ryhmän sisäisessä versiossa 0.1.14. Ensimmäinen koko projektiorganisaation hyväksymä versio on 1.0.0, ja tätä seuraavien hyväksyttyjen versioiden numerointia kasvatetaan toisen merkitsevän numeron osalta.

\section{Katselmoinnit ja tulosten hyväksyminen}

Projektissa toteutettavan sovelluksen lähdekoodi katselmoidaan vähintään kaksi kertaa projektin aikana. Katselmoinneissa projektin tekninen ohjaaja kommentoi lähdekoodia sekä antaa vinkkejä ja ehdotuksia sen parantamiseen. Katselmointiin osallistuvat tekninen ohjaaja ja lisäksi koko projektiryhmä. Katselmoinnissa tehdyt havainnot kirjataan muistioksi. 

Tekninen ohjaaja hyväksyy lähdekoodin viimeisessä katselmoinnissa tai sen jälkeen sähköpostitse. Vastaava ohjaaja ja tilaajan edustajat hyväksyvät keskeisimmät laaditut dokumentit, joita ovat ainakin projektisuunnitelma, projektiraportti, sovellusraportti ja vaatimusmäärittely.

\section{Tulosten koostaminen ja toimittaminen}

Projektiryhmän jäsenet kokoavat luvussa~\ref{tulokset} kuvatut projektin tulokset sekä tulostettuina projektikansioon että tallennettuina CD-levylle luvussa~\ref{hakemistorakenne} kuvatun hakemistorakenteen mukaisesti. CD-levy koostetaan vasta sitten, kun kaikki projektissa laaditut tulokset on hyväksytty. Tulokset toimitetaan tilaajalle CD-levyllä tai erikseen sovitussa tallennusmuodossa. Tietotekniikan laitokselle toimitetaan projektikansio ja koostettu CD-levy, jotka sijoitetaan projektitilan kokoushuoneessa sijaitsevaan hyllyyn. Laitoksen arkistoon toimitetaan lisäksi yksi CD-levy.

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

Luvussa määritellään ryhmän jäsenistä projektipäällikkö ja varapäällikkö, heidän tehtävänsä sekä projektiryhmässä toteutettavien tulosten vastuuhenkilöt. Lisäksi esitellään tehtäväkokonaisuuksien jakautuminen tehtäviin sekä eri tehtävien työmäärät ja työnjako.


\section{Vastuualueet tulosten osalta}

Projektipäällikkö on Joonas Konki, ja varapäällikkö on Mikko Kuhno. Mikäli projektipäällikkö ei pysty hoitamaan jotain hänelle kuuluvaa tehtävää poissaolon tai kiireiden takia, niin varapäällikkö hoitaa ko. tehtävää siihen asti, kunnes projektipäällikkö voi ottaa tehtävän hoitaakseen.

Projektipäällikön vastuulle kuuluvat luonnollisesti projektin suunnitteleminen ja hallinta, projektin tilan seuraaminen ja raportointi, jäsenten ajankäytön seuranta, tiedotus ja tehtävienjako. Projektipäällikkö vastaa käytännössä projektisuunnitelman ja -raportin laatimisesta.

Projektiryhmässä toteutettavat keskeisimmät tulokset ja vastuuhenkilöt on esitetty taulukossa \ref{vastuualueet}. Vastuuhenkilö ei ole vastuussa koko tuloksen toteuttamisesta itsenäisesti, mutta vastaa sen laadusta ja valmistumisesta sovitussa aikataulussa. Vastuuhenkilö toimittaa tuloksen tarkastettavaksi ja vastaa tarpeellisten muokkausten toteutuksesta. Vastuuhenkilö tiedottaa projektiorganisaatiota vastuullaan olevien tulosten valmistumisesta.
\begin{center}
\begin{table}[!h]
\centering
\begin{tabular}{|  l | l |}
\hline
\textbf{Tulos} & \textbf{Vastuuhenkilö}\\
\hline \hline
Projektisuunnitelma    & Joonas Konki\\
\hline
Projektiraportti       & Joonas Konki\\
\hline
Vaatimusmäärittely     & Henrik Paananen\\
\hline
Kalenterinäkymä       & Mikko Kuhno\\
\hline
Käyttöliittymä     & Mikko Kuhno\\
\hline
Käyttäjäroolit ja niiden toiminnot & Henrik Paananen\\
\hline
Mittausryhmät ja arvostelurobotti & Anu Koskela\\
\hline
Rajapinnat ja autentikointi    & Atte Räty\\
\hline
Tietokanta ja domain-luokat    & Henrik Paananen\\
\hline
Sovellusraportti       & Atte Räty\\
\hline
Järjestelmätestaus       & Mikko Kuhno\\
\hline
Käytettävyystestaus       & Anu Koskela\\
\hline
\end{tabular}
\caption{Toteutettavat tulokset ja niiden vastuuhenkilöt.} \label{vastuualueet}
\end{table}
\end{center}

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

Projektiin ja oheiskursseihin käytettävät työtunnit ja työnjakoa tehtäväkokonaisuuksittain on arvioitu kuvassa~\ref{fig:piirakkakaavio} ja taulukossa~\ref{tyomaarat}. Tehtävät on jaettu ottamalla huomioon projektiryhmän jäsenten vastuualueet sekä suunnittelun ja toteutuksen osalta erityisosaaminen. Työnjako on pyritty tekemään siten, että kokonaistuntimäärä jakautuu tasaisesti ryhmän jäsenten kesken. Laadittavien dokumenttien työmäärien arviointi perustuu edellisten sovellusprojektien toteutuneisiin työtunteihin. Suunnittelun ja toteutuksen tehtäväkokonaisuuksien jakautuminen tehtäviin on tehty alustavan vaatimusmäärittelyn ja esitutkimusvaiheessa laadittujen ajatuskarttojen perusteella. Suunnittelun, toteutuksen ja muiden tehtävien työmäärät on arvioitu tehtävien haastavuuden sekä ryhmän jäsenten aiemman osaamisen perusteella.

Ryhmän tavoitteena on käyttää Sovellusprojektiin noin 20 työtuntia viikossa. Alustavan työtuntien arvioinnin mukaan Sovellusprojektin läpivientiin tarvitaan taulukon~\ref{tyomaarat} mukaan yhteensä noin 1290 tuntia. Projektin ohella suoritettaviin oheiskursseihin on laskettu työtunnit erikseen.
\begin{table}[htp]
 \centering % trim : vasen, ala, oikea, ylä ?
 \scalebox{0.8}{\includegraphics[trim = 25mm 29mm 25mm 10mm, clip, angle=0]{tyotunnit.pdf} }
 \caption{Tehtävien arvioidut työmäärät tunteina.} \label{tyomaarat}
\end{table}
\begin{figure}[ht]
\centering
\scalebox{0.65}{\includegraphics[trim = 0mm 10mm 0mm 0mm, clip, angle=0]{piirakka.png} }
\caption{Työtuntien arvioitu jakautuminen tehtäväkokonaisuuksittain.} \label{fig:piirakkakaavio}
\end{figure}

%
%    Prosessi ja aikataulu
%
\chapter{Prosessi ja aikataulu}

Luvussa kuvataan projektin läpiviennissä käytettävää prosessia ja suunniteltua aikataulua.

\section{Prosessi}

Projektin ensimmäisessä vaiheessa kartoitetaan toteutettavan ohjelman vaatimuksia, minkä perusteella laaditaan vaatimusmäärittely, käyttöliittymän hahmotelmia ja suunnitellaan sovelluksen rakenne. Lisäksi projektin läpivienti suunnitellaan. Esitutkimukseen sisällytetään haastatteluja, joilla kartoitetaan muiden yliopiston laitosten varausjärjestelmätarpeita. Esitutkimuksen aikana selvitetään ja päätetään lisäksi sovelluksen toteuttamiseen parhaiten soveltuvat kehitystyökalut. 

Ensimmäisen vaiheen jälkeen kehitetään useassa vaiheessa sovelluksen käyttöliittymä, tietokantarakenne ja toiminnallisuudet. Kehitysvaiheiden aikana suunnitellaan ja toteutetaan käytettävyys- ja järjestelmätestauksen testauskerrat. 

Viimeisessä vaiheessa laaditaan projektiraportti ja sovellusraportti sekä viimeistellään sovellus, lähdekoodi ja dokumentaatio tilaajalle luovutusta varten.

Projektin läpiviennissä hyödynnetään ketterästä kehityksestä räätälöityä prosessia, jossa yhdistellään sekä inkrementaalista että iteratiivista lähestymistapaa. Kehitysvaiheissa kehitystä tehdään viikon tai kahden viikon mittaisissa sykleissä niin, että toiminnallisuuksia lisätään ohjelmaan vaatimusmäärittelyn prioriteettien mukaisesti. Kehitysvaiheita on useita, joiden alussa ryhmä asettaa itselleen tavoitteet lisättävistä, korjattavista tai parannettavista toiminnallisuuksista. Kunkin kehitysvaiheen jälkeen projektipalaverissa tarkastetaan saavutetut tulokset sekä päätetään uudelle kehitysvaiheelle siirrettävistä kesken jääneistä tavoitteista ja uusista lisättävistä ominaisuuksista.

\newpage
\section{Aikataulu}\label{aikataulutus}

Projekti alkoi torstaina 29.1.2014, ja se päättyy viimeistään huhtikuun lopussa. Projektin läpiviennin suunniteltu aikataulu on esitetty tärkeimpien tehtäväkokonaisuuksien ja toteutettavien tulosten osalta kuvassa~\ref{fig:aikataulu}. Helmikuu käytetään ensimmäiseen vaiheeseen. Kehitysvaiheisiin siirrytään mahdollisimman nopeasti haastattelujen valmistuttua ja kehitystyökalujen valinnan jälkeen. Kehitysvaiheet aloitetaan viimeistään maaliskuun alussa, ja ne jatkuvat huhtikuun puoleen väliin, poislukien pääsiäislomaviikko kuukausien vaihteessa. Huhtikuun viimeiset kaksi viikkoa on varattu viimeiselle vaiheelle, jossa viimeistellään tulokset. Toukokuun alkuun on varattu noin kaksi viikkoa pelivaraa, jos aikataulu viivästyy.

\begin{figure}[htp]
\centering
\scalebox{0.38}{\includegraphics[trim = 0mm 0mm 0mm 0mm, clip, angle=-90]{gantt-kaavio.png} }
\caption{Gantt-kaavio projektin läpiviennin suunnitellusta aikataulusta.} \label{fig:aikataulu}
\end{figure}

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

Luvussa kuvataan projektissa mahdollisesti kohdattavia riskejä sekä niiden todennäköisyyksiä ja vaikutuksia projektin läpivientiin ja tuloksiin. Lisäksi esitellään toimenpiteitä riskien ehkäisemiseen, ennakoimiseen ja niistä toipumiseen.

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

Arvioituja projektin läpivientiä hidastavia tai estäviä riskejä on listattu taulukkoon~\ref{riskitaulukko}. Riskien toteutumisen todennäköisyyksiä ja haittavaikutuksia on arvioitu asteikolla pieni, keskinkertainen ja suuri.
\begin{center}
\begin{table}[ht]
\centering
\begin{tabular}{| p{8cm} | c | c |}
\hline
\textbf{Riski} & \textbf{Todennäköisyys} & \textbf{Haittavaikutus}\\
\hline \hline
Tavoitteiden rajaus ja muutokset & keskinkertainen & suuri \\  \hline
Jäsenten tietotaitojen puutteet & keskinkertainen & keskinkertainen \\ \hline
Sidosryhmien toiminnan viiveet & keskinkertainen & keskinkertainen \\ \hline
Projektinhallinnan kokemattomuus & keskinkertainen & pieni \\ \hline
Tiedotuksen puute & pieni & keskinkertainen \\ \hline
Jäsenten poissaolot ja muut velvoitteet & pieni & pieni \\ \hline
Tilaajan edustajien tai ohjaajien poissaolot & pieni & pieni \\ \hline
\end{tabular}
\caption{Riskien toteutumisen todennäköisyys ja haittavaikutus.} \label{riskitaulukko}
\end{table}
\end{center}

Luvuissa~\ref{rajaus}--\ref{poissaolot} arvioidaan esiteltyjä riskien vaikutusta projektin läpivientiin ja tuloksiin sekä esitetään keinoja niiden ehkäisemiseksi ja niistä toipumiseen.

\section{Tavoitteiden rajaus ja muutokset} \label{rajaus}

Tilaajan edustajien tavoitteet ovat yhteneviä ja suurelta osin selkeästi määritelty. Vaatimusmäärittelyn laatiminen näiden pohjalta on suoraviivaista, mutta siihen on kiinnitettävä paljon huomiota, jotta kehitysvaiheissa ei tarvita tarpeettoman suuria muutoksia sovelluksen tietorakenteeseen. 

Ryhmän näkemystä sovelluksen tavoitteista ja tarpeista helpottaa se, että se toteutetaan pääosin olemassa olevan varausjärjestelmän pohjalta sekä osalla ryhmän jäsenistä on kokemusta aiemman sovelluksen käytöstä ja kohdealueesta. Lisäksi yhdellä ryhmän jäsenistä on kokemusta tilaajan laitoksen oppilaslaboratorion assistenttina ja varausjärjestelmän pääkäyttäjänä toimimisesta. 

Suurin epävarmuustekijä tavoitteiden rajauksissa ja muutoksissa johtuu muiden laitosten varausjärjestelmien huomioimisesta. Ellei tarpeita huomioida ja priorisoida oikealla tavalla vaatimusmäärittelyssä, niin tilaajalle toimitettavan sovelluksen laatu voi kärsiä tai projektin läpivienti viivästyä.

Projektin läpiviemiseksi luvussa~\ref{aikataulutus} esitelty suunniteltu aikataulu on lyhyt verrattuna aiempien sovellusprojektien toteutuneisiin läpivienteihin. Edellä mainituista syistä johtuen tavoitteiden rajauksen ja muutosten riskin \textbf{todennäköisyys on arvioitu keskinkertaiseksi}. Projektin suunnitellun käytettävissä olevan ajan vähyyden vuoksi riskin \textbf{haittavaikutukset on arvioitu suureksi}.

Riskin ehkäisemiseksi ryhmän jäsenten on muodostettava nopeasti keskenään yhtenevä ja tilaajien toiveita vastaava näkemys tavoitteista. Tähän tarvitaan projektin ensimmäisen vaiheen esitutkimuksessa ja aihealueeseen tutustumisessa riittävä työmäärä. Ryhmän selkeä näkemys tavoitteista edesauttaa projektin läpivientiä aikataulussaan, koska se nopeuttaa kehitystä. Vaatimusmäärittelyn toiminnallisuuksien priorisointi on tehtävä huolella, jotta oleellisimmat vaatimukset saadaan toteutettua projektin aikana. 

Ryhmän jäsenten on kommunikoitava säännöllisesti ja aktiivisesti tilaajan edustajien kanssa, jotta näkemykset tavoitteista olisivat yhtenäisiä. Tilaajan kanssa sovittujen tavoitteiden muuttuessa on päätettävä vaatimusmäärittelyn vaatimusten priorisoinnista uudelleen ja siirrettävä mahdollisesti joitain vaatimuksia alemmalle prioriteetille tai kokonaan jatkokehityksessä toteutettavaksi.

\section{Jäsenten tietotaitojen puutteet}

Projektissa toteutettavan WWW-sovelluksen kehittämisessä käytetään useita eri työkaluja, ohjelmointikieliä ja niiden kirjastoja sekä tekniikoita, jotka ovat uusia monille projektiryhmän jäsenille. Osalla jäsenistä on vahvaa aiempaa kokemusta käytetyistä ohjelmointikielistä ja WWW-sovelluksien toteuttamisesta sekä tietokantojen ja rajapintojen suunnittelusta ja käytöstä. Ryhmän jäsenten aiemman kokemuksen ja tietotaitojen perusteella riskin \textbf{todennäköisyys on arvioitu keskinkertaiseksi}. Tietotaidon ja aiempien kokemusten puutteet voivat vaikeuttaa asetettujen tavoitteiden saavuttamista projektin suunnitellussa aikataulussa, minkä vuoksi riskin \textbf{haittavaikutus projektille on arvioitu keskinkertaiseksi}.

Yksittäisten ryhmän jäsenten erityisosaamista tietyistä työkaluista ja menetelmistä voidaan hyödyntää muiden jäsenten opastamisessa ja kohdattujen ongelmien ratkaisemisessa. Kehitysvaiheiden ongelmia pystytään ennakoimaan ja ehkäisemään valitsemalla käytettävät työkalut ja menetelmät aiemmin hyvin tunnetuista vaihtoehdoista. Projektin tekniseltä ohjaajalta voidaan kysyä neuvoa ongelmatilanteissa. Projektiorganisaation ulkopuolisia henkilöitä on hyvä konsultoida, mikäli jokin uusi valittava työkalu tai tekniikka ei ole ryhmälle ennestään tuttu. 

\section{Sidosryhmien toiminnan viiveet}

Sidosryhmien toiminnan viiveillä tarkoitetaan pääasiassa projektiryhmän ulkopuolisista kehittäjistä johtuvia viiveitä. WWW-sovelluksen autentikointi toteutetaan ensisijaisesti uudella OAuth2.0-rajapinnalla, jota otetaan projektin aloituksen aikana parhaillaan käyttöön. Lisäksi varausjärjestelmän käyttäjien tietojen ja kalenterinäkymien haku Jyväskylän yliopiston Korppi-sovelluksesta vaatii Korppi-kehittäjiltä uusien rajapintojen toteuttamista Kepler-projektin tarpeita varten.

Jos projektissa toteutettavan sovelluksen Korpilta vaatimat rajapinnat eivät ole valmiita ajoissa, niin joidenkin tehtävien aikataulu viivästyy. Jos rajapintoja ei toteuteta Korppiin lainkaan, niin osaa vaadituista ominaisuuksista on mahdoton toteuttaa kehitettävään sovellukseen. Riskin \textbf{haittavaikutukset projektille on arvioitu keskinkertaisiksi}.

Riskin ehkäisemiseksi ryhmän on otettava riittävän ajoissa ja ylläpidettävä aktiivisesti yhteyttä Korppi-kehittäjiin toteutettavien rajapintojen osalta. Korppi-kehittäjät ovat kiireisiä muissa velvoitteissaan, mutta vastapainoksi he ovat tarvittavien rajapintojen ja toiminnallisuuksien toteuttamisen osalta ammattilaisia, joten riskin \textbf{todennäköisyys on arvioitu keskinkertaiseksi}.

Riskin toteutuessa täytyy vaatimusmäärittelyn toiminnallisuuksien vaatimusten priorisoinnista ja niiden muutoksista neuvotella uudelleen tilaajan edustajien kanssa. Autentikointia varten yliopistolla on olemassa toisia projektin tarpeisiin soveltuvia tietojärjestelmiä. Käyttäjätietojen ja Korppi-kalenterinäkymien siirto onnistuu kuitenkin vain projektin tarpeita varten kehitettävän uuden rajapinnan kautta Korppi-palvelusta. 

\section{Projektinhallinnan kokemattomuus}

Osalla projektiryhmän jäsenistä on aiempaa kokemusta pienimuotoisten projektien suunnittelusta, läpiviennistä ja hallinnasta. Projektipäälliköllä ei ole aiempaa kokemusta projektin läpiviennin hallinnasta ja ryhmän johtamisesta. Näistä syistä johtuen riskin toteutumisen \textbf{todennäköisyys on arvioitu keskinkertaiseksi}. 

Projektinhallinnan kokemattomuudesta voi seurata se, että projektin läpiviennille ja eri vaiheille suunniteltu aikataulu ei vastaa toteutunutta aikataulua. Tehtävien jako tasaisesti ryhmän jäsenten kesken ja jäsenten erityisosaamisen hyödyntäminen saattavat tuottaa myös vaikeuksia. Edellä mainituista syistä projektin läpiviennin aikataulu voi viivästyä tai pahimmassa tapauksessa tarpeellisia toiminnallisuuksia jää toteuttamatta. Koska ryhmän muut jäsenet toimivat projektipäällikön tukena, voidaan riskin \textbf{haittavaikutukset arvioida pieniksi}.

Riskin ehkäisemiseksi täytyy ryhmän jäsenten huomauttaa, jos he havaitsevat ongelmia projektin etenemisessä tai tehtävien suorittamisessa. Riskin toteutuessa voivat varapäällikkö ja projektiryhmän muut jäsenet tarvittaessa avustaa ja neuvoa projektipäällikköä hänen tehtävissään. Projektipäällikön ja kaikkien muiden ryhmän jäsenten tehtäviin kuuluu osaltaan oppia projektin hallintaa ja johtamista. 

\section{Tiedotuksen puute}

Tiedotus ja tiedonkulku ovat erittäin tärkeä osa projektin hallintaa ja oleellisia koko projektiorganisaation toiminnalle. Puutteellinen tiedonkulku projektiorganisaation jäsenten välillä voi aiheuttaa projektin aikataulun viivästymisen sekä väärinkäsityksiä tilaajan tarpeista ja vaatimuksista. Riskin toteutuessa sen arvioitu \textbf{haittavaikutus on keskinkertainen}. Tiedotusta projektiryhmän ja tilaajan välillä helpottaa se, että tilaajien edustajat ovat projektipäällikölle entuudestaan tuttuja sekä he kaikki työskentelevät samalla laitoksella ja samassa tutkimusryhmässä.  Noudattamalla sovittuja käytänteitä voidaan riskin toteutumisen \textbf{todennäköisyyttä pitää pienenä}.

Tiedonkulun puutteisiin liittyvää riskiä pyritään ehkäisemään sopimalla tiedotuksen käytänteistä yhdessä projektiorganisaation kesken sekä noudattamalla  luvuissa~\ref{kaytanteet1} ja \ref{kaytanteet2} esiteltyjä käytänteitä. Tiedotuksen puutteen seurauksia on ehkäistävä aktiivisesti riittävällä yhteydenpidolla. Projektiryhmän jäsenten on tiedotettava valmistuneista tehtävistä muille. Palavereissa esitetään tilakatsaus projektin tilasta, ja tilakatsaus toimitetaan lisäksi viikottain sähköpostitse. Näin kaikki osapuolet ovat ajantasalla projektin tilasta ja etenemisestä. Projektiryhmän on kokoonnuttava sisäisiin palavereihin riittävän usein. Kehitysvaiheissa työn tekeminen yhteisessä projektihuoneessa nopeuttaa tiedonkulkua ja siten ongelmien ratkaisua.

Riskin toteutuessa on projektiorganisaation jäsenten tiedotettava havaitsemistaan ongelmista sekä projektipäällikön korjattava ongelma pyytämällä asianomaisia parantamaan tiedotustaan.

\section{Jäsenten poissaolot ja muut velvoitteet}

Projektiryhmän jäsenillä voi olla suunniteltuja tai ennakoimattomia poissaoloja projektin aikana. Ennakoimattomia poissaoloja voivat olla esimerkiksi sairastumiset tai muihin kursseihin tai työtehtäviin liittyvät odottamattomat velvoitteet. Yhden tai useamman jäsenen poissaolot voivat viivästyttää projektin etenemistä merkittävästi erityisesti kehitysvaiheissa.

Ryhmän jäsenille ei ole projektin alkuvaiheessa tiedostettuja pidempiä poissaoloja. Ryhmän projektipäällikkö Joonas Konki on kokopäivätyössä fysiikan laitoksella tohtorikoulutettavana, joten hänen projektiin käyttämä työaika sijoittuu pääasiassa iltoihin ja viikonloppuihin. Hänellä ennakoimattomia ja ylimääräisiä työvelvoitteita on vähän, tai ne ovat lyhytkestoisia. Nämä asiat huomioiden riskin toteutumisen \textbf{todennäköisyys on arvioitu pieneksi}.

Projektiryhmässä on enemmän jäseniä kuin monessa aiemmin läpiviedyssä sovellusprojektiryhmässä. Odottamattoman poissaolon sattuessa työtehtäviä on siten helpompi jakaa uudelleen ryhmän muiden jäsenten kesken. Siksi järkevästi ennakoimalla yhden henkilön lyhytaikainen poissaolo ei vaikuta suuresti projektin läpivientiin. Näin ollen, riskin toteutumisen \textbf{haittavaikutuksen on arvioitu olevan pieni}.

Odottamattomia poissaoloja on erittäin vaikea ennakoida tai ehkäistä. Poissaoloriskin ehkäisemiseksi ja siitä toipumiseksi työtunnit ja tehtävät jaetaan tasaisesti ryhmän jäsenten kesken. Tehtävien jaossa pyritään lisäksi siihen, että useammalla kuin yhdellä jäsenellä on tietoa sovelluksen keskeisimmistä toiminnoista ja toteutusratkaisuista. 

Projektiryhmän jäsenten lyhytkestoiset poissaolot huomioidaan työtuntien tasaamisella poissaolon jälkeen. Työtunteja voidaan tasata myös etukäteen, jos poissaolo on etukäteen ja hyvissä ajoin tiedossa. Pidemmissä poissaolotilanteissa on oltava yhteydessä projektin vastaavaan ohjaajaan. Jos poissaolot vaikuttavat merkittävästi projektin läpivientiin, täytyy vaatimusmäärittelyn priorisoinnista sekä sen tai aikataulun mahdollisista muutoksista neuvotella uudelleen tilaajan edustajien kanssa.


\section{Tilaajan edustajien tai ohjaajien poissaolot}\label{poissaolot}

Projektiorganisaation muilla jäsenillä eli tilaajan edustajilla ja ohjaajilla voi projektiryhmän jäsenten tavoin olla suunniteltuja ja ennakoimattomia poissaoloja. Ongelmatilanteita voi muodostua, jos tilaaja tai ohjaaja ei ole tavoitettavissa jollain oleellisia päätöksiä tai lisätietoja vaativalla hetkellä. Tilaajan edustajien tai ohjaajien poissaolot voivat viivästyttää projektin etenemistä.

Tilaajan edustajilla ja ohjaajilla ei ole projektin alkaessa tiedossa suunniteltuja pidempiaikaisia poissaoloja. Kaikki tilaajan edustajat eivät välttämättä pysty aina olemaan paikalla tai osallistumaan jokaiseen palaveriin muiden työvelvoitteidensa vuoksi. Palavereihin osallistumista pyritään helpottamaan sopimalla palaverin ajankohdat kaikille sopiviksi. Tilaajan edustajat ovat lisäksi yliopiston sisältä, mikä helpottaa palavereihin osallistumista ja yhteydenpitoa. Riskin toteutumisen \textbf{todennäköisyyden voidaan näin ollen arvioida olevan pieni}. Hyvällä tiedotuksella arvioidaan riskin toteutumisen \textbf{haittavaikuksen olevan pieni}.

Palavereista kirjoitettavat selkeät ja kattavat pöytäkirjat parantavat tiedotusta ja vähentävät poissaoloista aiheutuvia seurauksia ja uhkia projektin läpiviennille. Pöytäkirjoja lukemalla palaveriin osallistumattomat voivat seurata projektin etenemistä. Sähköpostitse toimitettavilla tilakatsauksilla pidetään projektiorganisaation jäsenet tietoisina projektin etenemisestä myös palaverittomilla viikoilla. Mikäli poissaolot tulevat projektiorganisaation tietoon hyvissä ajoin, niin niihin voidaan varautua ryhmän työtehtävien jaossa ja aikataulutuksessa, tai esimerkiksi palautteen pyytämisen ajankohtien ennakoinnilla. 

\chapter{Yhteenveto}

Kepler-projekti kehittää kevään 2015 Sovellusprojekti-kurssilla WWW-sovelluksen Jyväskylän yliopiston fysiikan laitoksen oppilaslaboratorion laboratoriotöiden varausten hallintaan. Varausjärjestelmän avulla fysiikan kurssien opiskelijat voivat varata fysiikan kursseihin liittyviin laboratoriotöihin mittausvuoroja. Ohjaajat näkevät järjestelmästä heidän ohjaamilleen laboratoriovuoroille ilmoittautuneet opiskelijat ja ohjattavat työt. Varausjärjestelmän pääkäyttäjät voivat hallita laboratoriovuorojen ajankohtia, laboratoriotöitä ja ohjaajia sekä töiden tarvitsemia mittauslaitteistoja. Kehitettävä sovellus tulee korvaamaan nykyisen WWW-selaimella käytettävän Brahe2007-varausjärjestelmän.

Projektin haasteena on tehdä sovelluksesta niin laadukas ja monipuolinen, että sen jokapäiväinen käyttö on opiskelijoille, ohjaajille ja pääkäyttäjälle helppoa ja nopeaa. Lisäksi halutaan, että sovellus on tarvittaessa mahdollisimman pienin muokkauksin yliopiston muiden laitosten käytettävissä erilaisiin tarkoituksiin.

Projektin tulokset luovutetaan tilaajalle huhtikuun lopussa. Projektin läpiviennin suurimmat riskit liittyvät tavoitteiden rajaukseen lähinnä yliopiston muiden laitosten varausjärjestelmätarpeiden huomioimisen osalta, sekä sidosryhmien kehittämien sovelluksen ulkopuolisten rajapintojen valmistumiseen. 

Sovellusprojekti-kurssi tarjoaa ryhmän jäsenille projektimuotoisen työskentelyn ja työtapojen opettelun lisäksi käytännön kokemusta ohjelmistoprojektin läpiviennin suunnittelusta ja hallinnasta. Sovelluksen kehittämisessä jäsenet pääsevät soveltamaan aiemmilla kursseilla opittuja asioita käytäntöön.


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

\bibitem{liikkuvasuunnitelma}
  Joel Kivelä, Erkki Koskenkorva, Mika Lehtinen, Oskari Leppäaho ja Petri Partanen,
  ''Liikkuva-projekti, Projektisuunnitelma'',
  saatavilla PDF-muodossa 
  <URL: \texttt{http://sovellusprojektit.it.jyu.fi/liikkuva/dokumentit/\\projektisuunnitelma/liikkuva\_projektisuunnitelma\_1.0.0.pdf}>,
  \linebreak Jyväskylän yliopisto,
  tietotekniikan laitos,
  23.4.2014.
  
\bibitem{paattisuunnitelma}
  Tapio Keränen, Toni Salminen, Jari Salokangas ja Lauri Satokangas,
  ''Paatti-projekti, Projektisuunnitelma'',
  saatavilla PDF-muodossa <URL: \texttt{http://sovellusprojektit.it.jyu.fi/paatti/dokumentit/\\projektisuunnitelma/paatti\_projektisuunnitelma\_1.0.0.pdf}>,
  \linebreak Jyväskylän yliopisto,
  tietotekniikan laitos,
  23.4.2012.
  
\bibitem{ajanseurantalahde}
  Petri Heinonen, 
  ''Ajankäytönseurantasovellus'',
  saatavilla Excel-muodossa <URL: \texttt{http://appro.mit.jyu.fi/tools/ajankaytto/\\ajankaytonseuranta.xls}>,
  Jyväskylän yliopisto,
  informaatioteknologian tiedekunta, 
  viitattu 28.2.2014.

\bibitem{python-pep-tyyli}
  Guido van Rossum, Barry Warsaw and Nick Coghlan,
  ''PEP 8 -- Style Guide for Python Code'',
  saatavilla HTML-muodossa
  <URL: \texttt{https://www.python.org/dev/peps/pep-0008}>,\\
  Python Software Foundation,
   1.8.2013.

\bibitem{muut-tyylit}
  The jQuery Foundation,
  ''jQuery’s Style Guides'',
  saatavilla HTML-muodossa
  <URL: \texttt{http://contribute.jquery.org/style-guide}>,\\
  viitattu 28.2.2015.  
  

\bibitem{python-pep-kommentit}
  David Goodger and Guido van Rossum,
  ''PEP 257 -- Docstring Conventions'',
  saatavilla HTML-muodossa <URL: \texttt{https://www.python.org/dev/peps/pep-0257}>,\\
  Python Software Foundation,
  13.6.2001.
  
\bibitem{google-python-kommentit}
  Amit Patel, Antoine Picard, Eugene Jhong, Jeremy Hylton, Matt Smart and Mike Shields,
  ''Google Python Style Guide'',
  saatavilla HTML-muodossa
  <URL: \texttt{http://google-styleguide.googlecode.com/svn/trunk/\\pyguide.html\#Comments}>,
  viitattu 11.3.2015.  
  
\bibitem{projektikirjat}
  Jukka-Pekka Santanen,
  ''Tietotekniikan Sovellusprojektien käytössä olevat kirjat'',
  saatavilla HTML-muodossa
  <URL: \texttt{http://www.mit.jyu.fi/palvelut/sovellusprojektit/\\projkirjat.html}>,
  Jyväskylän yliopisto,
  informaatioteknologian tiedekunta, 
  30.1.2014.

\bibitem{vaatimusmaaritelma}
  Joonas Konki, Anu Koskela, Mikko Kuhno, Henrik Paananen ja Atte Räty,
  "Kepler-projekti, Vaatimusmäärittely",
  saatavilla PDF-muodossa
  <URL: \texttt{http://sovellusprojektit.it.jyu.fi/kepler/dokumentit/\\vaatimusmaarittely/kepler\_vaatimusmaarittely\_1.0.0.pdf}>,
  Jyväskylän yliopisto,
  tietotekniikan laitos,
  2015.

\bibitem{sovellusprojektienohje}
  Jukka-Pekka Santanen,
  ''Tietotekniikan Sovellusprojektien ohje'',
  saatavilla PDF-muodossa <URL: \newline
 \texttt{http://www.mit.jyu.fi/opetus/sovellusprojektit/projohje.pdf}>,
  \linebreak Jyväskylän yliopisto,
  tietotekniikan laitos,
  27.1.2015. 
  

\end{thebibliography}



%LIITTEET
%\begin{appendix}

%\chapter{Ensimmäinen liite}

%Tänne tarvittaessa liitteitä.

%\end{appendix}

% Dokumentin  lopetus
\end{document}
