TIM - The Interactive Material. Jyväskylän yliopisto

Timppa-sovellusprojekti, projektisuunnitelma

#

projektisuunnitelma

Matias Berg
Bek Eljurkaev
Minna Lehtomäki
Juhani Sihvonen
Hannu Viinikainen
Versio 1.0.0
Julkinen

Jyväskylän yliopisto
Tietotekniikan laitos
Jyväskylä

Hyväksyjä Päivämäärä Nimenselvennys Allekirjoitus
Projektipäällikkö 22.4.2015 Juhani Sihvonen
Tilaaja 22.4.2015 Vesa Lappalainen
Ohjaaja 22.4.2015 Jukka-Pekka Santanen



Tietoa dokumentista

#

Tekijät:

  • Matias Berg (MB), matias.j.k.berg@student.jyu.fi
  • Bek Eljurkaev (BE), kaeljurk@student.jyu.fi
  • Minna Lehtomäki (ML), minna.j.lehtomaki@student.jyu.fi
  • Juhani Sihvonen (JS), juhani.j.p.sihvonen@student.jyu.fi
  • Hannu Viinikainen (HV), hannu.j.viinikainen@student.jyu.fi

Dokumentin nimi: Timppa-sovellusprojekti, projektisuunnitelma

Tiedosto: https://tim.it.jyu.fi/view/timppa/dokumentit/projektisuunnitelma

Tiivistelmä: Projektisuunnitelmassa kuvataan Timppa-projektin suunniteltua läpivientiä. Suunnitelmassa esitellään projektin taustaa, tavoitteet, käytettävissä olevat resurssit ja käytänteet. Suunnitelmassa kuvataan myös projektin tehtävien työmääriä ja jakautumista jäsenten kesken, sekä projektissa noudatettavaa prosessia ja läpiviennin aikataulua. Suunnitelmassa kartoitetaan projektiin liittyviä riskejä, arvioidaan niiden todennäköisyyttä ja toteutumisen haittavaikutuksia sekä kuvataan riskien hallintaa.

Avainsanat: Aikataulu, interaktiivisuus, kysely, käytänteet luento, luentoseinä, ohjelmistoprojekti, projektisuunnitelma, prosessi, resurssit, riskien hallinta, selain, sovellus, tavoitteet, taustaa, tehtävät, työmäärät, vastuualueet.

Muutoshistoria

Versio Päivämäärä Muutokset Tekijät
0.0.1 5.2.2015 Projektisuunnitelman laatiminen on aloitettiin. JS
0.0.2 10.2.2015 Pääotsikot kirjoitettiin. JS
0.0.3 12.2.2015 Päälukuja kirjoitettiin. BE, MB, JS, HV, ML
0.0.4 25.2.2015 Tehtävät, prosessi, aikataulu. JS, BE
0.0.5 2.3.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS
0.0.6 11.3.2015 Puuttuvat luvut kirjoitettiin. JS
0.0.7 11.3.2015 Projektin käytänteet (luku 5) melkein valmis. ML
0.1.0 11.3.2015 Alustava aikataulu, kirjoitusasua parannettu. JS
0.1.1 18.3.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS
0.1.2 22.3.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS
0.2.0 24.3.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS
0.2.1 6.4.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS
0.3.0 12.4.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS
1.0.0 22.4.2015 Korjauksia tehtiin ohjaajan palautteen perusteella. JS

Tietoa projektista

#

Projekti kehittää olemassa olevaan TIM-oppimisympäristöön InSitu-järjestelmän interaktiivisen kyselyominaisuuden.

Tekijät:

  • Matias Berg, matias.j.k.berg@student.jyu.fi
  • Bek Eljurkaev, kaeljurk@student.jyu.fi
  • Minna Lehtomäki, minna.j.lehtomaki@student.jyu.fi
  • Juhani Sihvonen, juhani.j.p.sihvonen@student.jyu.fi
  • Hannu Viinikainen, hannu.j.viinikainen@student.jyu.fi

Tilaaja:

  • Vesa Lappalainen, vesa.t.lappalainen@jyu.fi
  • Antti-Jussi Lakanen, antti-jussi.lakanen@jyu.fi

Ohjaajat:

  • Mika Lehtinen, mika.k.lehtinen@student.jyu.fi
  • Jukka-Pekka Satanen, santanen@mit.jyu.fi

Yhteystiedot:

  • Sähköpostilistat timppa@korppi.jyu.fi, timppa_opetus@korppi.jyu.fi
  • Sähköpostiarkistot: https://korppi.jyu.fi/kotka/servlet/list-archive/timppa ja https://korppi.jyu.fi/kotka/servlet/list-archive/timppa_opetus
  • Projektitila Ag C225.3, puh. 040 805 3314

1. Johdanto

#

Projekti toteuttaa Sovellusprojekti-kurssilla keväällä 2015 olemassa olevaan TIM-oppimisympäristöön reaaliaikaisen kyselyominaisuuden. TIM on Jyvskylän yliopistossa kehitetty oppimisympäristö. Aikaisemmin kyselyominaisuuksia varten on tarvittu erillinen sovellus, jonka ylläpito on ollut hankalaa sovelluksen kehitykseen käytetyn ohjelmointikielen eri versioiden vuoksi. Tavoitteena kehitettävillä ominaisuuksilla on helpottaa opettajan ja oppilaiden välistä interaktiivisuutta luennoilla.

Projektisuunnitelma kuvaa Timppa-projektin suunniteltua läpivientiä. Lähteinä projektisuunnitelman laatimisessa on hyödynnetty Hälyri-projektin projektisuunnitelmaa [1] ja Sovellusprojektien ohjetta [2].
Muita olennaisia projektissa laadittavia suunnitteludokumentteja ovat vaatimusmäärittely ja käyttöliittymäsuunnitelma.

