Timantti-sovellusprojektin projektisuunnitelma
Miika Kujala
Topi Latva-Salo
Tuomas Porvali
Marja Similä
Versio 1.0.0
Julkinen
Jyväskylän yliopisto
informaatioteknologian tiedekunta
Jyväskylä
Hyväksyjä | Päivämäärä | Nimenselvennys | Allekirjoitus | | |
---|---|---|---|---|
Projektipäällikkö | Marja Similä | |||
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 projektisuunnitelma
Tiedosto: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/dokumentit/projektisuunnitelma
Tiivistelmä: Timantti-projekti kehittää kevään 2017 aikana TIM-järjestelmään dokumenttien tulostustoiminnon. Projektisuunnitelmassa kuvataan Timantti-projektin suunnitelty läpivienti. Suunnitelmassa esitellään aiheeseen liittyvät käsitteet, projektin taustat ja tavoitteet, organisaatio ja resurssit, käytänteet, tehtävät, työmäärät ja tehtäväjako, prosessi ja aikataulu sekä riskit ja riskien hallinta.
Avainsanat: aikataulu, CSS-tulostus, TIM, TeX-tulostus, käytänteet, projekti, projektiorganisaatio, projektisuunnitelma, prosessi, resurssit, riskienhallinta, taustaa, tavoitteet, tehtävät, tulokset, tulostus, työmäärät, työnjako.
Muutoshistoria
Versio | Päivämäärä | Muutokset | Tekijät |
---|---|---|---|
0.0.1 | 23.2.2017 | Dokumentille luotiin pohja ja kirjoittaminen aloitettiin. | MS |
0.0.2 | 27.2.2017 | Lukuihin Termit ja Taustat ja tavoitteet lisättiin tekstiä. | MS |
0.0.3 | 2.3.2017 | Lisättiin väliotsikoita. | MS |
0.0.4 | 6.3.2017 | Luvut Organisaatio ja resurssit ja Käytänteet aloitettiin. Termit-lukua muokattiin. | MS |
0.0.5 | 7.3.2017 | Tekstikappaleita täydennettiin. | MS |
0.0.6 | 8.3.2017 | Tekstikappaleita täydennettiin ja kirjoitusvirheitä korjattiin. | MS |
0.1.0 | 8.3.2017 | Ensimmäinen versio lähetettiin tarkistukseen. | MS |
0.1.1 | 17.3.2017 | Korjauksia tehtiin ohjaajan palautteen perusteella. | MS |
0.1.2 | 20.3.2017 | Korjauksia tehtiin ohjaajan palautteen perusteella. | MS |
0.1.3 | 21.3.2017 | Korjauksia tehtiin ohjaajan palautteen perusteella. | MS |
0.1.4 | 22.3.2017 | Korjauksia tehtiin ohjaajan palautteen perusteella. | MS |
0.2.0 | 23.3.2017 | Toinen versio lähetettiin tarkistukseen. | MS |
0.2.1 | 28.3.2017 | Kirjoitusasuun tehtiin korjauksia ohjaajan palautteen perusteella. | MS |
0.3.0 | 28.3.2017 | Ensimmäinen versio julkistettiin projektiorganisaatiolle. | MS |
0.3.1 | 29.3.2017 | Kirjoitusasuun tehtiin korjauksia ohjaajan palautteen perusteella. | MS |
0.4.0 | 3.4.2017 | Kirjoitusasuun tehtiin korjauksia ohjaajan palautteen perusteella. Riskejä lisättiin. | MS |
0.4.1 | 6.4.2017 | Kirjoitusasuun tehtiin korjauksia ohjaajan palautteen perusteella. | MS |
0.5.0 | 7.4.2017 | Kirjoitusasuun tehtiin korjauksia ohjaajan palautteen perusteella. | MS |
0.5.1 | 10.4.2017 | Kirjoitusasuun tehtiin korjauksia ohjaajan palautteen perusteella. | MS |
1.0.0 | 11.4.2017 | Projektisuunnitelma hyväksyttiin. | MS |
Tietoa projektista
Timantti-projekti kehittää Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitettyyn TIM-järjestelmään tulostustoiminnon, joka mahdollistaa yksittäisten dokumenttien tulostamisen sekä koostamisen luentomonisteeksi.
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
Tilaaja
- 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
- Työhuone AgC225.3, puh. 040-8053314
1. Johdanto
Sovellusprojektissa kehitetään Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitettyyn TIM-järjestelmään tulostustoiminto. Se mahdollistaa TIMissä olevien dokumenttien tulostamisen joko yksittäin tai koottuna luentomonisteeksi. Tulostustoiminto toteutetaan kolmella eri tavalla.
Yksinkertaisin tulostustoiminto toteutetaan käyttämällä CSS-määrittelyjä. Toinen tulostaminen toteutetaan käyttämällä TeX-ladontajärjestelmää, jolla voidaan koota luentomonisteita. Kolmas tulostustoiminto toteutetaan käyttämällä CSS-määrittelyjä ja JavaScriptiä. Ominaisuuksiltaan se sijoittuu kahden ensimmäisen tulostustoiminnon väliin. Kolmannella tulostustoiminnolla voidaan esimerkiksi ajaa plugineita.
Kolmesta tulostustoiminnosta Timantti-projektissa toteutetaan kaksi ensimmäisenä mainittua. Välimallin tulostus on rajattu projektin ulkopuolelle. Projektisuunnitelmassa puhuttaessa CSS-tulostuksesta tarkoitetaan yksinkertaisinta tulostustoimintoa.
Projektisuunnitelman laatimisessa on pääosin hyödynnetty Timppa- ja Kepler-projektien projektisuunnitelmia [1] ja [2]. Projektissa laaditaan myös vaatimusmäärittely, sovellusraportti ja projektiraportti. Vaatimusmäärittelyssä kuvataan kehitettävälle sovellukselle asetetut vaatimukset. Sovellusraportissa kuvataan kehitetyn sovelluksen käyttöliittymää, toteutusratkaisuja ja rakennetta sekä puutteita ja jatkokehitysideoita. Projektiraportissa kuvataan projektin toteutunutta läpivientiä.
Dokumentin luvussa 2 kuvataan projektisuunnitelmassa käytetyt aihealueeseen, TIM-järjestelmään ja kehitystyökaluihin liittyvät käsitteet. Luvussa 3 kuvataan projektin taustat ja tavoitteet.
Luvussa 4 esitellään projektiorganisaation projektin käyttöön tarjoamat resurssit ja tilat. Luvussa esitellään myös projektissa käytettävät dokumentointi- ja ohjelmointityökalut sekä luennot ja oheiskurssit. Luvussa 5 esitellään projektin käytänteet.
Luvussa 6 esitellään projektin vastuualueet ja tehtävät sekä jäsenten suunnitellut työmäärät ja sovittu työnjako. Luvussa 7 esitellään projektissa noudatettavaa prosessia ja suunniteltu aikataulu. Luvussa 8 on kuvattu projektiin liittyvien riskien hallintaa ja vaikutusta.
2. Käsitteet
Luvussa kuvataan projektisuunnitelmassa käytettävät käsitteet. Luvussa 2.1 kuvataan ohjelmointikieliin, merkintäkieliin ja tiedostotyyppeihin liittyvät käsitteet. Luvussa 2.2 kuvataan ohjelmistoihin liittyvät käsitteet. Luvussa 2.3 kuvataan kehitettävään sovellukseen liittyvät käsitteet.
2.1 Ohjelmointikielet, merkintäkielet ja tiedostotyypit
Dokumentissa käytettäviä ohjelmointikieliin, merkintäkieliin ja tiedostotyyppeihin liittyviä käsitteitä ovat seuraavat:
- Angular on JavaScript-ohjelmistokehys, jota hyödynnetään yksisivuisten sovellusten kehittämisessä ja käytössä.
- 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.
- docx on tekstitiedostomuoto, joka on käytössä mm. Microsoft Wordissä.
- 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 merkintäkieli, jonka tärkein käyttötarkoitus on lisätä 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:
- Filter on Pandocissa oleva putki, joka ottaa vastaan tekstisyötteen ja palauttaa takaisin käsitellyn syötteen.
- LaTeX on TeXin laajennos. LaTeX-muoto on käyttäjälle selkeämpi, 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.
- Writer on Pandocissa oleva kirjoitin, joka määrittelee muunnoksen merkintäkielen ominaisuudelle.
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 esimerkiksi ajaa plugineja.
- CSS-tulostus on TIMiin kehitettävä tulostusominaisuus, joka hyödyntää selaimen omaa tulostustoimintoa.
- 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 kehitettävä tulostustoiminto, joka hyödyntää TeX-ladontajärjestelmää LaTeXin kautta. Tulostustoiminto muodostaa laadukkaita PDF-tulosteita.
- TIM on Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitetty interaktiivinen oppimisympäristö.
- Tulostusasetukset mahdollistavat muodostettavan dokumentin ulkoasun asetusten säätämisen.
3. Taustaa ja tavoitteita
Luku kuvaa Timantti-projektin taustoja ja kokonaistavoitteita. Luvussa kuvataan, miten luentomateriaalia laadittiin ennen TIM-järjestelmää ja miksi TIM-järjestelmä kehitettiin. Luvussa kuvataan, mihin tarpeisiin projektissa kehitettävä tulostustoiminto vastaa. Lisäksi luvussa kuvataan projektille asetetut tavoitteet ja kehitettävät ominaisuudet. Luvussa kuvataan projektin ja projektin jäsenten oppimistavoitteet. Lopuksi on listattu projektin tulokset, jotka koostuvat kehitettävän sovelluksen ohella projektissa laadittavista dokumenteista.
3.1 Projektin taustaa
Jyväskylän yliopiston informaatioteknologian tiedekunnassa on laadittu luentomonisteita pääosin LaTeXilla, Microsoft Wordillä ja OpenOfficella. Ohjelmistokursseilla OpenOfficella laadituista dokumenteista muodostettiin staattinen HTML-versio hyödyntämällä erilaisia skriptejä. HTML-dokumentti haluttiin muodostaa PDF:n sijaan, koska HTML-dokumentti skaalautuu eri laitteilla luettaessa. Näin luentomonisteen lukeminen onnistui myös tabletilla ja älypuhelimella. Opiskelijoille pystyttiin näin tarjoamaan 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 materiaalit. HTML-dokumenttien puutteellisten tulostusominaisuuksien ja interaktiivisten ominaisuuksien vuoksi laadukasta paperista versiota ei ole enää kuitenkaan mahdollista muodostaa suoraan TIM-dokumentista.
3.2 Projektin tavoitteita
Timantti-projektin tavoitteena on lisätä TIM-järjestelmään tulostustoiminto. Näin voidaan jälleen muodostaa laadukkaita paperisia luentomonisteita ja muita dokumentteja niitä haluaville menettämättä helppoa ylläpidettävyyttä. Projektin tärkeimmäksi tavoitteeksi on nostettu paperisen luentomonisteen tulostaminen Ohjelmointi 1 -kurssille sekä kaikkien projektiin liittyvien dokumenttien tulostaminen TIMin kautta.
Tavoitteena on toteuttaa tulostustoiminto kolmella eri tavalla. Kevyin tulostusmenetelmä toteutetaan käyttämällä CSS-tyylimäärittelyjä. Tätä tulostusta on tarkoitus käyttää päivittäiseen pienempien dokumenttien tulostamiseen. Toiminto hyödyntää selaimen omaa tulostuskomentoa ja dokumentin ulkoasu määritellään lisäämällä dokumenttiin tulostusta koskevia CSS-tyylejä. Tämä tulostusmenetelmä ei vaadi palvelimen puolelta mitään toimenpiteitä, vaan kaikki toiminnallisuus tapahtuu käyttäjän selaimessa.
Toisessa tulostuksessa hyödynnetään JavaScriptiä ja CSS-tyylimäärittelyjä. Tulostaminen tapahtuu käyttämällä selaimen omaa tulostustoimintoa. Erona kevyimpään tulostusominaisuuteen on pluginien ajo tulostuksessa. Tämä mahdollistaa pluginien sisällön sekä siitä ajettaessa muodostuvan elementin saamisen tulosteeseen ilman ylimääräistä työtä. Advanced CSS -tulostusta ei toteuteta Timantti-projektissa. Ainoastaan siihen liittyvät vaatimukset kirjataan ylös jatkokehitystä varten.
Kolmannessa tulostusmenetelmässä käytetään Pandocin kautta TeX-ladontajärjestelmää, jolla pystytään muodostamaan laadukkaita ja painokelpoisia tulosteita. Tällä menetelmällä voidaan tulostaa luentomonisteita, joihin halutaan sisällysluettelo, etukansi, takakansi ja selkämys. Luentomoniste voidaan tulostaa joko yhdestä dokumentista tai koostamalla se useasta eri dokumentista. Tällaisen tulosteen muodostaminen vaatii palvelimen päässä prosessointia, sillä menetelmässä hyödynnetään Pandocia. Tämä tulostustoiminto osaa käsitellä myös erilaisia TIMin plugineita, mutta ei osaa kuitenkaan ajaa niitä tulostuksen aikana.
TeX-tulostuksessa tulee muokata pluginien määrittelyä, jotta niitä osataan käsitellä oikein tulostettaessa. Interaktiiviset pluginit muuttuvat vuorovaikutuksen kuluessa, joten dokumentin tekijän tulee pystyä määrittämään pluginin tulostusmuoto tai plugineille on tarjottava jokin oletustulostusmuoto. Koodipluginien tapauksessa täytyy pystyä määrittelemään esimerkiksi, kuinka paljon koodista tulostetaan. Erilaisten kuvaajien ja piirrosten tapauksessa voidaan pluginista ottaa kuva, joka liitetään pluginin määrittelyyn. Tulostettaessa käytetään näitä määrittelystä löytyviä kuvia. Monimutkaisempien pluginien käyttö vaatii dokumentin tekijältä hieman vaivannäköä, etenkin haluttaessa tulostaa dokumentti.
TIMiin on pienemmän prioriteetin tavoitteena lisätä ominaisuus, jolla voidaan muodostaa docx-, HTML- ja LaTeX-tiedostoista suoraan TIM-dokumentti.
Kuvassa 3.1 on kuvattuna TeX-tulostuksen suunniteltu työnkulku käyttäjän ja palvelimen välillä. Kaaviossa ei ole mukana osuutta, jossa käyttäjä laatii dokumentin, vaan kaavio kuvaa ainoastaan tulostustoimintoa. Dokumentin laatimisen vaiheita ovat seuraavat:
- Käyttäjä luo halutessaan oman kansilehdet (etukansi, takakansi, selkämys).
- Käyttäjä määrittelee markdown- tai LaTeX-muodossa Plugineille tulostusmuodon tai käyttää niiden oletus tulostusmuotoa.
- Käyttäjä määrittelee mahdolliset omat LaTeX-makrot
CSS-tulostuksesta ei laadita erillistä työnkulkukaaviota, koska toteutus on yksinkertainen. Olennaisimmat asiat joita CSS-tulostuksessa käsitellään ovat taulukot, kuvat, koodilohkot, linkit, otsikoinnit ja tekstin tasaukset.
3.3 Oppimistavoitteet
TIM-järjestelmään lisättävä tulostustoiminto toteutetaan Sovellusprojekti-kurssilla. Kurssin tavoitteena on opettaa opiskelijoille projektimuotoista työskentelyä. Projektissa tutustutaan erilaisiin ohjelmointi- ja projektinhallintatyökaluihin. Projektiryhmän tavoitteena on kehittää ohjelmointitaitoja sekä oppia, miten ohjelmiston kehitysprosessin vaiheet tulee toteuttaa.
Ryhmän jäsenet ovat asettaneet itselleen seuraavat oppimistavoitteet:
- Topi toivoo saavansa kokemusta projektimuotoisesta työskentelystä sekä ammattimaisesta järjestelmäkehityksestä ja siihen liittyvistä työkaluista.
- Tuomas toivoo saavansa kokemusta versiohallintatyökaluista ja projektityöskentelystä sekä kehittävänsä jo olemassa olevia taitoja WWW- ja ohjelmistokehityksessä.
- Miika toivoo saavansa kokemusta projektimuotoisesta työskentelystä, ohjelmistokehityksestä ja uusista teknologioista.
- Marja haluaa kokemusta projektimuotoisesta työskentelystä. Tavoitteena on myös tutustua projektissa käytettäviin työkaluihin. Versiohallinnan käyttöön hän haluaa myös sujuvuutta.
3.4 Projektin tulokset
Projektiryhmä toteuttaa projektista seuraavat dokumentit:
- 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.
- 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.
- Luokkadokumentti kuvaa luokkien, metodien ja attribuuttien merkityksen. Se generoidaan automaattisesti lähdekoodista.
- Lähdekoodi sisältää 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ää yhden testauskerran 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.
Projektissa laadittavien dokumenttien tulostukseen käytetään projektissa kehitettyä tulostusominaisuutta.
4. Organisaatio ja resurssit
Luku kuvaa projektiorganisaatiota sekä projektin työkaluja ja tiloja. Luvussa esitellään myös sovellusprojektiin liittyvät luennot sekä projektiryhmälle järjestettävät perehdytykset.
4.1 Projektiorganisaatio
Projektiorganisaatio koostuu projektiryhmästä, tilaajan edustajasta ja ohjaajista. Projektiryhmän jäsenet ovat Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä.
Projektin tilaajana on Jyväskylän yliopiston informaatioteknologian tiedekunta, jonka edustajana toimii Vesa Lappalainen. Projektin vastaavana ohjaajana toimii Jukka-Pekka Santanen ja teknisenä ohjaajana Mika Lehtinen.
Projektiryhmän käyttöön annetuista tietokoneista ja ohjelmistoista vastaa Jyväskylän yliopiston ATK-lähituki. Sovellusprojektiin kuuluvista viestintäopinnoista vastaa kirjoitusviestinnän opettaja Kati Rantala-Lehtola ja puheviestinnän opettaja Hanna Kivimäki. Sovellusprojektiin kuuluvan käytettävyyspäivän pitää Johanna Silvennoinen.
4.2 Laitteet ja tilat
Projektiryhmän käyttöön on annettu Agoran toisesta kerroksesta työhuone AgC225.3. Huoneessa on jäsenten käyttöön neljä tietokonetta Windows 10 -käyttöjärjestelmällä.
Projektissa vaadittavien dokumenttien tulostamiseen löytyy monitoimitulostin, johon projektin jäsenille on annettu rajaton tulostuskiintiö projektin ajaksi. Jäsenten käytössä on myös taukohuone, jonne Jyväskylän yliopisto kustantaa kahvit ja teet projektin ajaksi. Palavereita varten jäsenet pystyvät varaamaan kokoushuoneen AgC226.1 ja digitaalisanelimen.
4.3. Dokumentointityökalut
Projektin pääasiallinen dokumentointiväline on TIM-järjestelmä. Sillä laaditaan lähes kaikki luvussa 3.4 mainituista projektin dokumenteista. Tilakatsauksiin käytetään myös TIMiä, ja kaaviot poimitaan Excel-työtuntitaulukosta. Projektin aikataulun suunnitteluun käytetään GanttProject-ohjelmaa. Erilaisia suunnittelussa käytettäviä ajatuskarttoja laaditaan FreeMind-ohjelmalla.
Ohjelmakoodin versiohallinnassa käytetään GitLabia. Vaatimukset kirjataan alustavasti Trelloon, mutta niistä muodostetaan mahdollisesti myös TIMiin projektin kansioon oma dokumenttinsa.
Projektin dokumentit sijoitetaan TIM-järjestelmään osoitteeseen https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti
Jäsenillä on käytössä yhteinen verkkolevy, joka on sijoitettu hakemistoon \\sovpa7.cc.jyu.fi\timantti
. Tähän hakemistoon projektin jäsenet pääsevät käsiksi tietokoneen S:
-asemalta. Projektilla on myös oma WWW-sivusto osoitteessa http://sovellusprojektit.it.jyu.fi/timantti/
. Sivustoa ei välttämättä projektin aikana käytetä ollenkaan, sillä pääasiallisena dokumenttien julkaisukanavana toimii TIM.
4.4. Ohjelmointityökalut
TIM-järjestelmän kehittämiseen käytetään Python-ohjelmointikieltä. JavaScript-kielellä toteutetaan muutokset TIMin käyttöliittymään. Koodin ajamiseen ja muodostamiseen projektiryhmä käyttää PyCharm-sovelluskehitysympäristöä. Projektissa käytetään myös CSS-kieltä yksinkertaisemman tulostustoiminnon toteuttamiseen.
Pandoc-nimistä ohjelmaa projektissa käytetään muuntamaan Markdown-tiedostomuoto LaTeX-tiedostoksi sekä mahdollisesti muuntamaan docx-tiedostomuoto Markdown-tiedostoksi. Projektille on annettu käyttöön kehityskone, joka löytyy osoitteesta http://timg.it.jyu.fi/
.
4.5. Luennot ja perehdytykset
Sovellusprojektin oheiskurssiin Sovellusprojektin hallintaa, viestintää ja työkaluja kuuluvat seuraavat luennot:
- Aloitusluento,
- Projektin hallinta ja suunnittelu,
- Vaatimusmäärittely,
- Tekijänoikeudet ja sopimukset sekä
- Käytettävyyspäivä.
Projektin teknisen ohjaajan toimesta projektiryhmälle pidetään perehdytys TIM-järjestelmästä. Tämän lisäksi pidetään perehdytys versiohallinnasta. Näiden lisäksi muita perehdytyksiä pidetään ryhmälle tarvittaessa.
Sovellusprojekti-kurssin ohessa järjestetään Projektiviestintä IT alalla -kurssi. Sen puhe- ja kirjoitusviestinnän osuuksiin kuuluu luentoja, väliesittelyjä sekä yksilö- ja ryhmätehtäviä.
5. Käytänteet
Luku kuvaa projektin käytänteitä liittyen mm. projektin tiedotukseen sekä tulosten tallentamiseen ja julkistamiseen. Käytänteiden noudattaminen tukee projektin läpivientiä aikataulussa, tavoitteiden saavuttamista ja laadukkaiden tulosten aikaan saamista.
5.1 Tiedotus
Projektiorganisaatiolle projektiryhmä tiedottaa vähintään projektissa tehdyistä muutoksista ja poikkeamista. Myös kaikista kehitettävään sovellukseen liittyvistä vaihtoehdoista ja valinnoista keskustellaan projektiorganisaatioon kuuluvien kesken. Tulokset tullaan julkistamaan kaikille osapuolille. Tiedotettavat asiat eivät kuitenkaan rajoitu pelkästään näihin, vaan muistakin projektiin liittyvistä asioista voi olla tarvetta tiedottaa koko projektiorganisaatiolle.
Tiedotus projektiorganisaatiolle hoidetaan pääosin palavereissa ja sähköpostitse. Sähköpostien lähettäminen hoidetaan projektille perustetun sähköpostilistan timantti@korppi.jyu.fi
kautta. Listalle on jakelu- ja lähetysoikeudet kaikilla projektiorganisaatioon kuuluvilla. Lisäksi ATK-lähitukeen kuuluvista Petri Antilalla ja Santeri Lapinmäellä on 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 olevat 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 on perustettu sähköpostilista timantti_opetus@korppi.jyu.fi
. Postilistan viestit arkistoituvat osoitteeseen https://korppi.jyu.fi/kotka/servlet/list-archive/timantti_opetus/
ja listalle kuuluvat sähköpostiosoitteet löytyvät osoitteesta https://korppi.jyu.fi/kotka/servlet/list-archive/timantti_opetus/dist.html
.
Sähköpostilistojen lisäksi projektissa esiintyvistä ongelmista tiedotetaan TIM-järjestelmään luotujen dokumenttien avulla. Järjestelmään on projektin kansioon luotu dokumentit Edistyminen[3] ja Ongelmalistaus[4]. Edistyminen-dokumentissa on listattuna projektissa saavutetut onnistumiset. Jokaisesta onnistumisesta on linkki dokumenttiin, jossa kuvataan tarkemmin kyseistä ratkaisua. Ongelmalistaus-dokumentissa on listattu projektissa havaitut tulostusongelmat sisältäen linkit tarkempiin kuvauksiin. TIM-dokumentin asetuksia muokkaamalla projektiorganisaatioon kuuluva voi saada sähköpostitse ilmoituksen, jos dokumenttia muokataan. Näin dokumentoidusta ongelmasta tai onnistumisesta lähtee suoraan sähköpostilla ilmoitus halukkaille. TIMin kautta tilaaja ja ohjaajat voivat kommentoida ongelmia ja tarjota ratkaisuja.
Projektiryhmän sisäinen viestintä tapahtuu kasvokkain tai WhatsAppin kautta. Pääosin viestintää ryhmän kesken suoritetaan kasvokkain.
5.2 Palaverit
Projektin palaverit järjestetään pääosin torstaisin aamupäivästä. Palavereita järjestetään vähintään joka toinen viikko. Palaveria ei järjestetä, jos ei ole käsiteltäviä asioita.
Palavereiden ulkopuolella on olennaista projektitiimin aktiivinen tiedotus projektiorganisaatiolle. Kysymysten ja ongelmien ilmaantuessa jäsenet eivät odota seuraavaa palaveria, vaan kysymyksiin pyritään saamaan vastaus tilaajalta tai ohjaajilta sähköpostin tai TIMin välityksellä. Jäsenet käyvät tarvittaessa kysymässä asioista suoraan kyseisen henkilön työhuoneesta. Kehitettävään sovellukseen liittyvät päätökset ja asioiden hyväksynnät suoritetaan pääosin palavereissa.
Palaverissa tulee olla edustettuna jokainen projektiorganisaation osapuoli, jotta palaveri voidaan todeta päätösvaltaiseksi. Paikalla tulee siis olla vähintään yksi projektiryhmä jäsen, yksi tilaajan edustaja ja vastaava ohjaaja. Palaverin esityslista tulee toimittaa vähintään 24 tuntia ennen palaverin alkua projektiorganisaatiolle, jotta palaveri voidaan todeta lailliseksi.
Jokaisessa palaverissa valitaan projektiryhmän jäsenistä puheenjohtaja ja sihteeri. Jokaisen jäsenen tulee toimia vähintään kerran molemmissa tehtävissä. Puheenjohtajan tehtävänä on laatia palaverin esityslista ja toimittaa se projektiorganisaatiolle. Puheenjohtaja ohjaa keskustelua palaverissa esityslistan mukaan sekä esitarkastaa palaverin pöytäkirjan.
Sihteeri kirjaa ylös palaverissa keskustellut asiat sekä kirjoittaa niistä pöytäkirjan. Sihteeri toimittaa pöytäkirjan ensin puheenjohtajan tarkastettavaksi. Hän toimittaa ensimmäisen laatimansa pöytäkirjan myös vastaavan ohjaajan tarkastettavaksi. Kun jokainen projektin jäsen on toimittanut yhden kirjoittamansa pöytäkirjan vastaavalle ohjaajalle, riittää jatkossa pelkkä puheenjohtajan tarkastus. Palautteiden jälkeen sihteeri tekee pöytäkirjaan vaadittavat korjaukset ja toimittaa pöytäkirjan koko projektiorganisaatiolle.
5.3 Lähdekoodi
Projektissa toteutetun lähdekoodin projektiryhmä on sitoutunut allekirjoittamallaan lisenssisitoumuksella sijoittamaan avoimen lähdekoodin MIT-lisenssin alle. Lähdekoodin käytänteissä noudatetaan TIM-järjestelmästä löytyvää dokumenttia TIMin koodikäytänteet [5].
Koodin tulee vastata Python-koodin PEP8-tyyliohjetta [6]. Mallina käytetään olemassa olevaa TIM-järjestelmän koodia. PyCharm-kehitysympäristö osaa muotoilla valitun koodin tai halutessaan voi käyttää TIMin tietovarastosta löytyvää muotoiluskriptiä. Jos PyCharmin oman muotoilun ja skriptin välillä on ristiriitaa, käytetään skriptin määräämää muotoilua.
Kaikki aliohjelmat, metodit ja luokat tulee nimetä englanninkielellä ja kuvaavalla nimellä sekä ne tulee dokumentoida unohtamatta parametreja ja paluuarvoja. Dokumentaatio ja koodin kommentit on kirjoitettava englannin kielellä.
Valmiiseen koodiin ei saa myöskään jäädä virheilmoituksia. Koodi tulee muotoilla niin että se menee PyCharmin läpi virheittä. Testitiedostojen nimeämisessä noudatetaan muotoilua test_*.py
. Jos koodiin lisätään omia reittejä, niille tulee luoda oma Flaskin mukainen blueprint
.
Alla on esimerkki käytänteitä noudattavasta Python-koodista joka on poimittu Timber-projektista.
"""The module handles the main logic related to velps, velp groups and labels.
This includes adding and modifiying velps and labels as well as adding new velp
groups. The module also retrieves or creates the default velp group for the
document and the personal default group for the user. Velp groups can be set to
shown or shown as default in specific element (or in the whole document) through
this module. The module also retrieves the velps, velp groups and labels to the
document.
:authors: Joonas Lattu, Petteri Palojärvi
:copyright: 2016 Timber project members
:version: 1.0.0
"""
@velps.route("/<int:doc_id>/get_velps", methods=['GET'])
def get_velps(doc_id: int):
"""Get all velps for document user has access to.
:param doc_id: ID of document
:return: List of velps as dictionaries containing all needed information
"""
timdb = get_timdb()
user_id = get_current_user_id()
velp_content = timdb.velps.get_velp_content_for_document(doc_id, user_id)
response = json_response(velp_content)
response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate'
return response
JavaScript-koodin kanssa noudatetaan TIMin koodikäytänteissä [5] annettuja ohjeita. Globaaleja muuttujia ja funktioita tulee välttää. Näiden sijasta tulee käyttää AngularJS:n ohjaimia ja direktiivejä. onclick
in sijasta tulee käyttää ng-click
-direktiiviä.
Alla on esimerkki käytänteitä noudattavasta JavaScriptistä.
$scope.bookmarkTabSelected = function (isSelected) {
var tabContent = $("#menuTabs").find(".tab-content");
if (isSelected) {
// The dropdown menu is clipped if it's near right side of the menu without
// applying this hack
// Also the dropdown menu causes vertical scrollbar to appear without
// specifying height
tabContent.css('height', 'calc(100vh - 51.2833px)');
tabContent.css('overflow-x', 'visible');
tabContent.css('overflow-y', 'visible');
} else {
tabContent.css('height', 'auto');
tabContent.css('overflow-x', 'hidden');
tabContent.css('overflow-y', 'auto');
}
};
5.4 Versiointi ja versiohallinta
Versiohallintaan projektiryhmä käyttää GitLabia, jonne on kloonattu YouSourcesta TIMin päätietovarasto. Yksi projektiryhmän jäsenistä päivittää TIM-tietovaraston tilanteen säännöllisin väliajoin projektin tietovaraston master
-haaraan. GitLabin master
-haaraan projektiryhmä ei tee muutoksia. Master
-haarasta on haarautettu Timantti
-haara, jota käytetään kehityshaarana. Timantti
-haarasta jokainen jäsen voi luoda omia haarojaan, joissa kehittää ominaisuuksia. Kun ominaisuus on todettu toimivaksi, sen voi liittää Timantti-
haaraan.
Dokumentteja julkistettaessa käytetään kolmiportaista numerointia. Viimeinen numero on tarkoitettu ryhmän sisäiseen versiointiin. Ryhmän sisäinen versiointi alkaa numerosta 0.0.1, ja seuraava versio on numero 0.0.2. Versionumeroa kasvatetaan aina yhdellä kokonaisluvulla. Koko projektiorganisaatiolle dokumentti julkistettaessa versionumerossa kasvatetaan keskimmäistä numeroa. Ensimmäinen projektiorganisaatiolle julkistettu versio on numeroltaan 0.1.0. Myös tätä kasvatetaan uudessa julkistetussa versiossa yhdellä kokonaisluvulla, eli seuraava projektiorganisaatiolle julkistettava versio on numeroltaan 0.2.0. Hyväksyttyjä versioita julkistettaessa käytetään ensimmäistä numeroa, eli ensimmäinen hyväksytty versio on 1.0.0. Seuraavissa hyväksytyissä versioissa kasvatetaan toisen tason numeroa. Seuraavan hyväksytyn version numero on siis 1.1.0.
5.5 Testaus
Toteutetulle ominaisuudelle tullaan suorittamaan sekä yksikkötestausta että järjestelmätestausta. Yksikkötestaus toteutetaan osittain automaattitestein. Teknisen ohjaajan toive oli, että automaattitestejä laadittaisiin vähintään yksi.
Lisättäessä lähdekoodiin aliohjelmia, funktioita, luokkia tai metodeja on niiden yksikkötestien kirjoittaminen kyseisen lisäyksen kirjoittajan vastuulla. Jokainen tehty lisäys koodiin tulee testata ja varmistua sen toiminnasta ennen sen liittämistä Timantti
-kehityshaaraan.
Järjestelmätestaukselle laaditaan testaussuunnitelma, joka sisältää kyseisen testauskerran testitapaukset. Testauskertoja voi olla useampia. Kun testaussuunnitelma on laadittu, voidaan suorittaa sen mukainen testauskerta. Testauksen suorittaja laatii testauskerrasta testausraportin, johon kirjataan suoritettujen testitapausten tulokset ja havainnot. Jokaisen tapauksen kohdalla tulee olla tieto onnistumisesta tai virheestä. Jos jokin testitapaus jätetään suorittamatta, tieto siitä tulee myös kirjata testausraporttiin. Jos testausta suoritettaessa havaitaan virhe, tulee raporttiin kuvata kuinka sen saa toistettua. Mahdolliset korjausehdotukset tulee myös kirjata raporttiin. Järjestelmätestausta suoritetaan toisessa kehitysvaiheessa sekä kolmannen kehitysvaiheen lopussa.
Järjestelmätestausta tullaan suorittamaan sekä Windows 10 - ja Windows 7 -käyttöjärjestelmillä että jollain OS X -käyttöjärjestelmällä. Testaus suoritetaan pääosin tietokoneella, mutta tarvittaessa TeX-tulostusta voisi myös testata tablet-laitteella ja/tai älypuhelimella.
Kukin ryhmän jäsen testaa sovellusta eri selaimella. Testattavat selaimet on rajattu seuraaviin: Google Chrome, Mozilla Firefox, Internet Explorer, Opera, Safari ja Microsoft Edge. Testauksessa käytetään kustakin selaimesta sillä hetkellä olemassa olevaa uusinta versiota. Selaimen versionumero tulee kirjata testausdokumentteihin.
5.6 Tulosten katselmoinnit ja hyväksyminen
Tekninen ohjaaja katselmoi projektiryhmän lähdekoodia vähintään kahdessa katselmointitilaisuudessa. Ohjaajalle on annettu oikeudet projektiryhmän luomaan Git-tietovarastoon, joten lähdekoodia pystytään tarkastelemaan myös pitkin projektia.
Projektin lopussa lähdekoodi tullaan hyväksyttämään teknisellä ohjaajalla ennen kuin se liitetään osaksi TIMiä. Tämän lisäksi tulostustoiminnon käyttöliittymä ja toteutusratkaisut hyväksytetään tilaajalla. Kun sekä tekninen ohjaaja että tilaaja ovat antaneet hyväksynnän, voidaan kehitetty ominaisuus lisätä osaksi TIM-järjestelmää.
Projektin allekirjoitusta vaativat dokumentit, kuten projektisuunnitelma ja projektiraportti, tullaan hyväksyttämään projektiorganisaatiolla. Vaatimusmäärittely hyväksytään palavereissa tai sähköpostitse.
5.7 Tulosten koostaminen ja toimittaminen
Kaikki projektin dokumentit laaditaan TIM-järjestelmään sekä tulostetaan ja sijoitetaan projektikansioon. Projektikansioon sijoitetaan myös projektin vaitiolosopimukset ja lisenssisitoumukset jäsenten toimesta allekirjoitettuina. Dokumenttien tulostukseen käytetään projektissa kehitettyä TIMin tulostustoimintoa.
Kaikki dokumentit tallennetaan markdown-, LaTeX- ja PDF-muodossa asetuksineen sekä poltetaan CD-levyille. CD-levyt poltetaan vasta projektin lopussa, kun kaikki tulokset ja dokumentit on hyväksytty. Yksi CD-levy liitetään projektikansioon ja toinen tiedekunnan arkistoon. Jäsenet saavat halutessaan CD-levystä kopiot. Projektin tietovarasto siirretään projektin lopuksi GitLabista YouSourceen.
5.8 Tiedostojen nimeäminen
Kaikki lähdekoodin tiedostot nimetään käyttötarkoitusta kuvaavasti, englannin kielellä ja pienillä kirjaimilla sekä sanojen erottimena käytetään alaviivaa. Projektin dokumentit kirjoitetaan ja nimetään suomeksi. Kaikkiin dokumentteihin liitetään julkistettaessa kolmiosainen versionumero. Dokumentteja tallennettaessa sen nimenä käytetään dokumentin tarkoitusta, esimerkiksi "projektisuunnitelma". CD-levylle tallennettaessa nimeen lisätään myös projektin nimi ja versionumero.
5.9 Hakemistorakenne
TIMiin muodostetussa projektin kansiossa sekä poltettavalla CD-levyllä käytetään alla olevaa hakemistorakennetta.
dokumentit
ajankaytto
esittelyt
itsearvioinnit
projektiraportti
projektisuunnitelma
sopimukset
sovellusraportti
vaatimusmaarittely
palaverit
esityslistat
katselmoinnit
materiaalit
poytakirjat
tilakatsaukset
sahkopostiarkistot
timantti
timantti_opetus
software
class_documentation
source_code
testaus
testausraportit
testaussuunnitelmat
6. Tehtävät, työmäärät ja tehtäväjako
Luku kuvaa projektin jäsenten vastuualueita sekä projektin tehtäviä ja käytettävää työmäärää.
6.1 Vastuualueet
Projektipäällikkönä projektissa toimii Marja Similä ja varapäällikkönä Topi Latva-Salo. Taulukossa 6.1 esitellään projektin olennaisimpien tulosten vastuuhenkilöt.
Tulos | Vastuuhenkilö |
---|---|
Projektisuunnitelma | Marja Similä |
Projektiraportti | Marja Similä |
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ä |
6.2 Työmäärä ja työnjako
Jäsenten tuntimäärää vastaava opintopistemäärätavoite on 10. Kukin projektin jäsen käyttää projektiin vähintään 270 tuntia, joten jokaisen jäsenen tulee käyttää viikossa. Yhteensä projektiin kertyy työtunteja 1080. projektiin noin 20 tuntia. Tämän lisäksi jäsenet käyttävät työtunteja oheiskursseihin. Kuvassa 6.1 esitetään projektin suunnitellut tuntimäärät tehtäväkokonaisuuksittain ja tehtävittäin jaettuina jäsenille. Työtunnit on määritelty arvioimalla.

