Timantti-sovellusprojektin projektiraportti
Miika Kujala
Topi Latva-Salo
Tuomas Porvali
Marja Similä
Versio 1.0.0
Julkinen
13.12.2017
Jyväskylän yliopisto
informaatioteknologian tiedekunta
Jyväskylä
Hyväksyjä | Päivämäärä | Allekirjoitus | Nimenselvennys | | |
---|---|---|---|---|
Projektipäällikkö | ||||
Tilaaja | Vesa Lappalainen | |||
Ohjaaja | Jukka-Pekka Santanen | |
Tietoa dokumentista
Tekijät:
- Miika Kujala (MK),
miika.m.kujala@student.jyu.fi
- Topi Latva-Salo (TL),
topi.h.latva-salo@student.jyu.fi
- Tuomas Porvali (TP),
thetupo26@gmail.com
- Marja Similä (MS),
marja.j.k.simila@student.jyu.fi
Dokumentin nimi: Timantti-sovellusprojektin projektiraportti
Tiedosto: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/dokumentit/projektiraportti
Tiivistelmä: Timantti-projekti kehitti kevään 2017 aikana TIM-järjestelmään dokumenttien tulostustoiminnon. Projektiraportissa kuvataan sovellusprojektin läpivientiä tulosten, käytänteiden, projektin jäsenten, resurssien, tehtäväjaon, työmäärien, aikataulun, riskienhallinnan ja jäsenten kokemusten osalta. Projektiraportissa verrataan projektin toteutunutta läpivientiä suunniteltuun sekä kuvataan havaittujen erojen syitä ja vaikutuksia.
Avainsanat: aikataulu, CSS-tulostus, kokemuksia, käytänteet, opittua, projekti, projektiorganisaatio, projektiraportti, prosessi, resurssit, riskienhallinta, taustaa, tavoitteet, tehtävät, TeX-tulostus, TIM, tulokset, tulostus, työmäärät, työnjako.
Muutoshistoria
Versio | Päivämäärä | Muutokset | Tekijät |
---|---|---|---|
0.0.1 | 23.5.2017 | Dokumentille luotiin pohja ja kirjoittaminen aloitettiin. | MS |
0.0.2 | 17.6.2017 | Lukua 5 kirjoitettiin. | MS |
0.0.3 | 22.6.2017 | Lukuja täydennettiin. | MS |
0.0.4 | 26.6.2017 | Oppimiskokemuksia kirjoitettiin. | TP, MS |
0.1.0 | 26.6.2017 | Ensimmäinen versio toimitettiin tarkistukseen. | MS |
0.1.1 | 26.7.2017 | Korjauksia tehtiin palautteen perusteella. | MS |
0.1.2 | 26.9.2017 | Topi lisäsi oppimiskokemuksensa. | TL |
0.2.0 | 29.10.2017 | Lisättiin toteutuneita tuntimääriä ja aikatauluja. | MK |
0.5.0 | 24.11.2017 | Päivitettiin tietoja ja tehtiin korjauksia. | MK |
1.0.0 | 13.12.2017 | Tehtiin korjauksia. | MK |
Tietoa projektista
Timantti-projekti kehitti Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitettyyn TIM-järjestelmään tulostustoiminnon. Se mahdollistaa dokumenttien tulostamisen sellaisenaan tai liittämällä niihin kansilehden ja/tai sisällysluettelon. Dokumentteja voidaan muuntaa sekä PDF- että LaTeX-tiedostoksi.
Tekijät
- Kujala Miika (MK),
miika.m.kujala@student.jyu.fi
- Latva-Salo Topi (TL),
topi.h.latva-salo@student.jyu.fi
- Porvali Tuomas (TP),
thetupo26@gmail.com
- Similä Marja (MS),
marja.j.k.simila@student.jyu.fi
Tilaajan edustaja
- Lappalainen Vesa,
vesa.t.lappalainen@jyu.fi
Ohjaajat
Lehtinen Mika,
mika.k.lehtinen@student.jyu.fi
Santanen Jukka-Pekka,
santanen@mit.jyu.fi
Yhteystiedot
Sähköpostilistat
timantti@korppi.jyu.fi
timantti_opetus@korppi.jyu.fi
1. Johdanto
Timantti-projekti kehitti Sovellusprojekti-kurssilla keväällä 2017 Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitettyyn TIM-oppimisympäristöön dokumenttien tulostustoiminnon. Toiminto mahdollistaa dokumenttien tulostamisen kolmella eri tavalla. Yksinkertaisin tulostustapa on hyödyntää yksittäisen TIM-dokumentin tulostukseen CSS-tyylimäärittelyitä ja selaimen omaa tulostustoimintoa. Jatkokehitykseen sovittu Advanced CSS -tulostus mahdollistaa pluginien ajon, ja siitä toteutettiin projektin aikana muutama ominaisuus. Kolmas tulostustoiminto hyödyntää Pandoc-muunninta, TeX-ladontajärjestelmää muodostettaessa PDF- ja LaTeX-dokumentteja.
Projektiraportissa kuvataan Timantti-projektin toteutunutta läpivientiä. Laatimisen apuna on käytetty Timantti-projektin projektisuunnitelmaa [1], testaussuunnitelmaa [2] ja vaatimusmäärittelyä [3], Timppa-projektin projektiraporttia [4], sovellusraporttia [8], testausraporttia [9] sekä käyttöohjetta [10].
Luvussa 2 esitellään projektiraportissa käytetyt käsitteet. Luku 3 kuvaa projektin taustoja, tulokset ja tavoitteet. Luku 4 käsittelee projektin organisaatiota ja resursseja. Luku 5 kuvaa projektin käytänteet. Luvussa 6 tarkastellaan projektin tehtäviä, työmäärää ja työnjakoa. Luvussa 7 kuvataan prosessia ja aikataulua. Luvussa 8 tarkastellaan projektin riskejä ja niiden hallintaa. Luvussa 9 kuvataan jäsenten kokemuksia ja oppimista.
2. Käsitteet
Luvussa kuvataan projektiraportissa käytettävät käsitteet.
2.1 Ohjelmointikielet, merkintäkielet ja tiedostotyypit
Dokumentissa käytettäviä ohjelmointikieliin, merkintäkieliin ja tiedostotyyppeihin liittyviä käsitteitä ovat seuraavat:
- Blueprint on Flask-ohjelmistokehykseen kuuluva rakenne, joka on kokoelma näkymiä, templaatteja, staattisia tiedostoja ja muita ohjelmaan kuuluvia elementtejä.
- CSS (Cascading Style Sheets) on tyyliohje, jota käytetään erityisesti WWW-dokumenteissa tyylimäärittelyyn.
- Flask on Python-ohjelmointikielellä kirjoitettu WWW-ohjelmistokehys.
- HTML on hyperlinkkejä sisältävän tekstin merkintäkieli, jolla voidaan kuvata tekstin rakennetta.
- JavaScript on dynaaminen ohjelmointikieli, jolla lisätään WWW-sivulle toiminnallisuutta.
- Markdown on TIM-oppimisympäristössä käytössä oleva merkintäkieli, jolla on yksinkertainen tekstimuotoinen syntaksi.
- PDF on ohjelmistoriippumaton tiedostomuoto, jota käytetään pääasiassa tulostamisessa ja sähköisissä julkaisuissa.
- Skripti on komentosarja, jolla voidaan automatisoida tehtäviä.
2.2 Ohjelmistot
Dokumentissa käytettäviä ohjelmistoihin liittyviä käsitteitä ovat seuraavat:
- LaTeX on TeXin laajennos. LaTeX-muoto on käyttäjälle selkeämpi kuin TeX, ja TeXiä käytetäänkin nykyisin lähinnä LaTeXin kautta.
- OpenOffice on avoimen lähdekoodin toimisto-ohjelmistoperhe, joka sisältää mm. tekstinkäsittelyohjelman.
- Pandoc on ohjelma, joka muuttaa tekstidokumentteja merkintäkielestä toiseen.
- PyCharm on integroitu kehitysympäristö, jota käytetään Python-kielisen koodin laatimiseen ja ajamiseen.
- TeX on tekstin ladontajärjestelmä, joka mahdollistaa painokelpoisten dokumenttien muodostamisen ja samanlaisen lopputuloksen kaikilla tietokoneilla.
2.3 Kehitettävä sovellus
Dokumentissa käytettäviä TIM-järjestelmään ja kehitettävään sovelukseen liittyviä käsitteitä ovat seuraavat:
- Advanced CSS -tulostus on TIMiin kehitettävä tulostustoiminto, joka hyödyntää JavaScriptiä ja CSS-tyylejä. Tulostustoiminto osaa mm. ajaa plugineja.
- CSS-tulostus on TIMiin kehitetty tulostusominaisuus, joka hyödyntää selaimen omaa tulostustoimintoa ja CSS-tyylimäärityksiä.
- Plugin tarkoittaa TIM-järjestelmässä dokumentteihin lisättäviä interaktiivisia liitännäisiä. Esimerkiksi koodipluginilla voi kirjoittaa ja ajaa koodia.
- TeX-tulostus on TIMiin kehitetty tulostustoiminto, joka hyödyntää Pandoc-muunninta ja TeX-ladontajärjestelmää. Tulostustoiminnolla voidaan muodostaa laadukas PDF-tuloste.
- TIM on Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitetty interaktiivinen oppimisympäristö.
- Tulostusasetukset mahdollistavat muodostettavan dokumentin ulkoasun asetusten säätämisen.
3. Taustaa ja tavoitteet
Luvussa kuvataan projektin taustoja ja tavoitteet sekä niiden toteumaa. Luvussa tarkastellaan myös projektin toteuttamat tulokset ja oppimistavoitteet sekä näiden toteuma. Sovelluksen toteuma vastasi sovellukselle asetettuja tavoitteita.
3.1 Taustaa
Jyväskylän yliopiston informaatioteknologian tiedekunnassa on laadittu luentomonisteita pääosin LaTeXilla, Microsoft Wordillä ja OpenOfficella. Ohjelmistokursseille OpenOfficella laadituista oppimateriaaleista muodostettiin staattinen HTML-versio hyödyntämällä erilaisia skriptejä. HTML-dokumentti haluttiin muodostaa PDF:n sijaan, koska se skaalautuu eri laitteilla luettaessa. Näin luentomonisteen lukeminen onnistui myös tabletilla ja älypuhelimella. Opiskelijoille pystyttiin näin tarjoamaan oppimateriaaleihin pääsy sekä paperiseen PDF-versioon että elektroniseen HTML-versioon.
Edellä mainitulla tavalla laadittua luentomonistetta oli kuitenkin vaikea ylläpitää, sillä muutosten tekeminen oli hankalaa ja hidasta. Ongelmaa helpottamaan kehitettiin TIM-järjestelmä. TIMin ja Markdown-merkintäkielen ansiosta HTML-dokumentteja oli helppo muodostaa. Luennoitsijat kaipasivat TIM-dokumentteihin vuorovaikutteisuutta, jotta esimerkiksi ohjelmakoodia voisi ajaa suoraan TIMissä. Pikkuhiljaa TIMin interaktiiviset ominaisuudet alkoivat lisääntyä.
Nykyään käytössä on laajat ja monipuoliset sähköiset TIM-oppimateriaalit. HTML-dokumenttien puutteellisten tulostusominaisuuksien ja TIM-tietojärjestelmän interaktiivisten ominaisuuksien vuoksi laadukasta paperista versiota ei ole enää kuitenkaan mahdollista muodostaa suoraan TIM-dokumentista.
3.2 Sovellukselle asetetut tavoitteet
Projektin tavoitteena oli kehittää TIMiin dokumenttien tulostustoiminto, jonka avulla mikä tahansa TIM-dokumentti olisi mahdollisimman helppo muuttaa paperille tulostettavaan muotoon. Sovelluksen toimintoja suunniteltaessa päädyttiin lopulta kolmeen erilaiseen mahdolliseen toteutustapaan: CSS-tulostukseen, TeX-tulostukseen ja nk. Advanced CSS -tulostukseen.
Ensimmäinen ja palvelimen kannalta vaivattomin toteutustapa oli kehittää tulostukseen vaikuttavia CSS-tyylisääntöjä siten, että TIM-dokumentista saisi siistin tulosteen suoraan selaimen omalla tulostustoiminnolla. Toinen tapa oli muuntaa dokumentin Markdown-merkintäkielen mukainen kuvaus palvelimella LaTeXiksi ja siitä edelleen PDF-tiedostoksi. Kolmas tapa oli ikään kuin näiden kahden välimuoto. Siinä selaintulostusta varten kehitettäisiin JavaScriptillä toiminnallisuuksia, joilla dokumenttia voisi valmistella CSS-tulostusta varten, jotta selaimessa tapahtuvalla tulostuksella saavutettaisiin entistäkin parempi lopputulos.
Projektissa toteutettiin kaikki välttämättömiksi, tärkeiksi ja mahdollisiksi merkatut vaatimukset. Advanced CSS -tulostus sovittiin lopulta nopeasti jatkokehitysideaksi, mutta osa sen alle kaavaillusta toiminallisuudesta tuli lopulta kuitenkin toteutettua projektissa.
CSS-tulostuksen ominaisuuksista projektissa toteutettiin seuraavat:
- Tulostuksen tulee käyttää selaimen omaa tulostustoimintoa.
- Linkin URL-osoiteen tulee tulostua vain kerran.
- Käyttäjän tulee voida halutessaan tulostaa TIM-dokumenttiin kirjoitetut kommentit.
- Tulostukseen tulee voida lisätä manuaalinen sivunvaihto.
- Tulosteessa tulee pakottaa sivunvaihto sivun lopun yksinäisten otsikoiden eteen.
TeX-tulostuksen ominaisuuksista projektissa toteutettiin seuraavat:
- Markdown tulee muuntaa palvelimella LaTeX- tai PDF-muotoon.
- Tulostettavaan dokumenttiin tulee halutessaan saada kansilehti, sisällysluettelo ja takakansi.
- Tulostettava PDF-tiedosto tulee voida tallentaa TIMiin.
- TIM-dokumenttiin tulee voida lisätä sisältöä, joka näkyy tulostettavassa tiedostossa, mutta ei näy tarkasteltaessa TIM-dokumenttia verkossa.
- TIM-dokumenttiin tulee voida lisätä sisältöä, joka näkyy tarkasteltaessa TIM-dokumenttia verkossa, muttei tule tulosteeseen.
- Pluginien tulee antaa itsestään oletustulostusmuoto Markdown-muodossa.
- Plugin-kappaleeseen tulee voida määritellä, miten pluginin halutaan tulostuvan.
- Pluginin tilalle tulee voida määrittäää sen paikalle tulosteeseen automaattisesti asetettava kuva.
- Tulostusasetukset määritellään TIM-dokumentissa.
- Henkilökohtaiset tulostusasetukset tulee voida tallentaa TIMiin.
- Dokumenttikohtaiset tulostusasetukset tulee voida tallentaa TIMiin.
Käyttöliittymän ominaisuuksista projektissa toteutettiin seuraavat:
- TIMin käyttöliittymässä on elementti, josta tulostustoiminnon voi käynnistää.
- Tulostustoiminnon käyttöohje on saatavilla vasemman reunan valikosta.
- Käyttöliittymään tulee lisätä tulostusasetusikkuna.
- Tulostettavasta tiedostosta tulee linkki tulostusikkunaan.
- Tulostustoiminnossa syntyneiden virheiden virheilmoitusten tulee näkyä käyttäjälle.
Advanced CSS -tulostuksen ominaisuuksista projektissa toteutettiin seuraavat:
- TIM-dokumentin pluginit tulee pystyä ajamaan automaattisesti tulostettaessa.
- TIM-dokumentin pluginista tulee tulostettaessa generoitua automaattisesti sen sisältöä vastaava kuva, joka voidaan sijoittaa sitten sijoittaa kyseisen pluginin paikalle tulostettavaan tiedostoon.
TeX-tulostuksen osalta jatkokehitysideoiksi sovittiin seuraavat vaatimukset:
- Taulukolla tulee olla viivat tulostetiedostossa.
- TIM-dokumenttiin tulee voida lisätä sisältöä, joka tulee näkyviin tulostetiedostoon ainoastaan kohdetiedostomuodon ollessa LaTeX.
- Plugineilla tulee olla reitti, josta sovellus voi käydä kysymässä, mitä LaTeX-paketteja plugin vaatii toimiakseen template-dokumenttiin ladattavan.
- Tulostimen tulee tukea täyttä unicode-merkistöä.
- Käyttäjällä tulee olla mahdollisuus luoda ladattavien kuvien URLeille oma henkilökohtainen whitelist.
- Sovellukselle tulee voida antaa parametri, jolla sovellusta voi pyytää tuhoamaan tulostetiedostojen muodostamista varten lataamiensa kuvien cachen.
- Tulostimelta tulee saada kerralla ulos kaikki dokumentin käännöksessä syntyneet virheet, ei vain ensimmäistä.
- Sovelluksen tulee huomioida lainattuja kappaleita sisältävän TIM-dokumentin muutos, jos jokin lainattu kappale muuttuu.
- Lainatun kappaleen ohessa tulee tulostetiedostossa näkyä merkintä tekijästä.
- Sovelluksen tulee huolehtia automaattisesti muodostettujen tulostetiedostojen poistamisesta palvelimen levyltä.
- Käyttäjällä tulee olla mahdollisuus pakottaa tulostustoiminto tekemään uuden version dokumentin tulosteesta.
- Sovelluksella tulee olla mahdollisuus jonkin tietylle kielelle käännetyn TIM-dokumentin version tulostamiselle.
CSS-tulostuksen osalta jatkokehitysideoiksi sovittiin seuraavat vaatimukset:
- CSS-tulostusta varten luodun Page Break -elementin tulee vaikuttaa myös TeX-tulostukseen.
- CSS-tulostuksessa tulee voida vaihtaa tekstien värejä.
- CSS-tulostuksessa näkyvämmät viivat taulukoille.
- Area-elementin sivunvaihto tulee estää CSS-tulostuksessa.
- CSS-tulostuksessa tulee muodostaa tulostusta varten pluginin paikalle sitä edustava kuva.
- Mozilla Firefoksin sivutuksen ongelmien korjaus. Usean sivun mittaiset koodipluginnit ja ylimääräiset tyhjät sivut.
- Parempi tuki Microsoft Edge verkkoselaimelle.
Käyttöliittymän osalta jatkokehitysideoiksi sovittiin seuraavat vaatimukset:
- Visible-print -tyyli näkymään edit-tilassa.
- Pluginien automaattiselle ajamiselle tulee CSS-tulostuksessa olla käyttäjän valinta.
- Käyttäjällä tulee olla mahdollisuus muuttaa template-dokumentissa määriteltyjen tulostetiedoston muotoilua ohjaavien muuttujien arvoja.
3.3 Projektin tulokset
Projektiryhmä toteutti seuraavat tulokset:
- Ajankäyttöraportti sisältää ryhmän jäsenten työtunnit tehtävittäin.
- Esittelymateriaalit koostuvat väli- ja loppuesittelyiden materiaaleista ja muistioista.
- Itsearvioinnit kuvaavat kunkin ryhmän jäsenen oppimista ja toimintaa projektissa.
- Käyttöohje sisältää eri tulostusominaisuuksien ohjeet käyttäjälle.
- Lisenssisitoumuksella ryhmä on sitoutunut asettamaan toteuttamansa lähdekoodin avoimen lähdekoodin MIT-lisenssin alle ja muut tulokset Creative Commons Attribution 4.0 International -lisenssin alle.
- Lähdekoodi sisältää kehitetyn tulostusominaisuuden ohjelmakoodin.
- Palaverien dokumentit koostuvat esityslistoista, pöytäkirjoista ja tilakatsauksista.
- Projektiraportti kuvaa projektin toteutuneen läpiviennin ja tavoitteiden toteutumisen.
- Projektisuunnitelma kuvaa projektin suunniteltua läpivientiä käsitellen mm. tavoitteita, käytänteitä, tehtäviä tuntimäärineen, työnjakoa, aikataulua ja riskien hallintaa.
- Sovellusraportti kuvaa kehitetyn sovelluksen käyttöliittymää, toteutusratkaisuja ja rakennetta sekä puutteita ja jatkokehitysideoita.
- Sähköpostiarkistot sisältävät projektin molemmille sähköpostilistoille lähetetyt viestit.
- Testaussuunnitelma sisältää suunnitellut järjestelmätestauksen testitapaukset.
- Testausraportti sisältää kaikkien testauskertojen tulokset kuvaten havaitut puutteet ja virheet.
- Vaatimusmäärittely kuvaa kehitettävälle sovellukselle asetetut vaatimukset.
- Vaitiolosopimuksella ryhmän jokainen jäsen on sitoutunut salassapitovelvollisuuteen koskien TIMin materiaalia.
Suunnitelmista poiketen luokkadokumentaatiota ei laadittu. Myöskään vaatimusmäärittelystä ei laadittu varsinaista dokumenttia, vaan vaatimukset tulostettiin suoraan Trellosta. Kaikki muut dokumentit laadittiin alkuperäisen suunnitelman mukaisesti. Dokumentteihin edistyminen ja ongelmalistaus kirjattiin joitain esiintyneitä ongelmia ja toteutusratkaisuja.
3.4 Oppimistavoitteet
Projektiryhmän jäsenet kokevat saaneensa kokemusta projektimuotoisesta työskentelystä, mikä oli ryhmällä tavoitteena. Myöskin erilaisiin ohjelmointi- ja projektinhallinta työkaluihin saatiin tutustua tavoitteiden mukaisesti, ja niitä osattiin hyödyntää melko hyvin. Projektinjäsenten ohjelmointitaidot kehittyivät projektissa tavotteiden mukaisesti. Marja Similän osalta ohjelmointitaitojen kehittyminen ei vastannut odotuksia. Jäsenet saivat myös kokemusta testaamisesta, sovelluksen kehitysprosessin vaiheista ja kuinka niitä tulee suunnitella.
Ryhmän jäsenten henkilökohtaiset oppimistavoitteet ja kokemukset löytyvät luvusta 9.
4. Organisaatio ja resurssit
Luku kuvaa projektiorganisaatiota sekä projektin työkaluja ja tiloja. Luvussa esitellään myös sovellusprojektiin liittyneet luennot sekä projektiryhmälle järjestetyt perehdytykset. Organisaation ja resurssien osalta toteuma vastasi suunnitelmaa.
4.1 Projektiorganisaatio
Organisaation osalta toteuma vastasi suunitelmaa.
Projektiorganisaatio koostui projektiryhmästä, tilaajan edustajasta ja ohjaajista. Projektiryhmän jäsenet olivat Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä.
Projektin tilaajana oli Jyväskylän yliopiston informaatioteknologian tiedekunta, jonka edustajana toimi Vesa Lappalainen. Projektin vastaavana ohjaajana toimi Jukka-Pekka Santanen ja teknisenä ohjaajana Mika Lehtinen.
Projektiryhmän käyttöön annetuista tietokoneista ja ohjelmistoista vastasi Jyväskylän yliopiston ATK-lähituki. Sovellusprojektiin kuuluvista viestintäopinnoista vastasi kirjoitusviestinnän opettaja Kati Rantala-Lehtola ja puheviestinnän opettaja Hanna Kivimäki. Sovellusprojektiin kuuluvan käytettävyyspäivän piti Johanna Silvennoinen.
4.2 Laitteet ja tilat
Projektiryhmän käyttöön annettiin Agoran toisesta kerroksesta työhuone AgC225.3. Huoneessa oli jäsenten käyttöön neljä tietokonetta Windows 10 -käyttöjärjestelmällä.
Projektissa vaadittavien dokumenttien tulostamiseen löytyi monitoimitulostin, johon projektin jäsenille annettiin rajaton tulostuskiintiö projektin ajaksi. Jäsenten käytössä oli myös taukohuone, jonne Jyväskylän yliopisto kustansi kahvit ja teet projektin ajaksi. Palavereita varten jäsenet pystyivät varaamaan kokoushuoneen AgC226.1 ja digitaalisanelimen.
Laitteiden ja tilojen osalta toteuma vastasi suunnitelmaa. Digitaalisanelinta päädyttiin käyttämään vain ensimmäisessä palaverissa.
4.3 Dokumentointityökalut
Projektin pääasiallinen dokumentointiväline oli TIM-järjestelmä. Sillä laadittiin kaikki luvussa 3.3 mainituista projektin dokumenteista lukuunottamatta ajankäyttöraporttia ja vaatimusmäärittelyä. Tilakatsauksiin käytettiin myös TIMiä ja kaaviot poimittiin Excel-työtuntitaulukosta. Projektin aikataulun suunnitteluun käytettiin GanttProject-ohjelmaa. Tulostustoimnnon työnkulkukaavioita laadittiin UMLet-ohjelmalla.
Ohjelmakoodin versiohallinnassa käytettiin GitLabia. Vaatimukset kirjattiin Trelloon.
Projektin dokumentit sijoitettiin TIM-järjestelmään osoitteeseen https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti
. Jäsenillä oli käytössä yhteinen verkkolevy, joka oli sijoitettu hakemistoon \\sovpa7.cc.jyu.fi\timantti
. Tähän hakemistoon projektin jäsenet pääsivät käsiksi tietokoneen S:
-asemalta. Projektilla oli myös oma WWW-sivusto osoitteessa http://sovellusprojektit.it.jyu.fi/timantti/
. Sivustoa ei kuitenkaan käytetty projektin aikana.
Dokumentointi työkalujen osalta toteuma vastasi suunnitelmaa.
4.4 Ohjelmointityökalut
TIM-järjestelmän kehittämiseen käytettiin Python-ohjelmointikieltä. JavaScript-kielellä toteutettiin muutokset TIMin käyttöliittymään. Koodin ajamiseen ja muodostamiseen projektiryhmä käytti PyCharm-sovelluskehitysympäristöä. Projektissa käytettiin myös CSS-kieltä yksinkertaisemman tulostustoiminnon toteuttamiseen.
Pandoc-nimistä ohjelmaa projektissa käytettiin muuntamaan Markdown-tiedostomuoto LaTeX-tiedostoksi ja PDF-tiedostoksi. Projektin käyttön oli annettu projektille tarkoitettu kehitysympäristö, joka löytyy osoitteesta http://timg.it.jyu.fi/
.
Käytettyjen ohjelmointityökalujen osalta toteuma vastasi suunnitelmaa.
4.5 Luennot ja perehdytykset
Sovellusprojektin oheiskurssiin Sovellusprojektin hallintaa, viestintää ja työkaluja kuuluivat seuraavat luennot:
- Aloitusluento,
- Projektin hallinta ja suunnittelu,
- Vaatimusmäärittely,
- Tekijänoikeudet ja sopimukset sekä
- Käytettävyyspäivä.
Projektin teknisen ohjaajan toimesta projektiryhmälle pidettiin perehdytys TIM-järjestelmästä. Tämän lisäksi Jonne Itkonen ja Ville Isomöttönen pitivät perehdytyksen versiohallinnasta.
Sovellusprojekti-kurssin ohessa järjestettiin Projektiviestintä IT alalla -kurssi. Sen puhe- ja kirjoitusviestinnän osuuksiin kuului luentoja, kaksi väliesittelyä sekä yksilö- ja ryhmätehtäviä.
Kaikki suunnittelut luennot ja perehdytykset pidettiin eli toteuma vastasi suunnitelmaa. Muita perehdytyksiä ei suunniteltujen lisäksi pidetty.
5. Käytänteet
Luku kuvaa projektissa noudatettuja käytänteitä liittyen mm. projektin tiedotukseen sekä tulosten tallentamiseen ja julkistamiseen. Käytänteiden tarkoituksena oli tukea projektin läpivientiä aikataulussa, tavoitteiden saavuttamista ja laadukkaiden tulosten aikaan saamista.
Käytänteiden osalta toteuma vastasi suunnitelmaa osittain. Viestintää kasvokkain tapahtui vähemmän kuin oli suunniteltu. Myöksään TIM-dokumentteja ei hyödynnetty niin tehokkaasti kuin oli suunniteltu.
5.1 Tiedotus
Projektiorganisaatiolle projektiryhmän oli tavoitteena tiedottaa projektissa tehdyista muutoksista ja poikkeamista. Kaikista kehitettävään sovellukseen liittyvistä vaihtoehdoista ja valinnoista keskusteltiin projektiorganisaatioon kuuluvien kesken.
Tiedotus projektiorganisaatiolle hoidettiin pääosin palavereissa. Palavereiden ulkopuolella projektiryhmä tiedotti jonkin verran projektiorganisaatiolle. Projektin sujuvamman etenemisen kannalta olisi ollut olennaista tiedottaa useammin ja kysyä neuvoa ongelmiin nopeammin. Sähköpostia käytettiin myös jonkin verran projektin aikana projektille perustetun sähköpostilistan timantti@korppi.jyu.fi
kautta. Listalle oli jakelu- ja lähetusoikeudet kaikilla projektiorganisaatioon kuuluvilla. Lisäksi ATK-lähitukeen kuuluville Petri Antilalle ja Santeri Lapinmäelle oli annettu listalle lähetysoikeudet. Sähköpostilistalle lähetetyt sähköpostit ovat nähtävissä arkistossa osoitteessa https://korppi.jyu.fi/kotka/servlet/list-archive/timantti/
. Jakelulistalla olleet sähköpostiosoitteet löytyvät osoitteesta https://korppi.jyu.fi/kotka/servlet/list-archive/timantti/dist.html
.
Projektin vastaavan ohjaajan, teknisen ohjaajan ja projektiryhmän väliseen viestintään oli perustettu sähköpostilista timantti_opetus@korppi.jyu.fi
. Postilistan viestit arkistoituivat osoitteeseen https://korppi.jyu.fi/kotka/servlet/list-archive/timantti_opetus/
ja listalle kuuluneet sähköpostiosoitteet löytyvät osoitteesta https://korppi.jyu.fi/kotka/servlet/list-archive/timantti_opetus/dist.html
. Tätä sähköpostilistaa ei projektin aikana käytetty kovinkaan paljon.
Sähköpostilistojen lisäksi projektissa esiintyvistä ongelmista tiedotettiin TIM-järjestelmään luotujen dokumenttien avulla. Järjestelmään luotiin projektin kansioon dokumentit Edistyminen[5] ja Ongelmalistaus[6]. Edistyminen-dokumenttiin listattiin projektissa saavutetut onnistumiset. Jokaisesta onnistumisesta laitettiin linkki dokumenttiin, jossa kuvattiin tarkemmin kyseistä ratkaisua. Ongelmalistaus-dokumentissa listattiin projektissa havaitut tulostusongelmat sisältäen linkit tarkempiin kuvauksiin. TIM-dokumentin asetuksia muokkaamalla projektiorganisaatioon kuuluvat saivat sähköpostitse ilmoituksen, jos dokumenttia muokattiin. Näin dokumentoidusta ongelmasta tai onnistumisesta lähti suoraan sähköpostilla ilmoitus halukkaille. Näitä dokumentteja käytettiin ainoastaan projektin alussa, ja niissä esitettyjä ongelmia käsiteltiin joko sähköpostilla tai palavereissa.
Projektiryhmän sisäinen viestintä tapahtui projektin alussa pääosin kasvokkain ja WhatsAppia käytettiin vain vähän. Projektin loppupuolella kesätöiden, kesäkurssien ja muiden velvoitteiden alkaessa projektiryhmän sisäinen viestintä siirtyi lähes kokonaan WhatsAppin varaan.
Toteuma vastasi suunnitelmaa melko hyvin. Projektiryhmä käytti projektin loppupuolella WhatsAppia enemmän kuin kasvokkaista viestintää, joten tämän ostalta toteuma ei vastannut suunnitelmaa. Myöskään TIMin ongelmalistaus- ja edistyminen-dokumentteja ei käytetty niin aktiivisesti kuin oli suunniteltu. Muilta osin suunnitelma piti paikkansa.
5.2 Palaverit
Helmikuusta Huhtikuuhun projektin palaverit järjestettiin lähes aina torstaisin aamupäivästä. Huhtikuusta eteenpäin jäsenten kesätöisä johtuen palaverit siirrettiin alkamaan kello 16:00 ja viikonpäivä vaihteli projektiorganisaation jäsenten velvoitteiden mukaan. Palavereita järjestettiin helmikuulta kesäkuulle vähintään joka toinen viikko. Heinäkuussa palavereita ei pidetty. Viimeinen palaveri pidettiin 9.8.2017.
Kehitettävään sovellukseen liittyvät päätökset ja asioiden hyväksynnät suoritettiin palavereissa. Myös tuloksia koskevat asiat käsiteltiin palavereissa.
Jokaisessa palaverissä oli edustettuna jokainen projektiorganisaation osapuoli, joten kaikki palaverit olivat päätösvaltaisia. Tilaajan edustaja, tekninen ohjaaja ja vastaava ohjaaja olivat mukana jokaisessa palaverissa. Projektiryhmästä oli alussa kaikki mukana. Huhtikuusta lähtien projektie palavereissa oli vähintään kolme jäsentä paikalla. Palaverien esityslista oli tarkoitus toimittaa vähintään 24 tuntia ennen palaverin alkua projektiorganisaatiolle. Muutaman kerran tästä tavoitteesta jäätiin. Esityslistan myöhästyessäkin palavereissa sovittiin palaveri lailliseksi.
Jokaisessa palaverissa projektiryhmästä valittiin puheenjohtaja ja sihteeri. Jokainen ryhmän jäsen toimi vähintään kerran molemmissa tehtävissä. Puheenjohtaja laati muun projektiryhmän avustuksella esityslistan ja toimitti sen projektiorganisaatiolle. Puheenjohtaja ohjasi keskustelua palavereissa laatimansa esityslistan mukaisesti. Puheenjohtaja myös tarkisti sihteerin kirjoittaman pöytäkirjan ennen sen toimittamista eteenpäin projektiorganisaatiolle.
Sihteeri kirjasi ylös palavereissa keskustellut asiat ja kirjoitti niiden pohjalta pöytäkirjan. Sihteeri toimitti pöytäkirjan puheenjohtajalle. Tarkistuksen ja mahdollisten korjausten jälkeen sihteeri toimitti pöytäkirjan projektiorganisaatiolle. Jokainen ryhmänjäsen toimitti ensimmäisen pöytäkirjansa vastaavalle ohjaajalle tarkistettavaksi.
Toteuma vastasi melko hyvin suunnitelmaa. Palavereita pidettiin kesällä harvemmin kuin kaksi kertaa kuukaudessa. Palaveri aikataulu olisi pitänyt jos projekti ei olisi viivästynyt. Muilta osin palaverit vastasivat suunnitelmaa.
5.3 Lähdekoodi
Projektissa toteutetun lähdekoodin projektiryhmä sitoutui allekirjoittamallaan lisenssisitoumuksella sijoittamaan avoimen lähdekoodin MIT-lisenssin alle. Lähdekoodin käytänteissä noudatettiin olemassa olevaa TIM-koodia, joka vastasi PEP8-tyyliohjetta[7]. Muotoilussa hyödynnettiin PyCharm-kehitysympäristöstä löytyvää muotoiluominaisuutta.
Kaikki aliohjelmat, metodit ja luokat nimettiin englanninkielellä ja nimeämisessä käytettiin kuvaavia sanoja. Kaikki koodin dokumentaatio ja kommentit laadittiin englannin kielellä.
Lähdekoodiin ei jäänyt virheilmoituksia. Lisäksi varmistetiin että se meni PyCharmin läpi virheittä. Lisätylle print
-reitille luotiin oma Flaskin mukainen blueprint
.
Lähdekoodin osalta toteuma vastasi suunnitelmaa.
5.4 Versiointi ja versiohallinta
Versiohallintaan projektiryhmä käytti suunnitelmien mukaisesti GitLabia, jonne oli kloonattu YouSourcesta TIMin päätietovarasto. Topi Latva-Salon vastuulla oli TIM-tietovaraston tilanteen päivittäminen GitLabissa olevaan master
-haaraan. Ominaisuuksia kehitettiin ensin omassa haarassa, jonka jälkeen ne liitettiin joko timantti
- tai printing
-haaraan. CSS-tulostuksen kehityksessä käytettiin lähinnä timantti
-haaraa ja TeX-tulostuksessa printing
-haaraan.
Dokumentteja julkistettaessa käytettiin kolmiportaista numerointia. Viimeinen numero varattiin ryhmän sisäiseen versiointiin. Koko projektiorganisaatiolle dokumentti julkistettaessa versionumerossa kasvatettiin keskimmäistä numeroa. Hyväksyttyjä versioita julkistettaessa kasvatettiin ensimmäistä numeroa.
Alkuperäisen suunnitelman mukaan kaikki valmiit ominaisuudet olisi liitetty Timantti
-haaraan. Tästä poikettiin sillä CSS- ja TeX-tulostusta kehitettiin eri haaroissa ja vasta projektin loppupuolella molemmat liitettiin samaan haaraan.
Toteuma vastasi melko hyvin suunnitelmaa. Suunnitelmasta poiketen CSS- ja TeX-tulostuksen ominaisuuksia kehitettiin eri haaroissa koko projektin ajan ja ne liitettiin samaan haaraan vasta aivan projektin lopussa.
5.5 Testaus
Sovellukselle suunniteltiin toteutettavaksi sekä yksikkötestausta että järjestelmätestausta. Yksikkötestaus oli tarkoitus toteuttaa ainakin osittain automaattitestein.
Koodia kirjoitettaessa testattiin, että se toimi oletetusti. Varsinaisia automaattisia yksikkötestejä ei kuitenkaan kirjoitettu. Koodin testaaminen oli aina sen tekijän vastuulla. Tekijä lisäsi koodin Git-tietovarastoon timantti-haaraan, kun itse katsoi sen olevan toimiva.
Järjestelmätestaukselle laadittiin testaussuunnitelma. Testauskerroilla hyödynnettiin neljää eri versiota, joilla testaus suoritettiin. Järjestelmätestaus suoritettiin loppukäyttäjän näkökulmasta testaussuunnitelman mukaisessa testausympäristössä. Testitapaukset oli laadittu askeleittain ja jokaisesta tapauksesta kirjattiin ylös testausraporttiin sen tulos. Testauksen suorittaja laati testauskerrasta testausraportin johon kirjattiin jokaisen testitapauksen havainnot. Lisäksi Vesa Lappalainen suoritti sovellukselle laajan testauksen.
Testauksessa löytettiin jonkin verran huomautettavaa ominaisuuksista. CSS-tulostuksen osalta kaikki selaimet eivät toimineet odotetusti. TeX-tulostuksen osalta jotain virheitä ilmeni myös virallisen testauksen ulkopuolella. Testeissä havaituja virheitä korjattiin.
Toteuma ei vastannut kovin hyvin suunnitelmaa. Testauksessa poikettiin alkuperäisestä suunnitelmasta, jossa sovellusta olisi testattu sekä toisessa että kolmannessa kehitysvaiheessa. Nyt sovellusta testattiin vasta aivan lopussa. Myöskään automaattitestejä ei kirjoitettu.
5.6 Tulosten katselmoinnit ja hyväksyminen
Suunnitelmien mukaisesti tekninen ohjaaja katselmoi projektiryhmän lähdekoodia kahdessa katselmointitilaisuudessa. Ohjaajalle oli annettu oikeudet projektirymän luomaan Git-tietovarastoon, joten lähdekoodia oli mahdollista tarkastella myös pitkin projektia.
Tekninen ohjaaja hyväksyi sovelluksen koodin heinäkuussa ja sovelluksen koodi lisättiin TIMiin. Kehittämistä jatkettiin kuitenkin vielä tämän jälkeen. Tilaaja hyväksyi sovelluksen syyskuun 26. päivä.
Katselmointien ja hyväksymisen osalta toteuma vastasi suunnitelmaa.
5.7 Tulosten koostaminen ja toimittaminen
Tilaajan vaatimusten mukaisesti kaikki projektin dokumentit laadittiin TIM-järjestelmään. Vaatimukset laadittiin Trelloon, josta ne linkitettiin projektin TIM-kansioon.
Kaikki projektista laaditut dokumentit tulostettiin projektikansioon suunnitelmien mukaisesti. Tulokset poltettiin CD-levylle markdown-, LaTeX- ja PDF-muodossa. Yksi CD-levy liitettiin projektikansioon ja toinen tiedekunnan arkistoon. Projektin jäsenet eivät halunneet CD-levystä kopiota.
Tulosten koostamisen ja toimittamisen osalta toteuma vastasi suunnitelmaa lähes täysin. Ainoastaan projektin vaatimukset määriteltiin Trelloon, TIMin sijasta.
5.8 Tiedostojen nimeäminen
Tiedostot nimettiin käyttötarkoitusta kuvaavasti englannin kielellä ja pienillä kirjaimilla. Sanojen erottimena käytettiin alaviivaa. Projektin dokumentit kirjoitettiin suunnitelman mukaisesti suomeksi, ja ne myös nimettiin suomeksi. Dokumentteihin liitettiin myös CD-lle poltettaessa niiden versionumero.
Tiedostojen nimeämisen osalta toteuma vastasi suunnitelmaa.
5.9 Hakemistorakenne
Projektista muodostetulla CD-levyllä käytettiin seuraavaa hakemistorakennetta:
dokumentit
ajankaytto
esittelyt
käyttöohje
projektiraportti
projektisuunnitelma
sopimukset
sovellusraportti
testausraportit
testaussuunnitelma
vaatimusmaarittely
palaverit
esityslistat
katselmoinnit
poytakirjat
tilakatsaukset
sahkopostiarkistot
timantti
timantti_opetus
software
source_code_CSS
source_code_LaTeX
www-esittely
Projektin TIM-kansiossa ei noudatettu yllä mainittua sovittua hakemistorakennetta. TIMissä oli erillinen esittelyt
-hakemisto, jonka alle oli sijoitettu katselmoinnit ja muistiot. Myöskään testaukselle ei ollut TIMissä omaa hakemistoa.
Hakemistorakenteen toteuma ei vastannut täysin CD-levyn osalta suunnitelmaa. Käyttöohje lisättiin uutena rakenteeseen. Itsearvioinnit poistettiin rakenteesta. Materiaalit poistettiin rakenteesta. Class_documentation poistettiin rakenteesta. Source_code jaettiin kansioihin source_code_CSS ja source_code_LaTeX. WWW-esittely lisättiin rakenteeseen. Testaussuunnitelma ja testausraportti siirrettiin dokumentit kansioon. TIMin osalta ei noudatettu tätä hakemistorakennetta.
6. Tehtävät, työmäärät ja tehtäväjako
Luku kuvaa projektin jäsenten vastuualueiden, projektin tehtävien ja käytetyn työmäärän toteumaa verrattuna suunnitelmaan.
Toteuma vastasi osittain suunnitelmaa. Projektipäällikköä vaihdettiin elokuussa Marjan siirtyessä uusiin opintoihin. Työmäärä oli suunniteltua suurempi ja se ylittyi 434 tunnilla.
6.1 Vastuualueet
Projektipäällikkönä toimi Marja Similä ja varapäällikkönä Topi Latva-Salo. Projektipäällikön tehtävät siirretiin Miika Kujalalle elokuussa. Projektin olennaisimmille tuloksille oli suunniteltu vastuuhenkilöt taulukon 6.1 mukaisesti. Eri osa-alueille määrättyjen vastuuhenkilöiden osalta toteuma ei vastannut suunnitelmaa.
Tulos | Vastuuhenkilö |
---|---|
Projektisuunnitelma | Marja Similä |
Projektiraportti | Marja Similä & Miika Kujala |
Sovellusraportti | Topi Latva-Salo |
Testausdokumentit | Tuomas Porvali |
Vaatimusmäärittely | Miika Kujala |
Tietovaraston päivittäjä | Topi Latva-Salo |
CSS-tulostus | Tuomas Porvali |
Käyttöliittymä | Miika Kujala |
TeX-muodot ja makrot | Marja Similä |
Pandocin filtterit | Topi Latva-Salo |
TeX-tulostus | Topi Latva-Salo |
Käyttöohje | Marja Similä & Topi Latva-Salo |
6.2 Työmäärä ja työnjako
Projektin suunnitellut ja toteutuneet työtunnit on esitetty kuvassa 6.1. Tehtäväjako pyrittiin tekemään siten, että kokonaistuntimäärä jakautuisi tasaisesti ryhmän jäsenten kesken.
Ryhmän tavoitteena oli käyttää sovellusprojektiin kutakin jäsentä kohti noin 20 tuntia viikossa. Sovellusprojektin läpivientiin suunniteltiin tarvittavan ryhmältä yhteensä noin 1080 tuntia (kuva 6.1). Myös projektin ohella suoritettaviin oheiskursseihin laskettiin työtunnit. Sovellusprojektin ja oheiskurssien yhteenlasketuksi tuntimääräksi oli suunniteltu noin 1276 tuntia.
Sovellusprojektiin käytettiin lopulta noin 1514 tuntia ja oheiskursseihin noin 111 tuntia. Sovellusprojektin suunniteltu kokonaistuntimäärä ylittyi noin 434 tunnilla. Oheiskurssien suunniteltu kokonaistuntumäärä alittui noin 85 tunnilla.
Olennaisimmat syyt tuntien ylittymiselle olivat jäsenten puutteelliset tiedot ja taidot, sovelluksen hankala toteutus ja oikeiden vaatimusten tiedostaminen.
Projetiryhmä kirjasi tunnit kokonaisuuden mukaan. Projektiryhmä ei tiedostanut, että tehtävät tulisi kirjata tarkasti tehtäväkokonaisuuksittain. Työtuntien puuttellisesta kirjauksesta johtuen on mahdotonta arvioida toteutuneiden ja suunniteltujen työtuntien eroja tehtävätasolla.
Kuvasta 6.1 nähdään, että soveluksen toteutuksen ja projektinhallinnan toteutuneet työtunnit ylittivät selkeästi arvioidut. Palaverien työtunnit toteutuivat suunniteltuina. Muiden tehtäväkokonaisuuksien työtunnit alittivat suunnitellut.
Miika Kujalan toteutuneet työtunnit ylittyivät selkeästi toteutuksen ja projektinhallinnan osalta.
Topi Latva-Salon toteutuneet työtunnit ylittyivät selkeästi toteutuksen osalta.
Tuomas Porvalin toteutuneet työtunnit ylittyivät selkeästi toteutuksen osalta.
Marja Similän toteutuneet työtunnit ylittyivät selkeästi toteutuksen ja projektinhallinnan osalta.