Luvussa 2 esitellään dokumentissa käytettävät termit. Luvussa 3 käsitellään projektin taustaa ja tavoitteita. Luvussa 4 esitellään projektin organisaatio ja resurssit. Luvussa 5 käsitellään projektin käytnteet. Luvussa 6 hahmotellaan projektin tehtäviä, työmääriä ja työnjakoa. Luvussa 7 kuvataan projektin prosessimalli ja aikataulu. Luvussa 8 käydään läpi projektin riskit ja niiden hallinta.

2. Termit

#

Projektisuunnitelmassa käytettäviä aihealueen termejä ovat seuraavat:

  • ArgoUML on ohjelma jolla tehdään sekvenssikaaviot.
  • TIM on Jyväskylän yliopiston tietotekniikan laitoksella kehitetty oppimisympäristö, joka tulee sanoista "The Interactive Material"

  • TIMPPA on projektiryhmän antama nimi projektille.
  • Luentoseinä on luennoilla käytössä oleva pikaviestin.
  • Kysely on yksi tai useampi kysymys, joihin voi vastava luentomonisteessa.

  • Trello on projektissa käytettävä tehtävien- ja vaatimustenhallintaohjelma.

  • Käyttöliittymä on sovelluksen osa, jonka avulla käyttäjä käyttää sovellusta.

  • Freemind on vaatimusmäärittelynohjelma projektille.

  • Git on hajautettu versiohallintajärjestelmä.

  • GanttProject on ajan- ja resurssienhallintaohjelma.

  • Lähdekoodi on tekstimuotoista ohjelmakoodia.

  • YouSource on Git-versiohallintaohjelmistoa tukeva lähdekoodien julkistusjärjestelmä

  • Python on TIMin kehittämisessä käytetty ohjelmointikieli.

3. Taustaa ja tavoitteet

#

Luvussa kuvataan projektin taustoja sekä projektissa kehitettävän sovelluksen tavoitteita ja projektin tuloksia. Luvussa käsitellään myös ryhmän jäsenten oppimistavoitteita.

3.1. Taustaa

#

Jyväskylän yliopiston tietotekniikan laitoksella on pyritty kehittämään interaktiivisuutta massaluennoilla. 1990-luvulla tietotekniikan laitoksella kehitettiin langallinen järjestelmä, jonka avulla luennoitsija pystyi kysymään opiskelijoilta monivalintakysymyksiä. Tämän järjestelmän ongelmana oli erilliset laitteet, joiden kantaminen massaluennoilla oli todella vaivalloista.

Tämän jälkeen tietotekniikan laitoksella kehitettiin Java-ohjelmointikielellä InSitu-niminen sovellus, joka toimii radioverkon yli. Kyseistä sovellusta opiskelijat pystyvät käyttämään tietokoneilla sekä mobiililaitteilla. Tämän järjestelmän heikkous on kuitenkin eri Java versioiden aiheuttamat ongelmat. InSitu-luentojen valmistelu vaatii myös todella paljon aikaa, joten on todella tarve sovellukselle, jolla pystyisi saamaan interaktion määrää lisättyä massaluennoilla.

Em. tarpeeseen Timppa-projekti kehittää kyselyominaisuuden olemassa olevan TIM-oppimisympäristön yhteyteen. TIMin ideana on tarjota oppimismateriaaliin kirjamainen järjestys. TIMin avulla on myös tarkoitus lisätä opettajien sekä oppilaiden välistä vuorovaikutusta luennoilla. TIMiin yhdistettyjen plug-inien, avulla opettaja voi lisätä luentomateriaaliin esimerkiksi monivalintatehtäviä.

3.2. Sovellukselle asetetut tavoitteet

#

Projektin tavoitteena on kehittää TIMiin kysely ominaisuus, jonka avulla luennoitsija voi kysyä InSitu-tyylisesti kysymyksiä opiskelijoilta kesken luennon tai tallentaa tekemänsä kysymyksen suoraan luentomonisteeseen. Kyselyt voivat koostua useista eri kysymystyypeistä, joista luennoitsija voi helposti; jopa kesken luennon; tehdä uuden kysymyksen. Oppilaiden vastattua kysymyksiin sovellus näyttää vastausten vastausjakauman, jos jakauma on mahdollista esittää.

Toisena päätavoitteena ryhmälle on kehittää luentoseinä TIMiin. Luentoseinän idea on mahdollistaa opiskelijoiden kommentointi kesken luennon. Opiskelijat voivat kysyä kysymyksiä tai kommentoida luentoa kirjoittamalla luentoseinälle. Luennoitsijan puolesta tarkoituksena on seurata luentoseinää sekä vastata opiskelijoiden antamiin kysymyksiin.

kaavio (sovellus/palvelin/kanta)

Kuva 3.1 TIMin rakenne

Kuva 3.1 TIMin rakenne

3.3. Oppimistavoitteet

#

Sovellus toteutetaan Sovellusprojekti -kurssilla, jossa opiskelijoiden tavoiteena on oppia projektimuotoista työskentelyä. Projektin edetessä opiskelijat tulevat saamaan käytännön kokemusta siitä, kuinka projektimuotoinen ryhmätyöskentely toimii ohjelmointialalla. Projektin edetessä ryhmän jäsenet tutustuvat myöskin erilaisiin ohjelmointityökaluihin.