7. Prosessi ja aikataulu
Luku kuvaa projektissa noudatettavaa prosessia ja projektin suunniteltua aikataulua.
7.1 Prosessi
Projektissa noudatetaan ketterää prosessia. Projektin työ on jaoteltu vaiheisiin. Jokaisella jäsenellä on kerrallaan yksi tehtävä hoidettavana.
Ensimmäinen vaihe on esitutkimusta, jossa jäsenet tutustuvat TIM-järjestelmään sekä käytettävään ohjelmointikieleen ja työkaluihin. Seuraava vaihe sisältää suunnittelua, jossa jäsenet suunnittelevat käytettäviä toteutusratkaisuja ja toiminnon työnkulkua sekä projektin läpivientiä. Tässä vaiheessa suunnitellaan myös tulostuksen käyttöohje.
Ohjelmiston toteutus on jaettu kolmeen kehitysvaiheeseen. Ensimmäisessä kehitysvaiheessa toteutetaan sovelluksen pienet palaset, kuten esimerkiksi pluginien ulkoasu ja tulostusvaihtoehdot sekä mahdolliset filtterit. Myös CSS-tulostuksen toteutus kuuluu ensimmäiseen vaiheeseen. Toisessa kehitysvaiheessa edellä mainitut palaset kootaan toimivaksi kokonaisuudeksi ja mukaan otetaan sisällysluettelot. Tässä vaiheessa keskitytään palvelimen kautta tapahtuvaan toiminnallisuuteen. Toisen kehitysvaiheen aikana tulostustoimintoa pystytään jo käyttämään, joten tässä vaiheessa suoritetaan myös ensimmäinen järjestelmätestaus. Kolmannessa kehitysvaiheessa hienosäädetään vielä ominaisuuksia sekä toteutetaan tulostustoiminnon käyttöliittymä ja tulostusasetusten hallinta. Tulostusasetuksissa käsitellään mm. kansilehdet.
Kolmannen kehitysvaiheen jälkeen siirrytään viimeistelyyn. Viimeistelyvaihessa lähdekoodia siistitään tarvittaessa, laaditaan projektiraportti ja sovellusraportti sekä suoritetaan toinen järjestelmätestaus ja laaditaan testausraportti. Viimeistelyn jälkeen projektin tulokset luovutetaan tilaajalle, minkä jälkeen projekti päättyy.
7.2 Aikataulu
Projektin ensimmäinen palaveri pidettiin 2.2.2017, ja kehitettävä sovellus on tarkoitus saada valmiiksi toukokuun alkuun mennessä. Toukokuun kahdella ensimmäisellä viikolla toteutetaan sovelluksen mahdollista pientä hienosäätöä ja viimeistelyä, mikä on otettu huomioon aikataulussa. Projektin on suunniteltu päättyvän 12.5.2017 mennessä. Projektia on mahdollista jatkaa toukokuun loppuun asti jos suunniteltu aikataulu ei näytä toteutuvan.
Kuvassa 7.1 on kuvattu projektin suunniteltu aikataulu. Suunniteltu aikataulu on saavutettavissa, jos viikkotuntitavoite saavutetaan.