6.3 Ryhmän työtunnit tehtäväkokonaisuuksittain
Kirjatut työtunnit on esitetty kuvassa 6.3. Noin puolet projektiin käytetyistä työtunneista kului sovelluksen toteutukseen.

6.4 Miika Kujalan työtunnit tehtäväkokonaisuuksittain
Kujala vastasi projektissa vaatimusmäärittelystä, käyttöliittymästä sekä projektipäällikön tehtävistä projektin lopussa. Kuvasta 6.4 nähdään, että suurin osa Kujalan kirjaamista työtunneista kului sovelluksen toteutukseen. Projektiryhmään verrattuna Kujalalla kului paljon aikaa projektin hallintaan.

6.5 Topi Latva-Salon työtunnit tehtäväkokonaisuuksittain
Latva-Salo vastasi projektissa sovellusraportista, tietovaraston päivittämisestä, TeX-tulostuksesta ja Pandoc-filttereistä. Kuvasta 6.4 nähdään, että suurin osa Latva-Salon kirjaamista työtunneista kului sovelluksen toteutukseen. Projektiryhmään verrattuna Latva-Salolla kului paljon aikaa sovelluksen toteutukseen. Tietovaraston päivittämisen tunteja ei kirjattu erikseen.

6.6 Tuomas Porvalin työtunnit tehtäväkokonaisuuksittain
Porvali vastasi projektissa CSS-tulostuksesta ja sovelluksen testaamisesta. Kuvasta 6.5 nähdään, että suurin osa Porvalin kirjaamista työtunneista kului sovelluksen toteutukseen. Projektiryhmään verrattuna Porvalilla kului eniten aikaa sovelluksen toteutukseen. Testaamiseen käytettyjä tunteja ei kirjattu erikseen.