Ryhmän jäsenet ovat asettaneet omiksi oppimistavoitteekseen seuraavat:

  • Hannu haluaa kehittää ohjelmointiosaamistaan verkkoympäristössä.

  • Bek on asettanut päätavoitteekseen kehittää ryhmätyö- ja viestintätaitojaan. Bek on myös kiinnostunut kehittymään verkkosovellusten kehittäjänä. Erityisen kiinnostuksen kohteena hänellä on back-end-kehittäminen.

  • Juhanin tavoitteena on kehittää projektinjohtamisen osa-alueita ja viestintätaitoja.

  • Minna haluaa perehtyä selainpohjaisen käyttöliittymän toteuttamiseen.

  • Matias haluaa kehittää projektitaitojaan ja WWW-ohjelmointitaitojaan.

3.4. Projektin tulokset

#

Sovelluksen ohella projektiryhmä toteuttaa seuraavat dokumentit:

  • Ajankäyttöraportti sisältää ryhmän jäsenten käytetyt tehtävittäiset työtunnit.
  • Esittelymateriaalit sisältävät väli- ja loppuesittelyiden materiaalit ja muistiot.
  • Itsearvioinnit sisältävät ryhmän jäsenten arvionnit omasta oppimisesta ja toiminnasta.
  • Lisenssisitoumus on sopimus, jolla ryhmän jäsenet sitoutuvat sijoittamaan toteuttamansa lähdekoodin ja muun materiaalin valitun lisenssin alaisuuteen.
  • Luokkadokumentti sisältää lähekoodista automaattisesti generoidut luokkia kuvaavat dokumentit.
  • Lähdekoodi sisältää ohjelmakoodin.
  • Palaverien dokumentit sisältävät kokouksien esityslistat, pöytäkirjat sekä tilakatsaukset.
  • Projektiraportti kuvaa projektin toteutunutta läpivientiä ja asetettujen tavoitteiden toteutumista.
  • Projektisuunnitelma kuvaa projektin suunniteltuja tarvoitteita, resursseja, käytänteitä, tehtävien työmäärää ja työnjakoa, aikataulua sekä riskien hallintaa.
  • Sovellusraportti kuva toteutetun sovelluksen toiminnot ja rakenteen.
  • Sähköpostiarkistot sisältävät projektin sähköpostilistoille lähetetyt viestit.
  • Vaatimusmäärittely kuvaa sovelluksen toiminnalliset ja tekniset vaatimukset.
  • Käyttöliittymähahmotelmat ovat TIM-dokumentteja, joissa esitetään luonnoksia eri käyttöliittymän osista.
  • Testaussuunnitelma sisältää eri testitapaukset ja testikerrat sekä näiden kriteerit ja vaatimukset
  • Testausraportti on yhdestä testikerrasta laadittu raportti.

4 Organisaatio ja resurssit

#

Luvussa esitellään projektiorganisaatio, käytössä olevat resurssit sekä projektiin liittyvät oheiskurssit ja perehdykset.

4.1. Projektiorganisaatio

#

Projektiryhmän muodostavat Matias Berg, Bek Eljurkaev, Minna Lehtomäki, Juhani Sihvonen ja Hannu Viinikainen. Matias Bergilla on jonkin verran ohjelmointikokemusta eri kielillä opiskelun ja harrastusten kautta. Bek Eljurkaevilla on jonkin verran Java-ohjelmointikokemusta opiskelun kautta. Minna Lehtomäellä ei ole paljoa ohjelmointikokemusta, mutta tilastotieteen maisterina hän pystyy auttamaan paljon erilaisten tilastojen luomisessa. Juhani Sihvosella on C#-ohjelmointikokemusta työn kautta, ja hänellä on myös kokemusta erinäisistä kielistä opiskelujen kautta. Hannu Viinikaisella on Pythoninsta kokemusta vaihto-opiskeluajaltaan Belgiasta, sekä hänellä on myös hieman Ruby-on-Railsista kokemusta työn kautta.

Tilaajan edustajina toimivat Antti-Jussi Lakanen ja Vesa Lappalainen tietotekniikan laitokselta. Jukka-Pekka Santanen on projektin vastaava ohjaaja. Teknisenä ohjaajana toimii Mika Lehtinen, joka on tällä hetkellä aktiivisesti mukana TIM-järjestelmän kehityksessä.

Jyväskylän yliopiston ATK-lähituki vastaa ryhmän käytössä olevista laitteista ja ohjelmistoista. Projektin viestintäkurssin kirjoitusviestinnän opettajana toimii Juha Jalkanen ja puheviestinnän opettajana Hanna Kivimäki.

4.2. Projektin tilat ja laitteet

#

Projektiryhmä sai käyttöönsä tietotekniikan laitokselta Agorasta huoneen C225.3, jossa on asennettuina viisi Windows 7-työasemaa.

Testausta varten projektiryhmä saa tarvittaessa käyttöönsä Vesa Lappalaiselta mobiililaitteita.

Sovellusprojektin avotilassa on ryhmän käytössä monitoimitulostin, jota ryhmän jäsenet pystyvät käyttämään ilman maksuja. Ryhmällä on mahdollisuus varata käyttöönsä videoprojektori, kannettava tietokone ja digitaalisanelin. Projektiryhmällä on käytettävissä virkistystila, jossa on vedenkeitin ja kahvinkeitin.

Projektin julkistetut dokumentit sijoitetaan TIM-järjestelmään URL-osoitteeseen http://tim.it.jyu.fi/?folder=timppa. Projektilla on käytössään yhteinen verkkolevy hakemistossa \\sovpa7.cc.jyu.fi\timppa. Projektin WWW-sivusto sijaitsee osoitteessa http://sovellusprojektit.it.jyu.fi/timppa. Projektin testausympäristö löytyy osoitteesta https://tim-beta.it.jyu.fi/?folder=timppa.

Projektissa toteutettava lähdekoodi sijoitetaan nähtäville Git-pohjaiseen YouSource-julkistusjärjestelmään osoitteeseen https://yousource.it.jyu.fi/+timppa.