8. Riskit ja niiden hallinta
Luku kuvaa projektin ennakoituja riskejä sekä niiden arvioituja todennäköisyyksiä, haittavaikutuksia ja hallintaa.
8.1 Riskien todennäköisyydet ja haitat
Riskien todennäköisyyden ja haittavaikutuksen arvioinnissa käytettävä asteikko on suuri, keskinkertainen ja pieni. Riskit on määritelty aikaisempien projektien perusteella sekä projektin jäseniltä kyselemällä. Riskit sekä niiden arvioudut todennäköisyydet ja haittavaikutukset on esitetty taulukossa 8.1.
Riski | Todennäköisyys | Haittavaikutus |
---|---|---|
Jäsenten poissaolot | Suuri | Keskinkertainen |
Kokemattomuus projektin hallinnasta | Keskinkertainen | Keskinkertainen |
Vaatimusten lisääntyminen | Suuri | Pieni |
Kokemattomuus käytetystä ohjelmointikielestä | Keskinkertainen | Pieni |
Laitteiden hajoaminen | Pieni | Keskinkertainen |
8.2 Jäsenten poissaolot
Yhdelläkään jäsenellä ei ole tiedossa matkoja projektin aikana. Yhden jäsenen kesätyöt alkavat jo huhtikuun lopulla. Mahdolliset sairastumiset on otettava huomioon, mutta niistä ei oleteta kovin isoa haittavaikutusta. Pahimmillaan kuitenkin yhden jäsenen ollessa poissa, jokin osio kehitettävästä ominaisuudesta voi viivästyä ja näin hidastaa muiden jäsenten töitä.
Poissaolojen aiheuttamaa riskiä pyritään minimoimaan välttämällä asiantuntijuuden keskittymistä ainoastaan yhdelle jäsenelle. Tällä tarkoitetaan sitä, että kukin jäsen opetellessaan jotain uutta perehdyttää myös muita asiaan, jolloin tarvittaessa muut voivat jatkaa poissaolevan jäsenen töitä. Jos poissaolosta tiedetään ennakkoon, voi kyseinen jäsenen tehdä ennen poissaoloa hieman pidempiä päiviä, jolloin poissaolo ei hidasta projektin etenemistä liikaa. Kesätyöt aloittava jäsen pyrkii tekemään ennen töiden alkua mahdollisimman paljon tunteja, jolloin suurilta viivästymisiltä voidaan välttyä.
8.3 Kokemattomuus projektin hallinnasta
Projektipäälliköllä ei ole ollenkaan kokemusta projektin hallinnasta. Ilman kokemusta työtuntien ja aikataulujen arviointi on hankalaa, joten toteutuneet aikataulut voivat poiketa paljonkin suunnitellusta.
Riskin vaikutusta voidaan minimoida kysymällä tarvittaessa neuvoa vastaavalta ohjaajalta. Projektin jäsenistä osalla on jonkin verran kokemusta projektin hallinnasta, joten myös osa jäsenistä voi auttaa projektipäällikköä tarvittaessa. Myös aikaisempien projektien toteutuneet aikataulut antavat vinkkejä aikataulun suunnitteluun.
Aikataulun viivästyessä suunnitellusta voidaan käyttää projektille varattua kahden viikon pelivaraa toukokuun lopussa. Tällöin projekti ehditään saada valmiiksi, vaikka alustava aikataulu ei pitäisikään.
8.4 Vaatimusten lisääntyminen
Projektin aikana todennäköisesti vaatimukset lisääntyvät, kun ideoita alkaa muodostua. Olemassa olevat vaatimukset voivat myös hieman muuttua projektin edetessä. Vaatimusten lisääntyessä projekti viivästyy, sillä joudutaan ottamaan huomioon asioita, joita ei ole suunniteltu aikatauluun.
Vaatimusten lisääntymistä ei voida välttää, mutta niiden vaikutusta projektin viivästymiseen voidaan ehkäistä. Alkuperäisten vaatimusten pohjalta toteutetaan ensin yksinkertaisimmat mahdolliset versiot, jotta saadaan toimiva sovellus. Tämän jälkeen ominaisuuksia voidaan ajan puitteissa laajentaa. Osa uusista vaatimuksista voidaan tilaajan kanssa rajata projektin ulkopuolelle. Kaikki esitetyt vaatimukset kuitenkin kirjataan vaatimusmäärittelyyn, jolloin ideat ovat muistissa ja sovellusta voidaan jatkokehittää projektin jälkeen.
8.5 Kokemattomuus käytetystä ohjelmointikielestä
Projektin jäsenillä ei ole kovin paljon osaamista Python-ohjelmointikielestä. Projektin jäsenten tulee siten tutustua uuteen syntaksiin, mikä saattaa hieman hidastaa projektin etenemistä ja lähdekoodiin tutustumista.
Riskin ehkäisynä aikatauluun on varattu paljon aikaa esitutkimukselle. Kaikilla jäsenillä on ohjelmointikokemusta, joten uuden syntaksin opettelun ei odoteta olevan haastavaa. Tarvittaessa myös tekniseltä ohjaajalta saadaan apua syntaksin kanssa. Jos esitutkimukseen vaaditaan enemmän aikaa, voidaan aikataulusta joustaa käyttämällä toukokuulle varattua kahden viikon pelivaraa.
8.6 Laitteiden hajoaminen
Projektin aikana käytettäviin tietokoneisiin voi tulla vikaa ja pahimmillaan jokin työtilan tietokoneista voi olla pois käytöstä hetken aikaa. Laitteiden hajoamisen myötä myös kirjoitettu lähdekoodi voi hävitä, jolloin kaikki aikaansaatu lähdekoodi voidaan joutua kirjoittamaan uudestaan.
Laitteiden hajoamista ei voi ehkäistä. Lähdekoodin häviäminen kokonaan on kuitenkin ehkäistävissä. Kaikki lähdekoodi on säilytettävä kehityskoneen lisäksi myös projektin tietovarastossa. Lähdekoodi on päivitettävä tietovarastoon vähintään jokaisen päivän päätteeksi, mikäli siihen on tehty muutoksia. Tällöin kehityskoneen hajotessa ei menetetä koko koodia ja minimoidaan hävinneen koodin määrä. Työskentelyä voi jatkaa toisella tietokoneella.
9. Yhteenveto
Timantti-projekti kehittää Jyväskylän yliopiston informaatioteknologian tiedekunnassa kehitettyyn TIM-järjestelmään tulostustoiminnon kevään 2017 aikana. Projekti toteutetaan osana Sovellusprojekti-kurssia. Projektin on suunniteltu valmistuvan toukokuun puoleen väliin mennessä, jolloin tulokset luovutetaan tilaajalle.
Suunnitellun aikataulun ja tuntityömäärien perusteella projekti on mahdollista saada valmiiksi arvioidussa ajassa. Suurimmat riskit projektin valmistumisen viivästymiselle ovat jäsenten poissaolot sekä kokemattomuus projektinhallinnasta. Vaatimusten lisääntyminen vaikuttaa myös mahdollisesti projektin viivästymiseen. Viivästymisiin on varauduttu kahden viikon pelivaralla, joka on sijoitettu toukokuun kahdelle viimeiselle viikolle.
Sovellusprojektin tarkoitus on opettaa projektiryhmän jäsenille projektimuotoista työskentelyä. Jäsenet saavat myös kokemusta sovelluksen kehitykseen kuuluvista työvaiheista.
Lähteet
[1] Matias Berg, Bek Eljurkaev, Minna Lehtomäki, Juhani Sihvonen ja Hannu Viinikainen, ”Kepler-projektisuunnitelma”, saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2015/timppa/dokumentit/projektisuunnitelma
, Jyväskylän yliopisto, tietotekniikan laitos, 2015.
[2] Joonas Konki, Anu Koskela, Mikko Kuhno, Henrik Paananen ja Atte Räty, ”Kepler-projektisuunnitelma”, saatavilla PDF-muodossa URL: http://sovellusprojektit.it.jyu.fi/kepler/dokumentit/projektisuunnitelma/kepler_projektisuunnitelma_1.0.0.pdf
, Jyväskylän yliopisto, tietotekniikan laitos, 2015.
[3] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Edistyminen", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/ongelmat/Edistyminen
Jyväskylän yliopisto, infromaatioteknologian tiedekunta, 2017.
[4] Miika Kujala, Topi Latva-Salo, Tuomas Porvali ja Marja Similä, "Ongelmalistaus", saatavilla TIM-järjestelmässä URL: https://tim.jyu.fi/view/kurssit/tie/proj/2017/timantti/ongelmat/ongelma-listaus
Jyväskylän yliopisto, infromaatioteknologian tiedekunta, 2017.
[5] TIMin kehittäjät, "TIMin koodikäytänteet", saatavailla TIM-järjestelmässä URL: https://tim.jyu.fi/view/tim/TIMin-kehitys/Koodikaytanteet
Jyväskylä yliopisto, informaatioteknologian tiedekunta, viitattu 22.3.2017.
[6] 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.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.