6.7 Marja Similän työtunnit tehtäväkokonaisuuksittain
Similä toimi projektissa projektipäällikkönä, sekä vastasi projektissa projektirapostista, projektisuunnitelmasta, TeX-muotoilusta ja makroista ja käyttöohjeen kirjoittamisesta. Kuvasta 6.6 nähdään, että huomattava osa Similän kirjaamista työtunneista kului sovelluksen toteutukseen. Projektiryhmään verrattuna Similällä kului eniten aikaa projektin hallintaan.

7. Prosessi ja aikataulu
Luku kuvaa projektissa toteutunutta prosessia ja aikataulua. Toteuma ei vastannut suunniteltua. Prosessin noudattaminen ei vastannut suunniteltua.
7.1 Prosessi
Projektin oli suunniteltu noudattavan ketterää prosessia, jossa ohjelmistokehitys oli jaoteltu vaiheisiin. Tarkoituksena oli, että jokaisella jäsenellä olisi kerrallaan yksi tehtävä hoidettavana.
Suunnitellut projektin vaiheet olivat esitutkimus, suunnittelu, kolme eri kehitysvaihetta ja viimeistely.
Alussa esitutkimus- ja suunnittelu-vaihe etenivät lähes suunnitellusti, vaikka niiden kestot olivat hieman suunniteltua pidempiä. Ohjelmistokehitys ei jakautunut kolmeen eri kehitysvaiheeseen vaan se toteutettiin lähinnä yhtenä kehitysvaiheena. Tämä johtui siitä ettei sovelluksen käyttöliittymästä, toiminnoista ja toteutusratkaisuista saatu sovittua tarpeeksi nopeasti, nämä muuttuivat siis pitkin projektia. Käyttöohjetta ei suunniteltu suunnitteluvaiheen aikana, vaan sen toteuttaminen jäi projektin loppuun. Tähänkin vaikutti suunnitelmien muuttuminen useampaan kertaan. Kehitysvaiheisiin jakautumista vaikeuttivat muuttuvat suunnitelmat, jolloin projektisuunnitelman mukaisia osioita ei edes lopulta toteutettu sellaisenaan. Sovellusta myös kehitettiin vielä saman aikaisesti projektiraportin ja muiden dokumenttien laatimisen aikana.
Valitun prosessin noudattamisen osalta toteuma poikkesi lähes täysin suunnitellusta. Projektin läpivienti ei ollut yhtä hallittu kuin oli alun perin suunniteltu. Ketterän prosessin toimiminen paremmin projektissa olisi vaatinut aktiivisempaa kommunikointia. Myös palavereissa meni paljon aikaa yhden asian käsittelyyn, eli asioita ei saatu käsiteltyä niin tehokkaasti kuin olisi tarvinnut.
7.2 Aikataulu
Projektin ensimmäinen palaveri pidettiin 2.2.2017, ja projektin suunniteltiin loppuvan toukokuun loppuun mennessä. Projekti päättyi lopulta vasta jouluussa.
Projektin läpiviennin suunniteltu aikataulu on esitetty kuvassa 7.1. Projektin läpiviennin toteutunut aikataulu on estitetty kuvassa 7.2. Projektin suunniteltu aikataulu oli liian optimistinen ja projekti viivästyi lopulta noin puoli vuotta. Viivästyminen johtui ryhmän jäsenten puutteellisista taidoista, lisääntyneistä ja muuttuneista vaatimuksista, sekä ryhmän jäsenten rajallisesta ajankäytöstä. Jo sovelluksen myöhäinen valmistuminen viivästytti projektia. Lisäksi kesällä ja syksyllä projektiin tuli paljon turhaa viivästymistä, koska ryhmän jäsenet eivät ehtineet viimeistellä vaadittuja raportteja.