Projektilla käytössä olevat sähköpostilistat ja sähköpostilarkistot esitellään luvussa 5.1.

4.3. Dokumentointityökalut

#

Projektisuunnitelma ja projektiraportti laaditaan käyttäen TIMiä. Kokouspöytäkirjat laaditaan TIMillä. Esityslistat, käyttötapauskaaviot ja moni muu dokumentti laaditaan Google Drivessa kehitysvaiheessa ennen kuin ne siirretään TIMiin. Vaatimusmäärittely kirjataan projektin trello tilille. Tehtävien työtunnit kirjataan Excel-taulukkolaskentaohjelmaan, jolla myös laaditaan tilakatsauksissa käytettävät grafiikat. Tilakatsaukset laaditaan Google Driven slides-ohjelmalla. Sekvenssikaaviot laaditaan ArgoUML-ohjelmalla.

4.4. Ohjelmointityökalut

#

Sovelluksen kehittäminen tapahtuu lähinnä Python-kielellä. Sovelluksen kehittämiseen käytetään PyCharm-ohjelmaa. HTML5:ta, CSS:ää ja JavaScriptiä käytämme ulkoasun suunniteluun. Lisäksi kyselyiden jakaumien esittämiseen käytetään valmista JavaScript-kirjastoa.

4.5. Luennot ja perehdytykset

#

Projektin kanssa samaan aikaan järjestetään kaksi oheiskurssia: "Sovellusprojektin hallintaa, viestintää ja työkaluja" (TIES412, 1op) ja "Projektiviestintä IT-alalla" (XYHI004, 3op). Oheiskurssien työtunnit kirjataan omalle tehtäväkokonaisuudelle työajanseurantataulukkoon.

Kurssiin Sovellusprojektin hallintaa, viestintää ja työkaluja kuuluvat seuraavat luennot:

  • aloitusluentot
  • vaatimusmäärittely,
  • versiohallinta,
  • projektin suunnittelu ja hallinta, sekä
  • tekijänoikeudet ja sopimukset
  • käytettävyysluento ja ryhmätyö

Kurssiin "Projektiviestintä IT-alalla" kuuluvat puhe- ja kirjoitusviestinnän luennot sekä ryhmätyöt. Lisäksi kurssiin kuuluvat projektissa laadittujen dokumenttien kirjoitusasun ja rakenteen muokkauksen työtunnit. Projektin aikana järjestettävät kaksi väliesittelyä kuuluvat myös viestintäkurssiin.

Tarvittaessa järjestetään projektikohtaisia perehdyttämisiä mm. ohjelmointityökaluihin, tietokantoihin ja aihealueeseen liittyen. Nämä ja loppuesittely kirjataan sovellusprojektiin kuuluviksi työajanseurantasovellukseen.

5. Projektin käytänteet

#

Luvussa esitellään projektin läpiviennissä noudatettavia käytänteitä. Käytänteiden tarkoituksena on edistää projektin läpivientiä, asetettujen tavoitteiden saavuttamista ja tulosten toteuttamista. Käytänteillä pyritään varmistamaan, että projekti etenee aikataulussa sekä toteutetut tulokset ovat yhteneviä suunniteltuihin tuloksiin.

5.1. Tiedotus

#

Projektiorganisaatiolle tiedotetaan projektin etenemisestä, projektissa kohdatuista haasteista ja vaihtoehdoista sekä tehdyistä valinnoista, ratkaisuista ja päätöksistä. Projektipäällikkö vastaa projektin etenemisen tiedottamisesta projektiorganisaatiolle antamalla tilakatsauksen jokaisessa projektipalaverissa. Sähköpostilistalle timppa@korppi.jyu.fi kuuluvat kaikki projektiorganisaation jäsenet, joten tätä listaa käytetään myös muuhun koko projektiorganisaatiota koskevaan viestintään, esimerkiksi palavereista ja niiden pöytäkirjoista tiedottamiseen. Sähköpostilistalle lähetettyjä viestejä pystyy selaamaan Korpin sähköpostiarkiston kautta osoitteessa https://korppi.jyu.fi/kotka/servlet/list-archive/timppa/ind.html.

Sähköpostilista timppa_opetus@korppi.jyu.fi on tarkoitettu projektin ohjaajien ja ryhmän jäsenten väliseen viestintään. Sen sähköpostiarkisto sijaitsee osoitteessa https://korppi.jyu.fi/kotka/servlet/list-archive/timppa_opetus/ind.html. Sähköpostilistalla käsitellään asioita, jotka eivät ole oleellisia tilaajien kannalta. Esimerkiksi projektiryhmän sisäiset palaverit sekä erilaiset opetukseen ja koulutukseen liittyvät asiat eivät kosketa tilaajaa.

Projektin sisäinen viestintä tapahtuu WhatsAppin, Trellon ja sähköpostin välityksellä sekä kasvokkaisilla keskusteluilla ja pienillä kokouksilla projektiryhmän työhuoneessa. Projektiryhmän muuhun kuin kasvokkaiseen viestintään pyritään käyttämään pääasiallisesti sähköpostia. Sähköpostilla myös tiedotetaan virallisemmista asioista projektiryhmän sisällä. WhatsApp on tarkoitettu lähinnä pikaisiin ja lyhyisiin viesteihin. Trellossa puolestaan käydään yksittäisiin vaatimuksiin ja tehtäviin liittyvää keskustelua.

5.2. Palaverit

#

Projektiorganisaatio pitää aluksi palavereja viikoittain sujuvan alun varmistamiseksi. Tämän jälkeen palavereita pyritään pitämään noin kahden viikon välein. Seuraavan palaverin ajankohta päätetään aina edellisessä palaverissa.