7.3 Ryhmän työtunnit viikottain
Ryhmän käyttämien työtuntien jakautuminen eri viikoille on esitetty kuvassa 7.3. Sovellusprojektille suunniteltu kunkin jäsenen työtuntimäärä oli noin 20 tuntia viikossa. Lisäksi oheiskurssit vaativat keskimäärin muutaman tunnin viikossa.

Ryhmä pääsi tavoiteltuun viikkotuntimäärään vain muutamana viikkona. Käytettävien tuntien rajallinen määrä näkyi projektin viivästymisenä.
7.4 Miika Kujalan työtunnit viikottain
Kujalan viikottaiset työtunnit on esitetty kuvassa 7.3. Kujala aloitti työt viikolla 16, jonka jälkeen hänen viikkotuntimääränsä tippui. Kujalalla suunnitellut työtunnit toteutuivat viikoilla 7,8, 10, 13, 14 ja 15.
7.5 Topi Latva-Salon työtunnit viikottain
Latva-Salon viikottaiset työtunnit on esitetty kuvassa 7.3. Latva-Salolla suunnitellut työtunnit toteutuivat viikoilla 8, 9, 11, 12, 13, 14, 15, 16, 19 ja 27.
7.6 Tuomas Porvalin työtunnit viikottain
Porvalin viikottaiset työtunnit on esitetty kuvassa 7.3. Porvalilla suunnitellut työtunnit toteutuivat viikoilla 8, 11, 13, 14, 19 ja 20.
7.7 Marja Similän työtunnit viikottain
Similän viikottaiset työtunnit on esitetty kuvassa 7.3. Similä muutti pois paikkakunnalta heinäkuun lopussa, jonka jälkeen hän ei enää käyttänyt aikaa projektiin. Similällä suunnitellut työtunnit toteutuivat viikoilla 9, 11, 13, 16, 18, 20, 25, 29 ja 30.
8. Riskit ja niiden hallinta
Luku kuvaa ennakoitujen riskien toteumaa ja vaikutusta. Jäsenten poissaolon ja vaatimusten lisääntymisen riskien haitta oli arvioitua suurempi. Tämä johtui todennäköisesti siitä, ettei riskeihin kuitenkaan oltu kunnolla varauduttu tai niiden torjumiseen ja toipumiseen suunnitellut toimenpiteet olivat puutteellisia tai niitä ei noudatettu.
8.1 Riskien todennäköisyydet ja haitat
Projektille oli projektisuunnitelmassa arvioitu taulukon 8.1 mukaiset riskit sekä todennäköisyydet ja haittavaikutukset. Riskeistä ainoastaan laitteiden hajoaminen jäi täysin toteutumatta, kun kaikki muut riskit vaikuttivat projektiin ainakin jollain tasolla.
Riski | Todennäköisyys | Arvioitu haitta | Toteutunut haitta |
---|---|---|---|
Jäsenten poissaolot | Suuri | Keskinkertainen | Suuri |
Kokemattomuus projektin hallinnasta | Keskinkertainen | Keskinkertainen | Keskinkertainen |
Vaatimusten lisääntyminen | Suuri | Pieni | Suuri |
Kokemattomuus käytetystä ohjelmointikielestä | Keskinkertainen | Pieni | Pieni |
Laitteiden hajoaminen | Pieni | Keskinkertainen | Ei vaikutusta |
8.2 Jäsenten poissaolot
Projektin alkupuolella jäsenten poissaolot eivät vaikuttaneet projektiin. Vaikka muutamia lyhyitä sairastumisia oli, ne eivät vaikuttaneet projektin etenemiseen.
Miika Kujalan kesätöiden alkaminen oli tiedossa hyvissä ajoin ja siihen Miika varautui tekemällä projektin töitä mahdollisimman paljon ennen töiden alkua. Myös Topi Latva-Salo sai yllättäen kesätöitä ja lisäksi muilla alkoivat kesäkurssit. Marja Similälle tuli myös muita velvoitteita, joiden takia hänen täytyi olla poissa paikkakunnalta.
Jäsenten alhaiset työtunnit viikosta 15 lähtien ja muut velvoitteet vaikuttivat selkeästi projektin pitkittymiseen. Vaikka asiantuntijuuden keskittymistä oli tarkoitus välttää, niin silti toisen jäsenen työn jatkaminen olisi ollut todella aikaa vievää, eikä sitä pystytty tekemään. Ongelmilta olisi voitu välttyä, jos projektin alussa olisi tehty esimerkiksi parikoodausta.
8.3 Kokemattomuus projektin hallinnasta
Projektipäälliköllä ei ollut kokemusta projektin hallinnasta. Arvioidut aikataulut eivät pitäneet paikkaansa. Projektiryhmän työtunnit jäivät liian alhaisiksi useana viikkona. Tämä johti sovelluksen ja koko projektin viivästymiseen.
Riskien arvioinnissa kuitenkin onnistuttiin hyvin mutta niiden torjumiseen ja niistä toipumiseen olisi tarvinnut enemmän keinoja. Esimerkiksi jos suunnitelmiin olisi kirjannut parikoodauksen, ei sovelluksen valmistuminen olisi viivästynyt niin paljoa. Lisäksi projektisuunnitelma olisi ollut hyvä käydä läpi projektiryhmän kesken, jolloin kaikki olisivat olleet perillä suunnitellusta läpiviennistä, jolloin aikataulu olisi mahdollisesti voinut pitää paremmin.
8.4 Vaatimusten lisääntyminen
Projektin aikana ennakoidusti vaatimukset lisääntyivät ja tarkentuivat, mutta ne myös muuttuivat pitkin projektia. Tällöin aikaa meni välillä hukkaan kun oli toteutettu jotain sellaista, mikä myöhemmin muuttui täysin erilaiseksi. Vaatimuksia olisi myös pitänyt päivittää useammin.
Vaatimusten lisääntyessä ja aikataulun viivästyessä vaatimuksia yksinkertaistettiin ja osa kirjattiin suoraan jatkokehitykseen. Tätä vaatimusten yksinkertaistamista olisi voinut tehdä jo aikaisemmin, jolloin viivästymistä ei olisi tapahtunut niin paljoa. Lisäksi vaatimusmäärittelyn viivästyminen saattoi osaksi myös aiheuttaa vaatimusten lisääntymisen ja muuttumisen hieman hallitsemattomasti. Sovelluksen lopullisista ominaisuuksista ja toiminnallisuuksista päästiin selvyyteen vasta melko myöhään, jolloin aikaa oli jo hukattu.
8.5 Kokemattomuus käytetystä ohjelmointikielestä
Kokemattomuus TIM-järjestelmän toteutusratkaisuista sekä käytetystä ohjelmointikielestä haittasi hieman projektin etenemistä alussa. TIM-järjestelmän lähdekoodiin pyrittiin tutustustumaan itsenäisesti ja myös teknisen ohjaajan avulla. Vaikka koodiin päästiin ihan hyvin kiinni aiheutti olemassa olevan koodin kommentoimattomuus vaikeuksia. Koodin tutkimiseen meni huomattavasti enemmän aikaa, koska sitä ei ollut kommentoitu riittävän laajasti.
Kokemattomuus käytetystä ohjelmointikielestä konkretisoitui varsinkin pluginify-funktion kohdalla. Siitä tekninen ohjaaja lähetti ohjeet projektiryhmälle sähköpostin kautta sovelluksen toteutuksen loppuvaiheilla
8.6 Laitteiden hajoaminen
Laitteiden hajoamiseen varauduttiin sijoittamalla kirjoitetut koodit Git-tietovarastoon. Koodeja olisi voinut laittaa sinne useamminkin. Välillä koodien kanssa otettiin turhia riskejä, kun niitä säilytettiin ainoastaan kehityskoneella. Kuitenkaan laitteiden hajoamista ei tapahtunut projektin aikana, eikä siten koodeja kadonnut.
9. Jäsenten kokemuksia ja oppimaa
Tässä luvussa projektiryhmän jäsenet kertovat omista kokemuksistaan ja oppimisestaan. Kukin jäsen sai arvokasta oppia projektityöskentelystä sekä uusista ohjelmointikielistä.
9.1 Miika Kujalan kokemuksia ja oppimaa
Projekti tarjosi erinomaista kokemusta projektimuotoisesta työskentelystä niin hyvässä kuin pahassa. Projekti oli kokemuksena mielenkiintoinen, koska ei luotu tyhjästä mitään uutta, vaan muokattiin jo olemassa olevaa ohjelmistoa. Projektiryhmän jäsenien kanssa oli todella mieluisaa työskennellä. Syksyn projektipäällikön tehtävät olivat lähinnä raporttien vääntämistä, joten projektin johtamisesta ei suuremmin tullut kokemusta. Vuorovaikutusta etenkin ohjaajiin ja tilaajaan olisi voinut pitää enemmän.
Versionhallinnan käytössä opin uusia temppuja ja sain rutiinia peruskomentoihin.
Ohjelmointikokemus karttui projektin aikana, mutta ehkä vähemmän kuin alunperin odotin. Lähes kaikki käytetyt ohjelmointikielet olivat minulle uusia.
Palaverit ja niissä toimiminen tuli tutuksi projektin aikana. Nyt osaan varmemmin mielin lähteä tulevaisuudessa palavereihin ja tiedän mitä niissä tapahtuu.
9.2 Topi Latva-Salon kokemuksia ja oppimaa
Projekti oli kaiken kaikkiaan erittäin arvokas oppimiskokemus. Se oli itselleni ensimmäinen kosketus ammattimaiseen ohjelmistokehitykseen, ja oikeastaan ylipäätään jonkin oikeasti käyttöön tulevan ohjelmiston kehitykseen. Samalla se oli ensimmäinen kerta, kun olen ollut mukana osana mitään lähellekään samaa laajuusluokkaa olevaa projektia.
Suuri osa käytetyistä teknologioista ja työtavoista oli käytännössä täysin ennestään tuntemattomia koko projektiryhmälle. Kun tähän vielä yhdistyi se, ettei projektiryhmässä ollut Tuomasta lukuunottamatta myöskään kokemusta projektityöskentelystä, olivat lähtökohdat sanalla sanoen heikot. Projekti lähti liikkeelle tahmeasti, ja alkuvaiheilla olikin jo pieni epätoivo iskeä. Ryhmällä ei oikein tuntunut olevan käsitystä siitä, miten olisimme lähteneet liikkelle. Alussa olikin useamman kuukauden jakso, jolloin emme saaneet aikaan juuri mitään näkyvää. Osa tästä varmasti johtuu siitäkin, että TIM on melko suuri ja monimutkainen tietojärjestelmä, ja alussa kului huomattavasti aikaa siihen, että ymmärsi riittävästi siitä, miten järjestelmän olemassa olleet osat toimivat. Koska projektiryhmällä oli kuitenkin käytössään tekninen ohjaaja, olisi häntä voinut varmasti hyödyntää alkuun pääsemisessä enemmän.
Kokemuksen puutteen lisäksi projektia leimasi vahva siiloutuneisuus. Erityisesti varsinainen kehitystyö kasautui vahvasti vain osalle projektiryhmästä. Tehtäviä olisi pitänyt ymmärtää jakaa enemmän, eikä asennoitua vain uusiin kehityskohteisiin mentaliteetilla "se kehittää, joka on tähänkin asti kehittänyt".
Lopulta moni asia projektissa onnistui kuitenkin myös hyvin. Keskeiset vaatimukset saatiin täytettyä ja lopputuloksena syntyi ohjelmisto, joka toimii hyvänä runkona jatkokehitykselle. Projektin aikana tapahtui myös paljon oppimista (joskin ehkä hieman kantapään kautta) ja tätä kautta työelämässä vastaantuleviin projekteihin on varmasti huomattavasti helpompi suhtautua.
9.3 Tuomas Porvalin kokemuksia ja oppimaa
Tämä oli ensimmäinen projekti, jossa minä osallistuin jatkokehittämään olemassa olevaa järjestelmää.
Koska TIMin dokumentointi on vähäistä oli minun pitänyt kysyä enemmän aktiivisesti ja minä tuhlasin hyvin paljon aikaa python koodin lukemiseen sen sijaan, että olisin keskittynyt javascriptin puoleen. Tämä olisi aikaistanut testaussuunnitelman kirjoittamisen aloittamista. Projektissa keskityin enimmäkseen projektin CSS-puoleen ja enkä kiinnittänyt paljon huomiota TeX-tulostukseen vaikka olisi pitänyt, jos olisi tapahtunut jotain, joka olisi pakottanut minut siirtymään TeX:hin kehitykseen, jolloin minun olisi pysähtyä lukemaan muiden töitä.
Ensimmäistä kertaa myös käytin versiohallinnointiohjelmaa ja tutustuin python ohjelmointikieleen.
9.4 Marja Similän kokemuksia ja oppimaa
Minulla ei ollut ennakkoon kokemusta projektimuotoisesta työskentelystä, joten en myöskään ollut koskaan toiminut projektipäällikkönä. Päädyin projektipäälliköksi, koska minulla oli ryhmän jäsenistä eniten aikaa käytettäväksi projektiin.
Tavoitteeni projektissa oli saada kokemusta projektimuotoisesta työskentelystä. Halusin myös tutustua erilaisiin projektissa käytettäviin työkaluihin. Versiohallintaa en myöskään ollut aikaisemmin käyttänyt kovin paljoa, joten halusin sen käyttöön sujuvuutta.
Projektipäällikkönä minulla oli paljon uutta opeteltavaa. Projektin suunnittelu oli vaikeaa ilman kokemusta projektimuotoisesta työskentelystä. Jos nyt aloittaisin projektin uudestaan, tekisin monet asiat toisin ja osaisin suunnitella paremmin projektin läpivientiä. Aikatauluista kiinni pitämiseen keskittyisin enemmän ja tekisin selkeämmän työnjaon. Projektissa tuli siis myös opittua projektin hallintaa, vaikka se ei oppimistavoitteeni ollutkaan.
Projektissa tutustuin oppimistavoitteeni mukaisesti erilaisiin työkaluihin, joita käytettiin pääosin projektin hallintaan. Versiohallinnan käyttö sujuu nykyään hyvin vaikka sitä ei tullutkaan osaltani projektin aikana käytettyä kovin paljoa.
Projektin aikana en ollut tekemisissä itse ohjelmakoodin kanssa, sillä projektin alussa erityisesti projektisuunnitelma vei paljon aikaa. Tämän jälkeen keskityin projektissa sovelluksen LaTeX-osuuksiin.
Sovellusprojekti oli ihan mielenkiintoinen kokemus. Kokemus olisi kuitenkin ollut parempi ja kokonaisuus toimivampi, jos olisin alussa osannut paremmin suunnitella projektin toteutuksen sekä saanut suunnitelman aikaisemmin valmiiksi. Tämä olisi myös ehkä auttanut siihen että suunnitelmaa olisi noudatettu paremmin. Kuitenkin opin projektin aikana paljon uutta. Kokemuksesta on varmasti hyötyä mahdollisissa tulevissa projekteissa.
10. Yhteenveto
Timantti-projekti kehitti Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitettyyn TIM-järjestelmään tulostustoiminnon kevään 2017 aikana. Projekti toteutettiin osana Sovellusprojekti-kurssia. Projektin oli suunniteltu valmistuvan toukokuun puoleen väliin mennessä, mutta valmistuminen viivästyi noin kuudella kuukaudella. Sovellus saatiin valmiiksi vasta heinäkuun lopussa ja dokumenttien hyväksyminen venyi marraskuulle.
Projektin viivästymiseen vaikuttivat eniten jäsenten alhaiset työtunnit useana viikkona, muut velvollisuudet sekä vaatimusten lisääntyminen ja muuttuminen projektin aikana. Suunniteltu aikataulu ei pitänyt, koska tuntiarviot olivat pahasti pielessä. Toteutuksen työtunnit ylittyivät yli 500 tunnilla.
Sovellukseen saatiin projektin aikana toteutettua lähes kaikki sille asetetut vaatimukset. Loput vaatimuksista ja myös uusia ideoita kirjattiin jatkokehitykseen. Projektin suunniteltuja käytänteitä ei onnistuttu noudattamaan. Projektin suunniteltu työnjako piti osittain paikkansa, muutamia työtehtäviä siirrettiin projektin edetessä.
Sovellusprojektin aikana jäsenet saivat kokemusta projektimuotoisesta työskentelystä ja kokivat saavuttaneensa oppimistavoitteensa.
Lähteet
[1] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä,Timantti-sovellusprojekti, "Projektisuunnitelma", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/dokumentit/projektisuunnitelma
Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[2] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä,Timantti-sovellusprojekti, "Testaussuunnitelma", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/dokumentit/testaussuunnitelma
Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[3] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, Timantti-sovellusprojekti, "Vaatimukset", saatavilla osoitteessa URL: https://trello.com/b/6aFKrpzj/timantti
Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[4] Matias Berg, Bek Eljurkaev, Minna Lehtomäki, Juhani Sihvonen ja Hannu Viinikainen, "Timppa-sovellusprojekti, Projektiraportti", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2015/timppa/dokumentit/projektiraportti
, Jyväskylän yliopisto, tietotekniikan laitos, 2015.
[5] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Timantti-sovellusprojekti, Edistyminen", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/ongelmat/Edistyminen
Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[6] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Timantti-sovellusprojekti, Ongelmalistaus", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/ongelmat/ongelma-listaus
, Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[7] Guido van Rossum, Barry Warsaw and Nick Coghlan, "PEP 8 - Style Guide for Python Code" saatavilla WWW-osoitteessa URL: https://www.python.org/dev/peps/pep-0008/
, Python Software Foundation, 2013.
[8] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Timantti-sovellusprojekti, sovellusraportti", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/dokumentit/sovellusraportti
, Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[9] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Timantti-sovellusprojekti, testausraportti", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/dokumentit/testausraportti
, Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
[10] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Timantti-sovellusprojekti, käyttöohje", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/tim/ohjeita/tulostusohje#
, Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2017.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.