Palavereissa käsitellään edellisen palaverin jälkeistä projektin etenemistä ja etenemiseen vaikuttaneita asioita. Jokaisessa palaverissa käydään läpi edellisen palaverin pöytäkirja vähintään tehtyjen päätösten sekä osallistujille osoitettujen toimenpiteiden ja niiden tilan osalta. Lisäksi edellisen palaverin pöytäkirja käydään tarvittaessa läpi myös muilta osin, mikäli palaverissa näin päätetään. Pöytäkirjan läpikäymistä johtaa projektipäällikkö. Lisäksi projektipäällikkö esittää joka palaverissa tilakatsauksen, jossa esitellään projektiryhmän viikoittainen ajankäyttö eri tehtäväkokonaisuuksittain.

Palavereissa käsitellään toteutettavan sovelluksen ominaisuuksia ja vaatimuksia, sekä niiden toteutusratkaisuja. Asiat pyritään käymään läpi niin tarkasti, että asiakkaan edustajat ja projektiryhmän jäsenet pääsevät yhteisymmärrykseen sovellukseen liittyvistä asioista, eikä väärinymmärryksiä pääse syntymään. Projektiryhmä esittelee palaverissa sovelluksesta konkreettisia käyttöliittymään liittyviä demoja tai prototyyppejä, mikäli sellaisia on valmiina. Palavereissa sovitaan myös projektiin liittyvistä käytänteistä.

Jokainen ryhmän jäsen toimii vuorollaan palavereissa sihteerinä tai puheenjohtajana. Kyseiset tehtävät kiertävät ryhmän keskenään sopimassa järjestyksessä. Puheenjohtaja huolehtii esityslistan lähettämisestä sähköpostilla projektiorganisaation jäsenille vähintään vuorokautta ennen seuraavaa palaveria. Palaverissa puheenjohtaja vie keskustelua eteenpäin esityslistan mukaisesti. Sihteeri laatii palaverista pöytäkirjan, jonka hän toimittaa mahdollisimman nopeasti palaverin puheenjohtajalle tarkastettavaksi. Kun pöytäkirja on puheenjohtajan osalta hyväksytty, sihteeri toimittaa sen koko projektiorganisaatiolle. Tämän lisäksi jokaisen ryhmän jäsenen laatima ensimmäinen pöytäkirja toimitetaan myös vastaavan ohjaajan esitarkastettavaksi.

Pöytäkirja hyväksytetään seuraavassa palaverissa, jolloin siihen on mahdollista esittää muutoksia. Mikäli edellisen palaverin pöytäkirja hyväksytään korjauksin, kyseisen palaverin puheenjohtajan tai sihteerin tulee sähköpostitse ilmoittaa korjatusta pöytäkirjasta projektiorganisaatiolle listaten tiivistetysti tehdyt korjaukset.

Projektiorganisaation yhteisten palavereiden lisäksi projektiryhmä järjestää viikoittain oman palaverin, jossa sovitaan yhdessä seuraavan viikon työtehtävät ja merkitään ne tarvittaessa Trelloon. Tämä palaveri pyritään järjestämään mahdollisimman pian projektiorganisaation yhteisen palaverin jälkeen.

5.3. Lähdekoodi

#

Lähdekoodi kirjoitetaan vastaamaan Pythonin yleisiä käytänteitä ja PEP8 -dokumentaatiota[3]. Lähdekoodissa käytetyt aliohjelmat, luokat ja muuttujat nimetään englanniksi mahdollisimman kuvaavalla nimellä. Myös lähdekoodin kommentit kirjoitetaan englanniksi. Lähdekoodissa käytettyjen tekstitiedostojen tallennusmerkistönä käytetään ensisijaisesti UTF-8 -koodausta.

Alla on esimerkki edellä esitettyjä käytänteitä noudattavasta Python-koodista.

@app.route('/wall')
def get_wall():
    return render_template('wall.html')


@app.route('/question')
def show_question():
    return render_template('question.html')


@app.route('/getQuestion', methods=['GET'])
def get_question():
    timdb = getTimDb()
    questions = timdb.questions.get_questions()
    return jsonResponse(questions)

@app.route('/addQuestion', methods=['POST'])
def add_question():
    question = request.args.get('question')
    answer = request.args.get('answer')
    timdb = getTimDb()
    questions = timdb.questions.add_questions(question, answer)
    return jsonResponse(questions)

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return render_template('wall.html')

TODO päivitä esimerkki koodi

5.4. Versiointi ja versiohallinta

#

Tulosten versiohallintaan käytetään Git-versiohallintaohjelmistoa ja sovelluksen lähdekoodi sijoitetaan Git-pohjaiseen YouSource-julkistusjärjestelmään. YouSource-julkistusjärjestelmässä lähdekoodi on koko ajan ohjaajien ja tilaajan edustajien saatavilla.

Julkistetuissa dokumenttien versioissa tullaan käyttämään kolmiportaista versionumerointia. Ryhmän sisäiset versiot aloitetaan versionumerosta 0.0.1. Kunkin uuden version osalta kasvatetaan vähiten merkitsevää numeroa yhdellä, jolloin toinen versio on versionumeroltaan 0.0.2. Projektiorganisaatiolle julkistettavien versioiden numerointi alkaa versionumerosta 0.1.0 ja seuraavat versiot numeroidaan kasvattamalla toisen tason numeroa yhdellä. Ensimmäisen hyväksytyn version numero on 1.0.0. Sitä seuraavissa hyväksytyissä versioissa kasvatetaan toisen tason numeroa yhdellä, jolloin toinen hyväksytty versio on 1.1.0

5.5. Testaus

#

Toteutettavan sovelluksen toiminta varmistetaan yksikkö- ja järjestelmätestauksella. Testauksen tarkoituksena on löytää lähdekoodista virheitä sekä varmistaa, että sovellus vastaa sille asetettuja toiminnallisia ja laadullisia vaatimuksia.

Lähdekoodin yksikkötestaus on lähdekoodin kirjoittajan vastuulla. Yksikkötestauksessa hän varmistaa, että hänen kirjoittamansa koodi toimii suunnitellusti. Yksikkötestaus suoritetaan, mikäli mahdollista, ennen lähdekoodin julkaisua tilaajan käyttöön. Vähimmäisvaatimuksena ennen lähdekoodin antamista tilaajalle on, että vähintään kaksi projektiryhmän jäsentä tarkistaa lähdekoodin toiminnan.

Järjestelmätestauksesta vastuussa oleva henkilö laatii testauksen suorittamiseksi testaussuunnitelman ja vastaa testauskertojen suorittamisesta. Testaussuunnitelma sisältää kullakin testauskerralla suoritettavat testitapaukset vaihe vaiheelta. Järjestelmätestauksen suorittanut henkilö laatii siitä testausraportin, jossa kuvataan testauskerroilla suoritettujen testitapausten tulokset sekä havaitut virheet ja puutteet.

Sovelluksen käytettävyyteen kiinnitetään huomiota kaikkien kehitysvaiheiden aikana, mutta varsinaista käytettävyystestausta ei projektissa suoriteta.

5.6. Tulosten katselmoinnit ja hyväksyminen

#

Projektiryhmän kirjoittama lähdekoodi tullaan katselmoimaan vähintään kaksi kertaa projektin aikana. Katselmoinnissa tekninen ohjaaja ja tilaajan edustaja kommentoi lähdekoodia sekä antaa vinkkejä ja parannusehdotuksia. Lisäksi tekninen ohjaaja vastaa lähdekoodin hyväksymisestä. Katselmointiin osallistuu teknisen ohjaajan lisäksi koko projektiryhmä. Projektiryhmä kirjaa katselmoinnissa esille nousevat havainnot ja huomiot muistioksi.

Projektin lopussa tulokset kokonaisuutena hyväksytetään projektin ohjaajilla sekä toisella tilaajan edustajista. Yksittäisistä tuloksista tilaajan edustajan hyväksyntä tarvitaan vähintään toteutetuille sovelluksille, sovellusraportille ja vaatimusmäärittelylle. Tekninen ohjaaja hyväksyy lähdekoodin. Projektisuunnitelma ja projektiraportti, sovellusraportti sekä vaatimusmäärittely hyväksytään projektipäällikön, tilaajan edustajan ja projektin vastaavan ohjaajan allekirjoituksilla.

5.7. Tulosten koostaminen ja toimittaminen

#

Projektiryhmä kokoaa projektin tulokset projektikansioon ja CD-levylle. Projektikansioon kerätään kaikki projektissa laaditut dokumentit ja lähdekoodi. TIMissä laaditut dokumentit tallennetaan html- ja pdf-formaatissa. Lisäksi sähköpostiarkistot, tiivistetty projektin kuvaus ja jäsenten itsearvioinnit liitetään projektikansioon ja CD-levylle. CD-levylle tallennetaan edellisten lisäksi myös kehitetty sovellus.

CD-levy koostetaan vasta, kun kaikki projektin tulokset on hyväksytty. Tulokset toimitetaan tilaajalle CD-levyllä. Laitokselle toimitettava projektikansio, joka sijoitetaan projektitilan kokoushuoneessa olevaan hyllyyn. Projektikansion yhteyteen liitetään myös projekti-CD, ja toinen CD-levy toimitetaan laitoksen arkistoon.

Projektissa käytetty palvelin siirretään projektin päätyttyä tilaajan haltuun. Ohjelmiston viimeisimmät versiot ovat saatavilla YouSourcesta osoitteesta: https://yousource.it.jyu.fi/+timppa.

5.8. Tiedostojen ja hakemistojen nimeäminen

#

Lähdekooditiedostot nimetään PEP8[3]-suositusten mukaisesti. Tiedostojen ja hakemistojen nimet kirjoitetaan englanniksi. Lisäksi tiedostojen ja hakemistojen nimet kirjoitetaan aina pienillä kirjaimilla ja välilyönnit korvataan alaviivoilla.

Dokumenttitiedostot nimetään niitä kuvaavilla nimillä. Julkistettaessa nimiin lisätään versionumero luvussa 5.4 esitettyjen käytänteiden mukaisesti. Esimerkiksi projektisuunnitelman pdf-tiedosto nimettäisiin timppa_projektisuunnitelma_[numero].[numero].[numero].pdf.

5.9. Hakemistorakenne

#

Projektin tulokset tallennetaan CD-levylle ja TIMiin seuraavan hakemistorakenteen mukaisesti, TIMiin poislukien software-hakemisto.

dokumentit
    ajankaytto
    esittelyt
    itsearvioinnit
    projektiraportti
    projektisuunnitelma
    sovellusraportti
    vaatimusmaarittely
    lisenssisitoumus
palaverit
    esityslistat
    materiaalit
    poytakirjat
    tilakatsaukset
    katselmoinnit
testaus
    testausraportit
    testaussuunnitelmat
sahkopostiarkistot
    timppa
    timppa_opetus
software
    class_documentation
    source_code

6. Tehtävät, työmäärät ja työnjako

#

Luvussa määritellään projektiryhmän jäsenten tehtävät ja olennaisimmille tuloksille vastuuhenkilö, sekä arvioidaan tehtävien työmäärää.

6.1. Vastuualueet

#

Projektipäällikkönä toimii Juhani Sihvonen ja varapäällikkönä Matias Berg. Projektipäällikön vastuulle kuuluvat projektin suunnittelu ja hallinta sekä ajankäytön seuranta. Projektipäällikkö laatii projektisuunnitelman ja projektiraportin.

Tuloksille on nimetty vastuuhenkilöt taulukossa 6.1. Vastuuhenkilö vastaa tuotoksen etenemisestä sekä laadusta

Tulos Vastuuhenkilö
Projektisuunnitelma Juhani Sihvonen
Projektiraportti Juhani Sihvonen
Sovellusraportti Minna Lehtomäki
Testausdokumentit Matias Berg
Vaatimusmäärittely Bek Eljurkaev
Palvelin Hannu Viinikainen
Käyttöliittymä Minna Lehtomäki

Taulukko 6.1: Tulosten vastuuhenkilöt

6.2. Työmäärä ja työnjako

#

Kukin projektiryhmän jäsen käyttää sovellusprojektiin 320 tuntia. Yhteensä työtunteja projektiryhmälle kertyy 1600. Kunkin jäsenen työmäärä vastaa kahtatoista opintopistettä ja noin 20 viikkotuntia. Tämän lisäksi projektin jäsenet käyttävät oheiskursseihin yhteensä 200 tuntia.

Projektiryhmä jakaa tehtäviä tasapuolisesti siten, että kullekin jäsenelle tulee tehtäviä eri osa-alueelta. Projektin työmäärä jakautuu tehtävittäin jäsenten kesken kuvan 6.2 mukaisesti. Tehtävien jaossa on otettu huomioon jokaisen projektin jäsenen vastuualue. Työmäärien suunittelussa on huomioitu projektin jäsenten taidot ja aikataulut sekä projektin aikataulu. Arvioidut työmäärät perustuu projektipäällikön kokemuksiin muista projekteista. Työmäärien järkevyyttä on pohdittu vertailemalla Hälyri-projektin[1] suunniteltuihin ja toteutuneisiin työtunteihin.

Kuva 6.2 Työtunnit

Kuva 6.2 Työtunnit

7. Prosessi ja aikataulu

#

Luvussa kuvataan projektissa käytettävää prosessia ja suunniteltua aikataulua

7.1. Prosessi

#

Projekti koostuu suunnittelu- ja viimeistelyvaiheen lisäksi viidestä kehitysvaiheesta. Eri vaiheiden aloitus ja lopetus limittyvät, mutta vaiheet pyritään suorittamaan yksi kerrallaan.

Projektin ensimmäisessä vaiheessa suunnitellaan projektin läpivientiä, sekä laaditaan vaatimusmäärittely ja sovellussuunnitelmat. Ensimmäisen vaiheen jälkeen viidessä kehitysvaiheessa kehitetään suunnitellut ominaisuudet olemassa olevaan sovellukseen. Projektin viimeinen vaihe koostuu sovelluksen viimeistelystä sekä projektin päättämiseen liittyvistä tehtävistä.

Prosessimallina kehitysvaiheissa hyödynnetään Scrumia tietyin muokkauksin. Projektissa yhden kehitysvaiheen eli sprintin kesto on peräkkäisten projektipalaverien välinen aika, eli keskimäärin kaksi viikkoa. Projektipalaverit vastaavat osittain sprintin katselmointia, jossa projektiryhmä esittää kehittämiään ominaisuuksia projektiorganisaatiolle. Projektipalaverien jälkeen projektiryhmä pitää sprintin suunnittelu- ja retrospektiivitapaamiset viimeistään vuorokauden kuluessa projektipalaverista. Päivittäispalaverit ryhmä pitää kaksi kertaa viikossa. Päivittäispalaverissa jokainen kehitystiimin jäsen kertoo vuorollaan, mitä on tehnyt edellisen palaverin jälkeen, mitä tulee tekemään seuraavaan palaveriin mennessä, ja mahdolliset työtä haittaavat esteet.

Tuotteen kehitysjono sijaitsee projektiryhmän Trello-tilillä, jonne myös tilaajilla ja ohjaajilla on pääsy. Kehitysjonon päivittämisestä on vastuussa vaatimusmäärittelyn vastuuhenkilö, joka toimii myös sovelluksen omistajana.

Koska projektipäälliköllä on eniten käytännön kokemusta Scrumista, toimii hän projektissa Scrum masterina. Scrum masterin tehtäviin kuuluu päivittäispalavereihin kutsuminen, Scrumin sääntöjen noudattaminen, työtä haittaavien esteiden poisto ja tilaajan kanssa kommunikointi.

7.2. Aikataulu

#

Projekti alkoi 5.2.2015, ja sen suunniteltu päättymispäivä on 31.5.2015 mukaanlukien kahden viikon pelivara. Kuvassa 7.2. on esitelty projektin suunniteltu aikataulu vaiheittain.

Kuva 7.1 Aikataulu

Kuva 7.1 Aikataulu

8. Riskit ja niiden hallinta

#

Luvussa kuvataan projektissa tiedostetut riskit ja niiden arvioituja vaikutuksia projektin tuloksiin tai läpivientiin. Lisäksi kuvataan toimia niiden ennakoimiseksi ja ehkäisemiseksi sekä niistä toipumiseen.

8.1. Riskien todennäköisyydet ja haitat

#

Riskien todennäköisyydet ja niiden haittavaikutukset on arvioitu taulukossa 8.1. Todennäköisyyttä ja haittavaikutusta arvioidaan asteikolla pieni, keskinkertainen ja suuri.

Riski Todennäköisyys Haittavaikutus
Suunnitellun toteutusratkaisun puutteet keskinkertainen keskinkertainen
Kehittäjien tietotaidon puutteet keskinkertainen keskinkertainen
Jäsenten poissaolot keskinkertainen pieni
Kokemattomuus projektihallinnassa keskinkertainen pieni

Taulukko 8.1: Riskien todennäköisyydet ja haitat.

8.2. Suunnitellun toteutusratkaisun puutteet

#

Projektiryhmä joutuu päättämään, millä tekniikalla saadaan toivottuja toiminnallisuuksia toteutettua TIM -järjestelmään. Toteutusratkaisun toimivuutta on vaikeata arvioida ennen kokeilua, joten jokin ratkaisu saatetaan todeta huonoksi vasta toteutuksen jälkeen. Tästä johtuen ryhmä voi joutua toteuttamaan joitakin järjestelmän ominaisuuksia uudelleen, mikä vaatisi lisää aikaa, tai rajaamaan kyseisiä ominaisuuksia projektin ulkopuolelle.

Riskiä ehkäistään tutustumalla etukäteen vaihtoehtoisiin toteutustekniikoihin mahdollisimman hyvin. Riskin toteutuessa on mahdollista muuttaa tai vaihtaa käytettävää toteutustekniikkaa tai rajata joitakin toteutettavia ominaisuuksia projektin ulkopuolelle.

8.3. Kehittäjien tietotaitojen puutteet

#

Ohjelmiston toteutuksessa käytetään monia eri työkaluja ja tekniikoita, joista projektiryhmän jäsenillä ei ole aikaisempaa kokemusta. Näin ollen ryhmä ei aina osaa ennakoida mahdollisia ongelmakohtia. Tietotaitojen puute voi vaikeuttaa tavoitteiden saavuttamista, laskea kehittavan sovelluksen laatua tai viivästyttää projektin aikataulua.

Riskin ehkäisemiseksi ryhmän jäsenet tutustuvat käytettäviin työkaluihin ja tekniikoihin ja osallistuvat teknisen ohjaajan pitämään perehdytykseen. Ongelmatilanteita pyritään ratkaisemaan ensisijaisesti hyödyntämällä ryhmän sisäistä osaamista. Projektiryhmällä on myös käytettävissään tekninen ohjaajaa sekä projektiorganisaation ulkopuolisena asiantuntijana Ville Tirronen. Heidän osaamista ryhmä voi hyödyntää tarvittaessa.

8.4. Jäsenten poissaolot

#

Ryhmän yhdellä tai useammalla jäsenellä voi olla suunniteltuja (kuten esimerkiksi matka) tai ennakoimattomia (kuten sairastuminen) poissaoloja ja muita sitoumuksia. Ryhmän jäsenten poissaolot saattavat hidastaa ohjelmiston kehitystä.

Riskin ehkäisemiseksi tiedossa olevat poissaolot huomioidaan tehtävien jaossa etukäteen. Mahdollisuuden mukaan ryhmän jäsenet ilmoittavat tulevista poissaoloistaan hyvissä ajoin muille ryhmän jäsenille. Lyhyet poissaolot voidaan ratkaista työtuntien tasaamisella ennen poissaoloa tai poissaolon jälkeen. Pidemmän poissaolon tapauksessa tilanteesta keskustellaan projektin ohjaajan ja tilaajan edustajan kanssa.

8.5. Kokemattomuus projektin hallinnassa

#

Kaikilla projektiryhmän jäsenillä ei ole kokemusta projektin läpiviemisestä, joten työmäärien ja aikataulun arvioiminen on vaikeaa. Kokemattomuudesta johtuen työtehtävien tasainen jakaminen ryhmän jäsenille ja ryhmän jäsenten taitojen hyödyntäminen ei välttämättä ole ihanteellista.

Mahdollisten ongelmien ennakkoinnissa auttavat viikottaiset tilakatsaukset. Tilakatsauksilla tarkistetaan missä vaiheessa projekti on menossa ja onko mahdollisia ongelmia kohdattu. Projektihallinnassa ryhmän jäsenten apu projektipäällikölle on ensiarvoisen tärkeää. Ryhmän jäsenten täytyy muistaa, että projektipäällikkö on oppimassa projektin hallintaa ja 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ää suorittamatta. Jos projektin hallinnassa esiintyy ongelmia tai epäselvyyksiä täytyy niiden ratkaisemisesta keskustella vastaavan ohjaajan kanssa.

9. Yhteenveto

#

Timppa-projekti kehittää olemassa olevaan TIM-oppimisympäristöön kyselyominaisuuden sekä luentoseinän Sovellusprojekti-kurssilla keväällä 2015. Projektin tulokset luovutetaan tilaajalle toukokuun lopussa.

Sovelluksen ominaisuuksien kehittämisen lisäksi sovellusprojekti antaa projektiryhmän jäsenille käytännön kokemusta projektimuotoisesta työskentelystä sekä sen vaatimuksista ja työtavoista.

Lähteet

#

[1] Niko Mononen, Veli-Mikko Puupponen, Ilkka Rautiainen ja Atte Söderlund, ”Hälyri-projektisuunnitelma”, saatavilla PDF-muodossa (URL:https://trac.cc.jyu.fi/projects/sovproj/attachment/wiki/Halyri/Projektisuunitelma/Halyri\_projektisuunnitelma\_1.0.0.pdf), Jyväskylän yliopisto, tietotekniikan laitos, 2014.

[2] Jukka-Pekka Santanen, ”Tietotekniikan Sovellusprojektien ohje”, saatavilla WWW-osoitteessa (URL: http://www.mit.jyu.fi/opetus/sovellusprojektit/projohje.html) Jyväskylän yliopisto, tietotekniikan laitos, 29.1.2013.

[3] Guido van Rossum, Barry Warsaw, Nick Coghlan "PEP 8 - Style Guide for Python Code" saatavilla WWW-osoitteessa (URL: https://www.python.org/dev/peps/pep-0008/) 1.8.2013