Projektisuunnitelma. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 <JULKINEN>



Samankaltaiset tiedostot
Projektisuunnitelma. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Projektisuunnitelma. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 <JULKINEN>

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Loppuraportti. Ryhmä 14. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan. Innofactor Oy

Laaturaportti [iteraatio 2] Ryhmä 14

Santeri Saarinen Korjattu testaustasoja ja tehty tarkennuksia I1-testaukseen

S11-09 Control System for an. Autonomous Household Robot Platform

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

Työkalut ohjelmistokehityksen tukena

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Lego Mindstorms anturit

T Ohjelmistokehitysprojekti I - Iteraatiosuunnitelma (I2)

Opetussuunnitelmien ja tutkintojen perusteiden rakenteistaminen

IT2015 EKT ERITYISEHTOJA OHJELMISTOJEN TOIMITUKSISTA KETTERIEN MENETELMIEN PROJEKTEILLA LUONNOS

SALAKIRJOITUKSEN VAIKUTUS SUORITUSKYKYYN UBUNTU käyttöjärjestelmässä -projekti

Toiminnalliset ja ei-toiminnalliset vaatimukset Tunnus (ID) Vaatimus Vaatimuksen

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

T Loppukatselmus

Data Sailors - COTOOL dokumentaatio Riskiloki

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Toteutusvaihe T2 Edistymisraportti

Kuopio Testausraportti Asiakkaat-osakokonaisuus

UCOT-Sovellusprojekti. Testausraportti

<e.g. must, essential, conditional>

Testaussuunnitelma Labra

FENG OFFICE -PROJEKTINHALLINTATYÖKALU

T Projektikatselmus

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

JHS XXX ICT-palvelujen kehittäminen: Laadunvarmistus Liite 6: Katselmointi

TIETOJENKÄSITTELYTIETEIDEN LAITOS

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Reilun Pelin työkalupakki: Kiireen vähentäminen

Projektityö

Projektiryhmä Tete Työajanseurantajärjestelmä. Käyttöohje

Internet-pohjainen ryhmätyöympäristö

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

AS Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma

Kansallinen ASPAtietojärjestelmä

T Testiraportti - järjestelmätestaus

Harjoitustyö Case - HelpDesk

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Määrittelyvaihe. Projektinhallinta

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Sopimus Asiakas- ja potilastietojärjestelmästä. Liite N: Kielivaatimukset

LOPPURAPORTTI Paperikonekilta Versio 1.0

Oppilaan pikaopas. Project 2013 käyttöliittymä ja näkymät

ELM GROUP 04. Teemu Laakso Henrik Talarmo

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

Ohjelmistotekniikka - Luento 2

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Projektiryhmä Tete Työajanseurantajärjestelmä. Riskienhallintasuunnitelma

1. ASIAKKAAN OHJEET Varauksen tekeminen Käyttäjätunnuksen luominen Varauksen peruminen... 4

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tekninen suunnitelma - StatbeatMOBILE

AS Automaatio- ja systeemitekniikan projektityöt

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

PS-vaiheen edistymisraportti Kuopio

Webforum. Version 17.2 uudet ominaisuudet. Päivitetty:

Hallintaliittymän käyttöohje

Valtioneuvoston kanslia VAIN VIRKAKÄYTTÖÖN Hallinto- ja palveluosasto/hallintoyksikkö Terja Ketola PTJ2008-työsuunnitelma 1 (5)

Kieliaineistojen käyttöoikeuksien hallinnan tietojärjestelmä

Projektin suunnittelu

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

Projektisuunnitelma. Projektin tavoitteet

COTOOL dokumentaatio Riskiloki

SALITE.fi -Verkon pääkäyttäjän ohje

ADMIN. Käyttöopas 08Q4

NEPTON JÄSENTIETO - PERUSVERSIO käyttöohjeet lyhyesti

L models. Testisuunnitelma. Ryhmä Rajoitteiset

PROJEKTIN SUUNNITTELU JOUNI HUOTARI, PAAVO MOILANEN, ESA SALMIKANGAS

Larppa-laskutusohjelma v1.1 Ohje

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys:

Uuden työ- tai mittavälineen luominen tietokantaan

Ohjelmistojen mallintaminen, mallintaminen ja UML

Menetelmäraportti - Konfiguraationhallinta

Tapahtuipa Testaajalle...

Loppuraporttiohjeistus Innovaation siirto -hankkeille

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Tekninen suunnitelma - StatbeatMOBILE

Automaattinen yksikkötestaus

Tietojärjestelmän osat

Google-työkalut: Dokumenttien jakaminen ja kommentointi

KÄYTTÖOHJE. Servia. S solutions

Ohjelmistotuotteen hallinnasta

Projektinhallinta SFS-ISO mukaan

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Provet Net Kutsut ohje

Power Steering for ATV

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Webforum. Version 14.3 uudet ominaisuudet. Viimeisin päivitys:

Transkriptio:

Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 <JULKINEN>

Muutoshistoria Versio Pvm Päivittäjä Muutos 3.0 2.3.2008 Johannes Suanto Päivitetty dokumentti projektin lopun mukaiseksi 2.1 17.1.2008 Johannes Suanto Päivitetty dokumentti Iteraatio 2 alun mukaiseksi 2.0 5.12.2007 Johannes Suanto Päivitetty dokumentti Iteraatio 1:n lopun mukaiseksi 1.4 8.11.2007 Johannes Suanto Merkitty dokumentti julkiseksi 1.3 4.11.2007 Johannes Suanto Lisätty uusi riski 1.2 1.11.2007 Johannes Suanto Päivitetty kohtia 6.1 ja 6.3 1.1 31.10.2007 Johannes Suanto Päivitetty kohtia 6.1, 6.3 1.0 19.10.2007 Johannes Suanto Esitetty Iteraatiodemossa, päivitetty versioksi 1.0 0.08 18.10.2007 Johannes Suanto Päivitetty katselmointikommenttien perusteella 0.07 17.10.2007 Johannes Suanto Päivitetty kohta 2-5.4, 7 0.06 11.10.2007 Johannes Suanto Päivitetty kohtia 6, 6.1 ja 6.2 mentorin ja asiakkaan palautteen pohjalta 0.05 4.10.2007 Johannes Suanto Päivitetty kohtia 2, 3.1 ja 3.2 0.04 2.10.2007 Mikko Luukkonen Päivitetty kohtia 3.2, 5.1.8 0.03 2.10.2007 Johannes Suanto Päivitetty layouttia sekä kohtia 1, 2, 6, 6.1, 6.2 0.02 1.10.2007 Matti Eerola Pieniä korjauksia ja kappaleen 5 kirjoittelua. 0.01 27.9.2007 Johannes Suanto Ensimmäinen versio

Sisällysluettelo Sisältö 1. Johdanto... 1 2. Sidosryhmät ja henkilöstö... 1 3. Tavoitteet... 3 3.1.Projektin tavoitteet... 3 3.2. Henkilökohtaiset oppimistavoitteet... 4 4. Resurssit ja budjetti... 6 4.1.Henkilöstön ajan resursointi... 7 4.2. Materiaalit... 7 4.3. Budjetti... 8 5. Käytännöt ja työkalut... 8 5.1. Käytännöt... 8 5.1.1. Iteratiivinen kehitys... 9 5.1.2.Iteraatioiden suunnittelu... 9 5.1.3. Dokumentointi... 9 5.1.4.Riskienhallinta... 10 5.1.5. Työajan seuraaminen... 10 5.1.6. Kommunikointi... 10 5.1.7. Iteraatiodemo... 11 5.1.8. Vikojen seuraaminen... 11 5.1.9. Versionhallinta... 11 5.1.10. Ohjelmointistandardit... 11 5.1.11. Prosessin kehitys... 11 5.1.12. Vaatimustenhallinta... 11 5.1.13. Suunnittelu... 11 5.2. Laadunvarmistussuunnitelma... 12 5.3. Työkalut... 12 5.4. Standardit... 12 6.Vaiheistus... 12 6.1. Aikataulut... 12 6.2. Projektisuunnittelu (PP-iteraatio)... 14 6.2.1 Tavoitteet... 14 6.2.2.Tuotokset... 15 6.2.3.Tehtävät... 15 6.2.4. Riskit... 17 6.3. Implementaatio 1... 17

6.3.1.Tavoitteet... 17 6.3.2. Tuotokset... 18 6.3.3. Tehtävät... 21 6.3.4. Riskit... 22 6.4. Implementaatio 2... 22 6.4.1 Tavoitteet... 22 6.4.2 Tuotokset... 23 6.4.3 Tehtävät... 25 6.4.4 Riskit... 29 7. Riskit... 29

1. Johdanto Tämän projektin tarkoituksena on toteuttaa "Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan". Projektin tilaaja on Innofactor Oy ja projektin tuottajana toimii Teknillinen Korkeakoulu. 2. Sidosryhmät ja henkilöstö Projekti toteutetaan osana Teknillisen Korkeakoulun tarjoamaa "T-76.4115 and T-76.5115 Software Development Project I and II" kurssia. Projektiryhmän jäsenet ovat kurssin opiskelijoita ja toimivat projektin kaikissa rooleissa. Asiakkaana toimii Innofactor Oy, joka on tilannut kurssilta "Ratkaisun ohjelmistotuotelinjan monikielisyyden hallintaan". Innofactor on nimennyt projektista vastaavan henkilön omassa organisaatiossaan (Mikko Lampi) sekä erillisen yhteyshenkilön (Juha Kauppi) projektia varten. Lisäksi Juha Kauppi toimii asiakkaan teknisenä asiantuntijana, joka tarvittaessa ottaa mukaan myös muita asiakkaan asiantuntijoita. Varsinaiset ohjelmistotuotelinjan loppukäyttäjät ovat myös eräs sidosryhmä, joka kuitenkin tässä tapauksessa sisällytetään Innofactorin toimintaan. Näin toimitaan koska projektiryhmällä ei ole missään vaiheessa suoraa kosketusta loppukäyttäjiin, vaan Innofactorin asiantuntijat edustavat heitä tässä projektissa. Teknillisen Korkeakoulun puolelta kurssihenkilökunta toimii myös yhtenä sidosryhmänä. Eritoten kurssin vastaava Jari Vanhanen sekä projektiryhmän mentorina toimiva Seppo Sahi ovat aktiivisesti mukana projektin etenemisessä. Lisäksi sidosryhmiksi voidaan laskea muut projektiryhmät, koska kurssin aikana vaihdetaan kokemuksia projektiryhmien välillä, sekä Accenturen konsultit, jotka seuraavat projektiryhmien etenemistä laadunvarmistusnäkökulmasta. 1

Alla on kuvattu projektin varsinainen organisaatiokaavio. Kuva 1. Organisaatiokaavio Projektiryhmä koostuu seuraavista Teknillisen Korkeakoulun opiskelijoista ja työntekijöistä. Taulukko 1. Projektiryhmän jäsenet Rooli Nimi Sähköposti Puhelin Projektipäällikkö Johannes Suanto Johannes.Suanto[##]tkk.fi 050-545 2153 Arkkitehti Matti Eerola mveerol2[##]cc.hut.fi 040-757 2883 Laadunvarmistuspäällikkö Mikko Luukkonen Mikko.Luukkonen[##]tkk.fi 040-765 6403 Kehittäjä Aleksi Tolvanen atolvane[##]cc.hut.fi 040-708 7384 Kehittäjä Arto Tolonen arto.tolonen[##]tkk.fi 040-064 3075 Kehittäjä Eero Klami eklami[##]cc.hut.fi 050-359 9444 Kehittäjä Lauri Helkkula lhelkkul[##]cc.hut.fi 045-678 3444 Kehittäjä Otto Miettinen ojmietti[##]cc.hut.fi 040-080 8119 Projektiryhmän mentor Seppo Sahi seppo.sahi##google.com 050-537 0356 Projektiryhmän www-sivut löytyvät osoitteesta: www.tkk.fi/~jsuanto/projekti 2

3. Tavoitteet 3.1.Projektin tavoitteet Projektin tavoitteena on tarkentaa olemassa olevat monikielisyyden hallinnan määritelmät ja suunnitelmat toteuttamista edellyttävälle tasolle. Lisäksi tavoitteena on suunnitella ja toteuttaa ohjelmistokomponentti sekä varmistaa toteutetun komponentin laadukkuus, toiminta osana varioitavaa tuotelinjaa ja dokumentoida se. Toteutettava ohjelmistokomponentti koostuu tietomallista, yleiskäyttöisestä kirjastosta, jota ohjelmistokehittäjät käyttävät ja jota käytetään kielitermien eli monikielisten tekstien esittämiseen käyttöliittymäkerroksella sekä käyttöliittymästä, jolla monikielisyyttä voidaan hallita (tekstien kääntäminen, muokkaaminen jne.). Ohjelmistokomponentin toteutustekniikkoina käytetään.net ja SQL Server 2005:a. Projektin projektisuunnitteluiteraatiossa on tarkoitus tuottaa projektisuunnitelma, alustava aikataulu ja arkkitehtuuri. Tämän iteraation aikana tutustutaan myös asiakkaan toimintaympäristöön, terminologiaan ja käytössä olevaan, projektin kannalta oleelliseen, ohjeistukseen. Iteraatio 1 vaiheessa tuotetaan ohjelmistokomponentin ensimmäinen toimiva ja testattu versio, joka toteuttaa asiakkaan priorisoimat perustoiminnot. Iteraatio 2 vaiheessa ohjelmistokomponentin toimintaa parannetaan ja siihen lisätään mahdollisuuksien mukaan sellaisia asiakkaan toivomia toimintoja joita ei ehditty toteuttaa iteraatio 1:ssä. Toteutettavassa ohjelmistokomponentissa on erityisesti kiinnitettävä huomioita suorituskykyyn, skaalautuvuuteen, helppokäyttöisyyteen ja ylläpidettävyyteen. Asiakkaan kanssa käytyjen keskustelujen aikana tavoitteet priorisoitiin seuraavasti. Taulukko 2: Asiakkaan priorisoidut tavoitteet Nro 1 2 3 Kriteeri Hallittavuus: Termistön suuren koon ja vaihtelevan käytön vuoksi hallittavuus on noussut ehdottomaksi tärkeimmäksi kriteeriksi. Suorituskyky ja skaalautuvuus: Suuren ja kasvavan käyttäjämäärän vuoksi on tärkeää että ratkaisu on suorituskykyinen ja kykenee skaalautumaan hyvin myös tulevaisuudessa Käytettävyys: Käyttäjät ovat tällä hetkellä kehittäjiä, projektipäälliköitä tai muita asiantuntijoita, joten käyttöliittymän on ennemmin oltava tehokas kuin käyttäjää ohjaava työkalu. 3

Tavoitteiden täyttymiskriteerejä ei ole vielä tarkennettu asiakkaan kanssa. Ne tarkennetaan kun asiakas on priorisoinut funktionaaliset toiminnot, jolloin kriteerit merkitään alla olevaan taulukkoon jokaisen tavoitteen osalta. Taulukko 3. Tavoitteiden täyttymiskriteerit Tavoite 1. Hallittavuus 2. Suorituskyky 3. Skaalautuvuus 4. Käytettävyys Täyttymiskriteeri 3.2. Henkilökohtaiset oppimistavoitteet Kurssin tavoitteisiin kuuluu myös henkilökohtaisten oppimistavoitteiden asettaminen, seuraaminen ja saavuttaminen projektiryhmän kaikille opiskelijajäsenille. Nämä oppimistavoitteet on merkitty projektin alussa alla olevaan taulukkoon ja niiden täyttymistä seurataan projektin aikana. 4

Taulukko 4 Henkilökohtaiset oppimistavoitteet Henkilö Johannes Suanto Matti Eerola Mikko Luukkonen Aleksi Tolvanen Oppimistavoitteet - Oppia johtamaan projektia paremmin - Tutustua uusiin prosesseihin ja tekniikoihin ohjelmistokehityksen saralta - Arkkitehtina toimiminen. - Erilaisten laatukäytäntöjen toteuttaminen käytännössä - Vaatimustenmäärittelyn ja laadunvarmistuksen oppiminen teorian ja työkalujen tasolla. - Arkkitehtuurin suunnittelusta toteutukseen etenemisen ymmärtäminen. ASP.NET:iin tutustuminen. - Oppia toimimaan ryhmässä aiheeseen liittyen; ryhmän jäsenille sopivien työtapojen etsiminen, kommunikointi ryhmän jäsenten kanssa paljolti hajautetussa projektissa ("etätyöstä" syntyvät haasteet), vastuualueiden jakautuminen eri jäsenten välillä ja muut suuren ryhmän ja projektin hallintaan liittyvät probleemat. - Kehitysympäristö on jo melko tuttu, joten tekniikoiden oppiminen ei ole niin tärkeällä sijalla. Kuitenkin mielenkiintoista on nähdä joidenkin työkalujen, kuten Wikin ja Bugzillan hyödyllisyys ja käytettävyys tällaisessa projektissa. - Yleisesti kaikki asiat mitä ei teoriakursseilla opi vaan vain ja ainoastaan kantapään kautta. Vaikka olen kehittäjänä, niin nyt on mahdollisuus myös nähdä vähän pintaa syvemmälle eli nähdä myös hieman koodaamisen ulkopuolelle. Töissä kehittäjänä ei oikein ehdi eikä pysty muuta kuin liukuhihnalta koodata asioita mitä pyydetään. Kurssilla pystynee paremmin keskittymään kaikkeen ohjelmiston suunnittelusta ohjelmiston toimitukseen asti. Lisäksi ohjelmiston kunnollinen testaus eri tekniikoita käyttäen. Töissä kun se jää monesti aika vähälle lähinnä ajanpuutteen takia. 5

Arto Tolonen Eero Klami Lauri Helkkula Otto Miettinen - Käytettävien teknologioiden (.net, c#, jne.) oppiminen - Käytettävien metodit ja prosessit (TDD, jne.) oppiminen - Koko projektin seuraaminen ja ymmärtäminen alusta loppuun - Käsitys expertti trion hommista - C#/.NET ympäristön oppiminen - Ohjelmistoprojektin koko elinkaaren näkeminen ja osallistuminen alusta toimitukseen asti. - saada opetetusta teoriasta käytännön kokemuksia - saada parempi yleiskuva koko projektin elinkaaresta - Oppia projektissa käytetyt ohjelmointikielet, jotka tulevat minulle melko uusina tuttavuuksina, sille tasolle, että ne voi hyvällä omatunnolla mainita osaavansa. - Oppia toimimaan projektissa, jossa täytyy opetella paljon uutta pystyäkseen toteuttamaan annetut tehtävät - Oppia lisää projektin ohjauspuolestakin - Lisätä kokemusta ohjelmistoarkkitehtuurin suunnittelusta 4. Resurssit ja budjetti Projektille on resursoitu henkilöitä seuraavasti. 1kpl projektipäällikkö (Suanto) 1kpl laadunvarmistuspäällikkö (Luukkonen) 1kpl arkkitehti (Eerola) 5kpl kehittäjiä (Helkkula, Klami, Miettinen, Tolonen, Tolvanen) Projektin työmääräksi on arvioitu 150 tuntia jokaisen henkilön osalta. Tämän lisäksi kurssin vanhaa versiota suorittavat henkilöt (Luukkonen, Eerola, Helkkula) toteuttavat projektiin kuuluvan "Software Engineering Practice Assignment" (SEPA) osion aiheesta "Automated Unit Testing". SEPA osion tekemiseen on laskettu kuluvan noin 40 tuntia / henkilö yli kurssin normaalin 150 tuntia/henkilö arvion. Tämän johdosta SEPAa suorittaville henkilöille on resursoitu kokonaisuudessaan 190 tuntia tämän projektin tekemiseen (150h + 40h). 6

4.1.Henkilöstön ajan resursointi Projektin alussa henkilöiden ajankäytölle laaditaan arvio, jota päivitetään jokaisen iteraation jälkeen. Arviointiin lasketaan mukaan kaikki erilliset tehtävät sekä "yleiset tehtävät" kuten kokoukset, uusien asioiden opiskelu, infrastruktuurin ylläpito ja viestinnän seuranta. Alla olevaan taulukkoon on merkitty projektisuunnittelu-iteraation aikana tehdyt arviot henkilöiden ajankäytöstä eri iteraatioiden aikana. Taulukkoa päivitetään jokaisen iteraation alussa. Taulukko 5: Ajankäytön päivitetty arvio, SEPA mukaan lukien Henkilö PP I1 I2 Yhteensä Suanto 60 60 30 150 Luukkonen 55 70 65 190 Eerola 45 75 70 190 Helkkula 25 80 85 190 Klami 20 70 60 150 Miettinen 25 75 50 150 Tolonen 15 75 60 150 Tolvanen 20 55 75 150 Total 265 560 495 1320 4.2. Materiaalit Projektissa käytetään seuraavia Teknillisen Korkeakoulun MSDN Academic Alliance-lisenssin kautta hankittuja ohjelmistoja: Microsoft Visual Studio Pro 2005 Microsoft Project 2007 7

Teknillisen Korkeakoulun kautta on saatu käyttöön myös seuraavia sovelluksia CVS MediaWiki Bugzilla MagicDraw UML Lisäksi käytetään seuraavia vapaasti satavilla olevia ohjelmistoja Microsoft SQL Server 2005 Management Studio Express NUnit 4.3. Budjetti Projektilla ei ole varsinaista budjettia vaan kaikki projektiryhmän tekemä työ tehdään opintojen puitteissa ja käytetyt materiaalit ovat joko vapaasti saatavilla olevia tai Teknillisen Korkeakoulun kautta hankittuja. Jokaisen iteraation lopuksi tehdään kuitenkin arvio siitä mitä vastaava työ olisi tullut maksamaan kaupallisen toimittajan tekemänä. Hintaperusteena käytetään jonkin suuren suomessa toimivan IT-toimittajan henkilötyöpäivän (htp) hintaa. Projektisuunnittelu-iteraatiossa kulutettiin noin 265 henkilötyötuntia. Kun tämä jaetaan 7,5:llä saadaan tulokseksi 35,3 henkilötyöpäivää. Suurin osa tästä on suunnittelutyötä josta eräs suuri IT-toimittaja veloittaa noin 1000 / htp. Tällöin projektisuunnittelu-iteraation kustannukseksi olisi tullut noin 35.000 Samalla periaatteella voidaan laskea arvio Iteraatio 1:lle. Iteraatio 1:n 560 tuntia on noin 74,6 htp. Jos oletetaan että suunnittelua (1000 /htp) on noin 30% ja toteutusta (800 /htp) noin 70% saadaan iteraatio 1:n hinnaksi noin 64.000. Näillä oletuksilla olisi iteraatio 1:n lopussa kulunut jo 99.000. Tämä ei luonnollisesti vastaa totuutta koska kaupallisen toimijan tehokkuus on, onneksi, eri luokkaa kuin hajautetusti ja itse hankituilla työkaluilla työtä tekevä opsikelijaprojekti. 5. Käytännöt ja työkalut 5.1. Käytännöt Alla kuvataan projektissa käytetyt käytännöt ja työkalut. 8

5.1.1. Iteratiivinen kehitys Iteratiivisella kehityksellä tarkoitetaan kehitystä joka tapahtuu syklisesti, jolloin ensimmäisen kierroksen lopputulos toimii seuraavan kierroksen lähtöpisteenä. Jokaisen iteraation alussa pidetään asiakkaan kanssa iteraatiosuunnittelukokous jonka perusteella luodaan iteraatiosuunnitelma. Tässä suunnitelmassa määritellään mitä toimia iteraation aikana tehdään. Näitä toimia voivat olla mm. vaatimusmäärittely, ohjelmiston suunnittelu, ohjelmointi ja testaus. Samalla päätetään mitä toiminnallisuutta iteraation aikana ohjelmistoon toteutetaan. Asiakas pidetään ajan tasalla viikoittaisilla edistymisraporteilla sekä jokaisen iteraation lopussa pidettävällä iteraatiodemolla, jossa esitellään iteraation tuotokset. Lisäksi asiakkaan kanssa pidetään kokouksia tarpeen mukaan. 5.1.2.Iteraatioiden suunnittelu Jokaisen iteraation alussa pidetään asiakkaan kanssa iteraation suunnittelukokous, missä asiakkaan kanssa päätetään mitä toiminnallisuuksia toteutetaan tämän iteraation aikana. Päätettyjen tehtävien lisäksi sekä asiakas että projektiryhmä keksii todennäköisesti iteraatioiden aikana lisää tehtäviä. Mikäli nämä eivät ole olemassa olevien tehtävien tarkentamista otetaan ne käsittelyyn vasta seuraavan iteraation suunnittelukokouksessa. Iteraation suunnittelukokoukseen vaaditaan valmistautumista. Projektiryhmän on käytävä läpi jäljellä olevat toiminnallisuusvaatimukset / tehtävät ja annettava niille arvio niiden vaatimasta työmäärästä ja vaikuttavuudesta arkkitehtuuriin, jotta asiakas voi huomioida nämä tiedot omassa priorisoinnissaan. 5.1.3. Dokumentointi, projektin hallintaan sekä asiakkaan kanssa kommunikointiin liittyvät dokumentit ovat projektipäällikön vastuulla. Projektipäällikkö myös kokoaa ja muuttaa pdf muotoon iteraatiodemoon tarvittavat dokumentit yhdessä dokumenteista vastaavien henkilöiden kanssa. Arkkitehti on vastuussa arkkitehtuurikuvauksesta sekä muista suoraan arkkitehtuuriin liittyvistä kuvauksista (esim. use caset). Laadunvarmistuspäällikkö vastaa laadunvarmistusohjeistuksesta, vaatimusmäärittelydokumentista sekä näihin liittyvistä muista kuvauksista. Jokainen kehittäjä on omalta osaltaan vastuussa kirjoittamastaan koodin kommentoinnista sekä mahdollisista käytön- ja käyttöohjeista. Vastuuhenkilön lisäksi dokumenttien laadinnassa käytetään muiden projektiryhmäläisten asiantuntemusta ja aikaa mahdollisuuksien mukaan työtaakan tasaamiseksi ja tiedon levittämiseksi projektiryhmässä. Dokumentit pyritään katselmoimaan projektiryhmän sisällä ja tärkeimmät dokumentit katselmoitutetaan myös asiakkaalla. Pääasiallisena katselmoinnin organisoijana toimii projektipäällikkö. Aikataulujen niin vaatiessa myös muut voivat käynnistää katselmoinnit. Dokumentit luodaan sopivalla toimisto-ohjelmalla (esim. Microsoft Office). Hajautetusti päivitettävien dokumenttien osalta käytetään Google-Docs palvelua, joka mahdollistaa monen käyttäjän samanaikaisetkin 9

editoinnit dokumenteille sekä säilyttää dokumenttien revisiohistorian. 5.1.4.Riskienhallinta Riskit tunnistetaan aluksi ohjelmistoasiantuntijoiden toimesta ja ne kirjataan riskilokiin tämän projektisuunnitelman kohdassa 7. Projektin aikana riskejä kartoitetaan jatkuvasti eri tapaamisissa sekä projektiryhmän jäsenten normaalissa työssä. Kun jokin riski havaitaan siitä ilmoitetaan ohjelmistoasiantuntijoille, ja tarvittaessa koko projektiryhmälle. Projektipäällikkö huolehtii siitä että tunnistetut riskit tulee merkittyä ja päivitettyä projektisuunnitelmaan. Riskejä käsitellään myös osana muita kokouksia, sekä projektiryhmän sisällä että asiakkaan kanssa. Riskien kirjaaminen ja päivittäminen projektisuunnitelmaan tapahtuu myös tällöin projektipäällikön toimesta. 5.1.5. Työajan seuraaminen Työaika seurataan 0,25 tunnin tarkkuudella, siten että raportointijakso on yksi viikko. Projektipäällikkö ylläpitää tuntitaulukkoa (Excel), johon on kirjattu avoinna olevat tehtävät, niiden arvioidut tuntimäärät, henkilöille suunnitellut tehtävät tunteineen sekä toteutuneet tunnit. Projektiryhmäläiset raportoivat jokaisena maanantaina klo 18 mennessä sähköpostitse projektipäällikölle edellisenä viikkona käyttämänsä tunnit. Raportoinnissa käytetään projektipäällikön luomaa ja ylläpitämää mallipohjaa, josta käy ilmi avoinna olevat tehtävät, joihin on mahdollista käyttää tunteja. Tuntitaulukkoon ja siitä tuntiraportointimallipohjaan, luodaan uusia tehtäviä projektipäällikön toimesta sitä mukaa kun tunnistetaan tarpeita uusille tehtäville. Kaikki projektiryhmäläiset voivat luonnollisesti ehdottaa uusien tehtävien luomista tilanteen niin vaatiessa. Käytetty työaika raportoidaan asiakkaalle viikoittaisessa raportissa sekä jokaisen iteraation lopussa pidettävässä iteraatiodemossa. Projektiryhmäläiset voivat seurata tilannetta projektipäällikön Google Docsissa ylläpitämästä tuntitaulukosta. 5.1.6. Kommunikointi Projektiryhmällä on käytössään IRC-kanava jonka kautta on mahdollista kysyä ja saada vastauksia ad-hoctapaan. Teknillisen Korkeakoulun tarjoamaan MediaWikiä käytetään projektiryhmän sisäisten ohjeiden (infrastruktuurin yms. asennusohjeet) luomiseen ja ylläpitoon. Järjestelmän avoimuuden vuoksi se ei kuitenkaan sovellu luottamuksellisen tiedon säilyttämiseen. Sähköpostia käytetään normaaliin kommunikaatioon projektiryhmän jäsenten kesken sekä ensisijaisena kommunikaatiokanavana asiakkaaseen päin sekä virallisempien asioiden kuten työaikaraporttien toimittamiseen. Kokousten järjestämisessä käytetään apuvälineenä www.doodle.ch -palvelua, jonka kautta on mahdollista sopia parhaiten kaikille sopiva aika. Kokouksia pyritään järjestämään tilanteeseen sopivalla kokoonpanolla. Asiakkaan kanssa pyritään pitämään kokouksia tarvittaessa, eritoten iteraatioiden alussa ja lopussa. 10

5.1.7. Iteraatiodemo Projektipäällikkö kokoaa iteraatiodemoon tarvittavan dokumentaation ja muuntaa sen pdf-muotoon mahdollisuuksien mukaan. Valmisteleva työ pyritään saattamaan valmiiksi viimeistään demotilaisuutta edeltämänä päivänä. Arkkitehti puolestaan valmistelee ohjelmistojen demot. 5.1.8. Vikojen seuraaminen Vikojen seurantaan käytetään koulun tarjoamaa Bugzillaa, joka on käyttäjätunnuksen ja salasanan takana. Tarkemmat ohjeistukset käytöstä tulevat laadunvarmistussuunnitelmaan. 5.1.9. Versionhallinta Versionhallintaan käytetään CVS:ää. Tarkempi kuvaus eri työkaluista löytyy kohdasta 5.3 Työkalut. Koodi tulisi hakea versionhallinnasta aina kun aloittaa työskentelyn ja viedä takaisin työskentelyn päätteeksi. Versionhallinnasta hakeminen ja sinne vieminen voi tapahtua useamminkin ja se olisi hyödyllistä, jos useampi ohjelmoija muokkaa samaa toiminnallisuutta. Versionhallintaan viennin yhteydessä on suositeltavaa kirjoittaa jokin muutoksia kuvaava viesti, joka tallennetaan CVS:ään. Arkkitehti merkitsee (tag) jokaisen kehitysiteraation puolivälissä ja lopussa kaikki versionhallinnan alaiset tiedostot. Versionhallinnan alaisia tiedostoja ovat ohjelmiston ja testien lähdekoodi ja arkkitehtuurityökalujen tuottamat tiedostot. 5.1.10. Ohjelmointistandardit Koodausstandardina käytetään Innofactor Oy:n ohjelmointistandardeja, jotka ovat pitkälti yleisten C# ohjelmoinnin käytäntöjen mukaisia. Jokainen ryhmän jäsen on saanut kopion Innofactorin ohjelmointiohjeesta, jossa selitetään Innofactorilla käytettäviä ohjelmointikäytäntöjä. Lisäksi ryhmän jäsenillä on kopio ohjelmakoodin kommentointi -ohjeesta. 5.1.11. Prosessin kehitys Jokaisen projekti-iteraation päätteeksi projektiryhmä kokoontuu miettimään miten iteraatio meni ja miten seuraavassa iteraatiossa tulisi, toimia jotta se menisi paremmin. Näihin kokouksiin pyritään saamaan mukaan myös ryhmän mentor. Muut prosessinkehitystoimet on kuvattu laadunvarmistusohjeistuksessa (ks. kohta 5.2). 5.1.12. Vaatimustenhallinta Vaatimustenhallinta on kuvattu laadunvarmistussuunnitelmassa (ks. kohta 5.2) 5.1.13. Suunnittelu Arkkitehtuurin suunnittelu on luonnollisesti arkkitehdin vastuulla. Kehittäjät osallistuvat arkkitehtuurin suunnitteluun siltä osin kuin suunnittelusta voi erottaa sopivan kokoisia alueita kehittäjille. Arkkitehtuuria pyritään suunnittelemaan samalla työkalulla kuin millä alemman tason suunnittelu tehdään. Aina se ei kuitenkaan ole mahdollista. 11

Alemman tason suunnittelun tehtävät lisätään tehtävälistaan aina kun tarvetta suunnitteluun tulee. Tehtävälistasta suunnittelutehtävät jaetaan eteenpäin normaalin käytännön mukaisesti. 5.2. Laadunvarmistussuunnitelma Laadunvarmistussuunnitelma on eriytetty erilliseksi dokumentikseen. 5.3. Työkalut Ohjelmistokehitysympäristönä käytetään Microsoft Visual Studio 2005 Pro -ohjelmaa. CVS on tuttu kaikille kehittäjille ja he saavat käyttää omavalintaistaan ohjelmistoa CVS:n käyttöön. Kehitysympäristöön on esimerkiksi tarjolla lisäosa, jolla sen saa toimimaan suoraan CVS:n kanssa (http://www.jalindi.com/igloo/). Voi myös käyttää erillistä ohjelmaa kuten WinCVS. Todennäköisesti helpoin vaihtoehto on käyttää WinCVS:ää, jonka voi ladata ilmaiseksi osoitteesta http://www.wincvs.org/ (versio 2.0.2.4). Arkkitehtuurin ja alemman tason suunnitteluun käytetään MagicDraw UML -ohjelmistoa. Tietokannan rakenteen suunnittelussa käytetään Microsoftin Visual Studio 2005 - SQL Management Studio - ohjelmistoista löytyvää tietokantadiagrammi -työkalua. 5.4. Standardit Projektissa käytetään asiakkaan ohjelmointi- ja dokumentointiohjeita. 6.Vaiheistus Projekti on vaiheistettu kolmeen erilliseen vaiheeseen; Projektin suunnittelu, Iteraatio 1 ja Iteraatio 2. Ensimmäiseen Projektin suunnittelu vaiheeseen kuuluu varsinaisen projektisuunnittelun lisäksi mm. projektiin tutustuminen, työtavoista sopiminen ja muu projektiin liittyvä valmistelutyö kuten infrastruktuurin ja työkalujen valinta ja käyttöönotto. Iteraatioiden 1 ja 2 aikana tehdään suurin osa varsinaisesta projektityöstä, eli ohjelmistotuotelinjan monikielisyyden hallinnan ratkaisun toteuttamisesta tilaajalle. 6.1. Aikataulut Projektilla on sekä ulkoisia että sisäisiä virstanpylväitä. Alla on listattu kaikki projektin kannalta tärkeät päivämäärät kuten iteraatioiden päättymiset, sisäiset aikarajat, tapaamiset asiakkaan kanssa jne. Aikataulua täydennetään ja tarkennetaan jatkuvasti. 12

Taulukko 6: Aikataulu Päivämäärä Tehtävä Status 14.9.2007 Ohjelmistoasiantuntijatiimien kokoaminen OK 18.9.2007 Asiakasinfo, ensimmäinen tapaaminen asiakkaan edustajan kanssa 21.9.2007 Kaikki kehittäjät rekrytoitu ryhmään OK 24.9.2007 Asiantuntijatiimin ensimmäinen suunnittelukokous OK OK 25.9.2007 Vaihe "Projektisuunnittelu" alkaa 25.9.2007 Luento kurssilla käytettävästä prosessikehyksestä OK 1.10.2007 Ensimmäinen suunnittelukokous koko ryhmällä. Mentor mukana 3.10.2007 Ensimmäinen suunnittelukokous asiakkaan kanssa. OK 5.10.2007 Projektisuunnittelu iteraation suunnitelman deadline; tämän asiakirjan kohtien 6.1 ja 6.2 toimittaminen asiakkaalle ja mentorille 6.10.2007 Arkkitehtuurin suunnittelukokous OK 11.10.2007 Arkkitehtuurikokous asiakkaan kanssa OK 12.10.2007 Päivitetty versio iteraatiosuunnitelmasta, Infrastruktuurin asennuskokous OK OK OK 13.10.2007 Suunnittelukokous 19.10.2007 Projektisuunnittelu iteraation dokumenttien palauttaminen, Iteraatiodemo 23.10.2007 Projektisuunnitteluiteraation Reflection workshop OK OK 25.10.2007 Vaihe "Implementaatio 1" alkaa OK 25.10.2007 31.10.2007 2.11.2007 Asiakkaan priorisointien määrittely puhelinkokouksessa asiakkaan kanssa DataTier komponentin hankkiminen asiakkaalta ja vieminen CVS:än Iteraatio 1-vaiheen iteraatiosuunnitelman deadline (tämän asiakirjan kohdat 6.1, 6.3 sekä laadunvarmistusdokumentti) 5.11.2007 Ohjelmoinnin suunnittelukokous OK 12.11.2007 Ohjelmoinnin suunnittelukokous OK Vko 46-47 Tilannetapaaminen asiakkaan kanssa 5.12.2007 Iteraatio 1-vaiheen dokumenttien palauttaminen OK OK OK OK OK 13

7.12.2007 Iteraatiodemo OK 16.12.2007 Reflection workshop OK 9.1.2007 9.1.2007 Vaihe "Implementaatio 2" alkaa Ohjelmistoryhmän kokous asiakkaan palautteen käsittelemiseksi ja toiminnallisuuksien vaikuttavuuden ja työmäärän arvioimiseksi 15.1.2007 Toiminnallisuuksien priorisointikokous asiakkaan kanssa OK 18.1.2008 8.2.2008 22.2.2008 26.2.2008 Iteraatio 2-vaiheen iteraatiosuunnitelman deadline (tämän asiakirjan kohdat 6.1, 6.4 sekä laadunvarmistusdokumentti) Demo asiakkaan ja mentorin kanssa, osoitettava nähtävissä olevaa edistystä Lopullisen version ja testausohjeiden toimittaminen vertaisryhmälle testausta varten Vertaisryhmän projektin testitulosten raportoiminen vertaisryhmälle 3.3.2008 Dokumenttien palauttaminen 3.3.2008 4-5.3.2008 Iteraatiodemo 4.3.2008 OK OK OK OK OK 6.2. Projektisuunnittelu (PP-iteraatio) Projektisuunnittelu-iteraation tarkoituksena on, varsinaisen projektisuunnitelman tekemisen lisäksi, mahdollistaa ryhmän muodostuminen, työprosesseista sopiminen, työkalujen hankkiminen ja muiden varsinaista projektia edeltävien toimien tekeminen. 6.2.1 Tavoitteet Projektisuunnittelu-iteraation tärkeimmät tavoitteet ovat: n luominen ja saattaminen sellaiselle valmiusasteelle, että sen perusteella on mahdollista ja turvallista aloittaa varsinaisen projektin tekeminen. Tähän kuuluu mm. asiakkaaseen ja tehtävään tutustuminen, karkea aikataulutus ja tehtävien määrittely, käytettävissä olevien resurssien karkea jako sekä prosessien alustava dokumentointi. Toimintakentän ymmärtäminen siten että projektiin osallistuvat ymmärtävät asiakkaan toimintakenttää riittävästi, jotta asiakkaan tarpeet ja käyttämä kieli sekä terminologia ymmärretään oikein alkavaa projektia ajatellen. Vaatimusmäärittely yleisellä tasolla sekä projektin konkreettisten tavoitteiden asettaminen yhdessä asiakkaan kanssa. Tähän kuuluu asiakkaalle tärkeimpien funktionaalisten vaatimusten ja priorisointien selvittäminen. Lisäksi arkkitehtuurisesti tärkeiden käyttötapausten kuvaaminen siten, että ne tarkentavat yllä mainittuja 14

vaatimuksia ja tuovat mahdollisesti esiin uusia tavoitteita. Tässä nimenomaisessa projektissa suuri osa tavoitteista on jo määritelty etukäteen asiakkaan luomassa arkkitehtuurikuvauksessa (Diplomityö: J. Kauppi) Toimintatapojen suunnittelu ja jalkautus. Projektisuunnittelu iteraation aikana projektin laadunvarmistusohjeisto luodaan ja siihen kirjataan projektissa käytettävät toimintatavat, kuten ohjelmointi-, dokumentointi- ja testausstandardit. Ohjeistossa määriteltyjen toimintatapojen jalkauttaminen aloitetaan myös projektin tässä vaiheessa ja sitä jatketaan koko projektin ajan. 6.2.2.Tuotokset Projektisuunnittelu-iteraation tärkeimmät konkreettiset tuotokset esitellään iteraatiodemossa 19.10.2007. Niihin kuuluvat seuraavat dokumentit:, joskin sen kohdan 5.2 Laadunvarmistussuunnitelma ei vielä tarvitse olla tarkentunut lopulliseen muotoonsa. Vaatimusmäärittelydokumentti sillä tarkkuudella kun se on mahdollista projektin tässä vaiheessa. Edistymisraportti, joka kuvaa projektin edistymistä, siihen liittyviä tehtäviä ja niihin käytettyä aikaa. 6.2.3.Tehtävät Projektisuunnittelu-iteraatioon kuuluu tässä iteraatiossa alla mainitut tehtävät. Niiden kuormittavuus on arvioitu projektisuunnittelu-iteraation alussa, taulukossa merkityllä tavalla. Tämä tulee tarkentumaan iteraation mittaan. Taulukko 7: Projektisuunnittelu iteraation tehtävät ID Tehtävä Suunnitellut tunnit 1 2 3 Projektiin tutustuminen (kaikille pakollinen tehtävä, perus arkkitehtuuridokumenttiin ja tehtävänantoon tutustuminen) 34 n tekeminen 14 Asiakkaan tarpeiden kartoittaminen, vaihe 1 10 15

4 5 6 7 8 9 10 Arkkitehtuurin jalostaminen (annetusta arkkitehtuurista eteenpäin) 13 Laadunvarmistusohjeistukseen tutustuminen (koodaus- ja dokumentointistandardit) 7 Projektin laadunvarmistusohjeiston tarkentaminen (ohjeiden kokoaminen yhteen tätä projektia varten) 8 Laadunvarmistusprosessin jatkuva päivitys 6 Arkkitehtuurin jatkuva päivitys 7 n jatkuva päivitys 8 Projektin hallinnointi (tuntiseuranta, projektin etenemisen seuraaminen ja ohjaus, raportointi asiakkaalle) 14 Lisäksi tulee iteraation lopuksi tehtävät: Iteraatiodemoon valmistautuminen: 12 tuntia Iteraatiodemo tilaisuus: 12 tuntia Lisäksi yleisiin tehtäviin on varattu aikaa seuraavasti: Kokoukset: 66 tuntia Infrastruktuurin perustaminen ja ylläpito: 23 tuntia Uusien asioiden opiskelu: 34 tuntia Viestinnän seuranta: 16 tuntia Projektisuunnittelu-iteraatioon on siis suunniteltu käytettävän 139 tuntia yleisiin tehtäviin sekä 145 tuntia 16

varsinaisiin tehtäviin ja iteraatiodemoon. Yhteensä siis 284 tuntia Osa projektilaisista suorittaa kurssin vanhemman version johon kuuluu myös erillinen SEPA (Software Engineering Practice Assignment) osio, aiheena "automated unit testing". Tähän liittyvät tehtävät tullaan myös merkitsemään projektiin kuuluviksi, kunhan tehtävät selkiytyvät siten, että kurssin vanhaa versiota suorittavilla on käytettävissään 40 ylimääräistä tuntia SEPA-tehtävien tekemiseen verrattuna kurssin uudempaa versiota suorittaviin. Tehtävien keskinäinen tärkeysjärjestys ja keskinäinen riippuvuus on tässä vaiheessa vielä suhteellisen alkeellinen. Ensimmäisenä, ja tärkeimpänä tehtävänä, on luonnollisesti (1) Projektiin tutustuminen. Tämän pohjalta voidaan aloittaa tehtävät (2) "n tekeminen", (3) "Asiakkaan tarpeiden kartoittaminen, vaihe 1", (4) "Arkkitehtuurin jalostaminen" ja (5) "Laadunvarmistusohjeistukseen tutustuminen". Näiden tehtävien pohjalta syntyy dokumentaation ensimmäiset versiot, joita aletaan jatkojalostamaan välittömästi tehtävissä (6), (7), (8) ja (9). Alkumetreiltä asti aina loppuun asti kestävä tehtävänä on (10) "Projektin hallinnointi". Lisäksi aikaa kuluu projektin eri vaiheissa "yleisiin" tehtäviin kuten kokouksiin, infrastruktuurin luomiseen ja ylläpitoon, uusien asioiden opiskeluun sekä viestinnän seurantaan. 6.2.4. Riskit Riskit kuvataan tarkemmin tämän projektisuunnitelman kappaleessa 7. "Riskit". Lyhyenä yhteenvetona voidaan kuitenkin todeta, että suurin osa nyt tunnistetuista riskeistä liittyy asiakkaan tarpeiden riittävän hyvään ymmärtämiseen (ymmärretäänkö mikä on asiakkaalle oikeasti tärkeää), tarpeeksi selkeän arkkitehtuurin tuottamiseen (saadaanko aikaan niin selvä ja realistinen tavoitetilan kuva, että sen pohjalta on mahdollista aloittaa toteutus) tai projektin resurssitilanteen muuttumiseen (henkilöiden sairastuminen, keskeyttäminen jne.). Riskejä pyritään vähentämään asiakkaan kanssa käydyllä avoimella kommunikaatiolla, projektin tavoitteiden selkeällä määrittelyllä yhdessä asiakkaan kanssa sekä projektitiimin motivoitumisen ylläpitämisellä keskinäisin tapaamisin sekä painottamalla projektista saatavia hyötyjä asiakkaalle ja projektiin osallistuville. 6.3. Implementaatio 1 Implementaatio 1 on ensimmäinen varsinainen toteutuskierros jonka aikana toteutetaan ensimmäinen versio asiakkaan toivomasta ohjelmistokomponentista sekä tähän liittyvästä dokumentaatiosta. Implementaatio 1 alkoi viikolla 43 ja päättyy ohjelmistokomponentin ja dokumentaation esittelyyn asiakkaalle iteraatiodemotilaisuudessa 7.12.2007 6.3.1.Tavoitteet Iteraatio 1:n tarkoituksena on tuottaa ohjelmistokomponentti joka toteuttaa asiakkaan priorisoiman ydintoiminnallisuuden sekä ne käyttötapaukset jotka on priorisoitu mukaan toteutuksen tähän vaiheeseen. Lisäksi tuotetaan ja päivitetään tähän liittyvä dokumentaatio. Iteraatio 1:n alussa tarkennetaankin ohjelmistokomponentin toteutuksessa käytettävä arkkitehtuuri, komponentin ensimmäisen version toteuttama toiminnallisuus ja käyttötapaukset sekä käytettävä laadunvarmistusohjeisto. Tällöin Iteraatio 1:n lopputuloksena on: 17

Ohjelmistokomponentti joka toteuttaa asiakkaan toivoman arkkitehtuurin ja ydintoiminnallisuuden sekä asiakkaan priorisoimat käyttötapaukset. Komponentin dokumentointi sekä ohjelmakoodin kommentoinnin että tarvittavan asennus- ja käyttödokumentaation osalta. Testitapaukset joiden avulla ohjelmistokomponentin toimivuus on testattu Laadunvarmistusraportti sekä testilokit jotka kuvaavat mitä laadunvarmistustoimia on käytetty ja miten tehdyt testit toimivat. -, vaatimusmäärittely- ja, arkkitehtuuridokumenttien päivitetyt versiot jotka kuvaavat projektin, arkkitehtuurin ja vaatimusten tilaa kuten ne ymmärretään iteraatio 1:n lopussa. Toteutussuunnitelma- ja käyttötapaukset dokumenttien päivitetyt versiot jotka kuvaavat teknisen toteutussuunnitelman sekä toteutettujen, ja vielä työjonossa olevien, käyttötapausten tilannetta. Lisäksi palautetaan kurssin vanhaa versiota tekevien henkilöiden osalta T-76.5158: SEPA diaries dokumentit. 6.3.2. Tuotokset Iteraatio 1:n tarkoituksena on tuottaa ohjelmistokomponentti joka toteuttaa asiakkaan priorisoiman ydintoiminnallisuuden sekä ne käyttötapaukset jotka on priorisoitu mukaan toteutuksen tähän vaiheeseen. Alla olevassa taulukossa on listattu ne tuotokset joiden on tarkoitus valmistua Iteraatio 1:n aikana Taulukko 8: Iteraatio 1:n tuotokset Ohjelmisto Ohjelmistokomponentin ensimmäinen versio Koodin kommentointi Dokumentit Päivitetty projektisuunnitelma Päivitetty vaatimusmäärittely Päivitetty arkkitehtuuri Päivitetty toteutussuunnitelma Päivitetyt käyttötapaukset Testitapaukset Laadunvarmistusraportti ja testilokit Ohjelmistokomponentin dokumentaatio T-76.5158: SEPA diaries Edistymisraportti (kalvosarja) Taulukossa 9 on listattu Iteraatio 1:n aikana toteutettava ja testattava ydintoiminnallisuus, eli ne toiminnalliset vaatimukset jotka toteutetaan täysin tai osittain iteraatio 1:n aikana syntyvään 18

ohjelmistokomponenttiin. Täydellinen lista toiminnallisista ja laadullisista määrittelyistä löytyy Vaatimusmäärittelyt dokumentista sekä sen liitteistä. Taulukko 9: Toteutettava ydintoiminnallisuus ID Vaatimus Toteutetaan Iteraatiossa 1 F1 Kehitettävän komponentin on tuettava uuden tietomallin mukaista käsitekerrosta. Ensimmäisessä iteraatiossa toteutetaan Juha Kaupin diplomityössä esitetty tietorakenne ja siihen liittyvät ominaisuudet F2 F3 F4 Tietokantaratkaisun on tuettava uuden tietomallin mukaista käsitekerrosta. Kehitettävän komponentin pitää mahdollistaa kielitermien muutosten yhdistäminen uusiin käsitteisiin. Metatietoja on pystyttävä lisäämään ja muokkaamaan tunnisteille, käsitteille ja sisällöille ehdotetun metatietorakenteen mukaisesti. Sama kuin F1 Tietorakenne mahdollistaa erilaisten muutosten tekemisen Ainakin tietorakenteissa kaikki metatiedot toteutetaan. Editoriin toteutetaan mahdollisesti vain taulukkoesitys, johon ei tule kaikkia tietoja näkyviin F6 Kielitermien kääntämistä varten on oltava mahdollista kerätä kaikki tiettyyn tuoteinstanssiin, toiminnallisuuteen tai käyttöliittymäsivuun liittyvät kielitermit. Kaikkien hierarkisten tietojen mukaan hakeminen toteutetaan tietomallissa ja editorissa. F8 Kielitermien tunnisteen keksiminen on oltava mahdollista kehittämisvaiheessa Tietorakenne mahdollistaa F9 Kielitermien tunniste ja sen metatiedot lisätään automaattisesti kielitermikantaan vasta siinä vaiheessa, kun tunnistetta käytetään ajonaikana. Jos tunnistetta ei löydy ja ohjelma on tietyssä tilassa, uusi tunniste lisätään F13 Tietokannan on tuettava kielitermien muokkausta ajonaikaisesti useamman käyttäjän toimesta samanaikaisesti. Käytetään tietokantaa 19

F14 F16 Uuden tietomallin eheys on oltava mahdollista tarkistaa automaattisesti. Mikäli tuoteinstallaatiokohtaista kantaa ei ole käytössä, tehdään haku yhteiseen kielitermikantaan. Käytetään tietokantaa Toteutetaan logiikka, joka etsii termejä kummastakin kannasta. Jos installatiokohtaista kantaa ei ole, etsii vain jaetusta kannasta F19 Kehitettävän komponentin on tuettava uuden tietomallin mukaisia hakusääntöjä. Tietomalliin toteutetaan myös hierarkian mukaiset hakusäännöt jne. F20 Kielieditorilla on pystyttävä: A) lisäämään B) hakemaan ja C) muokkaaman kielitermejä. F21 Kielieditorilla on kaksi tilaa: A) käyttömoodi, jossa voi vain hakea kielitermejä (ei muutoksia tietomalliin) B) editointimoodi, jossa voi myös muokata ja lisätä kielitermejä Editoriin toteutetaan hakukontrolli ja taulukon esittävä listauskontrolli, jossa voi muokata ja lisäillä rivejä. ks. F20 F23 F23 F31 F35 F36 Kielieditori sisältää kielitermien sisällön kääntämiseen liittyvät kohdat ja kontekstin, tunniste saattaa näkyä riippuen tilanteesta (erikoistapaus). Kielieditorin on tarjottava useamman samaan kontekstiin liittyvän kielitermin muokkaaminen samalla kertaa yhdessä näkymässä. Tarkistettavaksi merkittyjen kielitermien hakeminen ja näyttäminen on oltava mahdollista. Kielieditorissa on pystyttävä määrittelemään mille kielille kielitermejä käännetään. Kielen vaihtamisen tulee onnistua ajonaikaisesti esimerkiksi valikosta valitsemalla. Kieliä tulee käsitellä samanarvoisesti mitä tulee näiden lisäämiseen kielieditorilla oli kyseessä sitten maakohtainen kieli tai ei. Taulukkoon tulee näkyviin kyseiset tiedot ks. F20 Menee melkein samalla vaivalla hakukontrolliin Kielieditoriin tulee konfattavaksi, mitä kieliä siinä voi valita ks F35 20

ID Kuvaus Toteutetaan osittain Iteraatiossa 1 F5 Kaikki kielitermit on sijaittava keskitetysti yhdessä paikassa ja kaikkien kielitermien kääntäminen tai muokkaaminen tapahtuu samalla tavalla: 1. Kielieditorin näkökulmasta kielitermit sijaitsevat yhdessä paikassa 2. Kielitermit on tallennettu samaan paikkaan eli tietokantaan. F10 F11 F27 Kielitermin tunnisteelle on oltava mahdollista antaa kehitysvaiheessa oletussisältö. Kielitermin tunniste on voitava lisätä myös nykyisellä tavalla. Käyttöliittymäsivulta on löydyttävä toiminto, jonka avulla voi kaikkia käyttöliittymäsivun kielitermejä: A) muokata B) merkitä tarkistetuiksi C) asettaa metatietoja. Toteutetaan installaatiotasoon asti eli myös paikallinen tietokanta toteutetaan. Arkkitehtuurin pitäisi tukea myös sen alapuolella olevien tietojen tallennusta, mutta niitä tuotehierarkiatasoja ei toteuteta Toteutetaan vain tietorakenteen osalta Editoriin toteutetaan vain taulukkomuoto jossa voi kyllä luoda uuden rivin eli tunnisteen.jos tarkoitetaan nykyisen kaltaista erillistä kohtaa, johon voi suoraan syöttää tunnisteen niin ei toteuteta. Toteutetaan tietorakenteeseen. Editoriin tulee toteutussuunnitelmassa luetellut tiedot 6.3.3. Tehtävät Tehtäville on tehty alustava arvio jo heti iteraation alussa. Tätä arviota päivitetään jatkuvasti projektipäällikön tehtäväseurannassa mutta päivitykset tuodaan projektisuunnitelmaan vasta iteraation lopussa. Taulukko 10: I1 iteraation alustava työmääräarvio tehtäville ID Tehtävä Alustava arvio (h) Y Kokoukset 74 Y Infrastruktuurin perustaminen ja ylläpito 16 Y Uusien asioiden opiskelu 32 Y Viestinnän seuranta 16 10 Projektin hallinnointi (tuntiseuranta, seuraaminen ja ohjaus) 14 27 n jatkuva päivitys 12 28 Arkkitehtuurin jatkuva päivitys 12 29 Laadunvarmistusprosessin jatkuva päivitys 12 30 Vaatimusmäärittelyn päivitys 8 31 Katselmoinnit 16 21

32 SEPA - suunnittelu 21 33 SEPA - dokumentointi 21 34 Käyttötapausten määrittely 12 35 Toteutussuunnitelman tekeminen 8 36 Tietokantakuvaus valmiiksi 8 37 DataTier hankinta ja vienti CVS:ään 2 38 Toteutettavien osien UML malli 8 39 Toteutettavien komponenttien jako 8 40 Iteraatiodemon valmistelu 12 41 Iteraatiodemo 8 42 Ohjelmointi (puretaan auki iteraation aikana) 125 43 Testaus (puretaan auki iteraation aikana) 64 44 Dokumentointi 20 529 Ajantasainen iteraation työmäärä löytyy tuntiraportointi excelistä. 6.3.4. Riskit Riskit kuvataan tarkemmin tämän projektisuunnitelman kappaleessa 7. "Riskit". Lyhyenä yhteenvetona voidaan kuitenkin todeta, että suurin osa Iteraation 1 alussa tiedossa olevista riskeistä liittyy asiakkaan tarpeiden riittävän hyvään ymmärtämiseen (ymmärretäänkö mikä on asiakkaalle oikeasti tärkeää, ymmärretäänkö jos asiakkaan toiveita ei ole mahdollista toteuttaa), tarpeeksi selkeän arkkitehtuurin tuottamiseen (saadaanko aikaan niin selvä ja realistinen tavoitetilan kuva, että sen pohjalta on mahdollista toteuttaa toivottu ohjelmistokomponentti) tai projektin resurssitilanteen muuttumiseen (henkilöiden sairastuminen, keskeyttäminen, aikataulun riittäminen jne.). Riskejä pyritään vähentämään asiakkaan kanssa käydyllä avoimella kommunikaatiolla, projektin tavoitteiden selkeällä määrittelyllä yhdessä asiakkaan kanssa sekä projektitiimin motivoitumisen ylläpitämisellä keskinäisin tapaamisin sekä painottamalla projektista saatavia hyötyjä asiakkaalle ja projektiin osallistuville 6.4. Implementaatio 2 Implementaatio 2 on toinen toteutuskierros jonka aikana toteutetaan asiakkaan toivoma ohjelmistokomponentti sekä tähän liittyvä dokumentaatio. Implementaatio 2 alkoi viikolla 2 ja päättyy ohjelmistokomponentin ja dokumentaation esittelyyn asiakkaalle iteraatiodemotilaisuudessa 4-5.3.2008. 6.4.1 Tavoitteet Iteraatio 2:n tavoitteena on jatkokehittää iteraatio 1:n aikana tuotettua ohjelmistokomponenttia asiakkaan priorisoitujen toiveiden mukaisesti (ks. taulukko 12. alla). Tämä toteutetaan kahdessa vaiheessa. Ensimmäisessä vaiheessa toteutetaan tärkeimmät asiakkaan priorisoimat toiminnallisuudet versioon joka toimitetaan asiakkaalle 8.2.2008 asiakkaan testausta varten. Toisessa vaiheessa keskitytään ohjelmistokomponentin testaukseen, virheiden korjaukseen sekä refaktorointiin asiakkaan antaman palautteen perusteella. 22

Ohjelmistokomoponentin lisäksi tuotetaan ja päivitetään tähän liittyvä dokumentaatio. Iteraatio 2:n lopussa asiakkaalle luovutetaan testattu ja dokumentoitu versio ohjelmistokomponentista. Iteraatio 2:n lopputuloksena on siis: Ohjelmistokomponentti joka toteuttaa asiakkaan priorisoimat toiminnallisuudet. Komponentin dokumentointi sekä ohjelmakoodin kommentoinnin että tarvittavan asennus- ja käyttödokumentaation osalta. Testitapaukset joiden avulla ohjelmistokomponentin toimivuus on testattu Laadunvarmistusraportti sekä testilokit jotka kuvaavat mitä laadunvarmistustoimia on käytetty ja miten tehdyt testit toimivat. -, vaatimusmäärittely- ja, arkkitehtuuridokumenttien päivitetyt versiot jotka kuvaavat projektin, arkkitehtuurin ja vaatimusten tilaa kuten ne ymmärretään iteraatio 1:n lopussa. Toteutussuunnitelma- ja käyttötapaukset dokumenttien päivitetyt versiot jotka kuvaavat teknisen toteutussuunnitelman sekä toteutettujen, ja jatkokehitykseksi jäävien, toiminnallisuuksien tilannetta. Lisäksi palautetaan kurssin vanhaa versiota tekevien henkilöiden osalta T-76.5158: SEPA diaries dokumentit. 6.4.2 Tuotokset Iteraatio 2:n tarkoituksena on tuottaa ohjelmistokomponentti joka toteuttaa asiakkaan priorisoimat ominaisuudet (Hallittavuus, suorituskyky ja skaalautuvuus, käytettävyys ) ja toiminnallisuudet (ks taulukko 12, alla). Taulukko 11: Iteraation 2 tuotokset Ohjelmisto Ohjelmistokomponentin lopullinen versio Ohjelmistokoodi Koodin kommentointi Dokumentit Lopullinen projektisuunnitelma Lopullinen vaatimusmäärittely Lopullinen laadunvarmistussuunnitelma Päivitetty arkkitehtuuri Päivitetty toteutussuunnitelma Päivitetyt käyttötapaukset Testitapaukset Laadunvarmistusraportti ja testilokit Ohjelmistokomponentin dokumentaatio Asennus ja käyttöohjeet T-76.5158: SEPA diaries Loppuraportti (kalvosarja) 23

Taulukossa 12, alla, on kuvattu asiakkaan kanssa 15.1.2008 priorisoidut toiminnallisuudet jotka toteutetaan mahdollisuuksien mukaan ohjelmistokomponentin lopulliseen versioon. Täydellinen lista aktiivisista, valmiista ja hylätyistä toiminnallisuuksista löytyy "vaatimusmäärittelyt" dokumentista sekä sen liitteestä. Taulukko 12: Iteraatio 2:n priorisoidut toiminnallisuudet nro ID Selite 1 U16 käyttöliittymäsivun osoite (loppuosa) on tultava automaattisen eristämisen yhteydessä kun vieraillaan sivulla 2 U5 policy 2: haetaan käyttöliittymäsivu kerrallaan muistiin (selkein) 3 U9 Tietokannan indeksoinnin optimointi suorituskykyä ajatellen (käytetty policy vaikuttaa indeksointiin) - käyttöliittymäsivu 4 editorin kautta lisättäessä maakohtainen kielitermi se lisätään myös kyseiselle kielelle U12 jos siellä ei jo ole sitä 5 U1 installaatiokohtaisen editoinnin mahdollistaminen (tarve tiputtaa osa välimuistista pois kun muokataan) 6 U2 indeksi joka kertoo mitä tietoja on jo cachessä --> ei tarvetta hakea kannasta, haut käyttävät tätä 7 tarkistusmerkintä voidaan purkaa kielikohtaisesti, asetetaan kuitenkin päälle U13 termikohtaisesti 8 F27 Käyttöliittymäsivulta on löydyttävä toiminto, jonka avulla voi kaikkia käyttöliittymäsivun kielitermejä: A) muokata B) merkitä tarkistetuiksi C) asettaa metatietoja. 9 F29 Kielitermien hakeminen ja muokkaaminen tietyn tuotehierarkiatason, toiminnallisuuden, käyttöliittymäsivun, päiväyksen ja/tai version perusteella. 10 F3 Kehitettävän komponentin pitää mahdollistaa kielitermien muutosten yhdistäminen uusiin käsitteisiin. 11 U21 taulukkoeditorin jakaminen usealle sivulle kun hakutuloksia on paljon 12 U18 oletussisällön liittäminen johonkin kieleen, riittää jos editorissa näkyy oletussisältö suomen kohdalla 13 U20 alasvetovalikot editorissa contextille 14 U25 15 F30 16 F6 "Merkitse kaikki tarkistetuiksi" ja jokaisen rivin perässä myös, jos haluaa vain yksittäisen rivin merkitä tarkistetuksi Kielitermien haku ja muokkaaminen voidaan tehdä tuotehierarkiatason tai ominaisuushierarkian tason yläpuolelle, täsmälleen samalle tasolle tai alapuolelle kuuluville kielitermeille. Kieliä tulee käsitellä samanarvoisesti mitä tulee näiden lisäämiseen kielieditorilla oli kyseessä sitten maakohtainen kieli tai ei. Menee melkein samalla vaivalla hakukontrolliin Kielitermien kääntämistä varten on oltava mahdollista kerätä kaikki tiettyyn tuoteinstanssiin, toiminnallisuuteen tai käyttöliittymäsivuun liittyvät kielitermit. 24

17 U11 18 F16 uudelle tunnisteelle on löydettävä olemassaolevaa sisältöä vastaava käsite, käyttäjän nykyisessä kontekstissa, MATTI tarkentaa Mikäli tuoteinstallaatiokohtaista kantaa ei ole käytössä, tehdään haku yhteiseen kielitermikantaan. 19 U6 policy 3: haetaan toiminnallisuus kerrallaan muistiin 20 U10 Tietokannan indeksoinnin optimointi suorituskykyä ajatellen (käytetty policy vaikuttaa indeksointiin) - toiminnallisuus 21 U4 policy 1: haetaan kaikki contentit heti kerralla muistiin 22 logiikka: voitava muokata metatietoja muokkauksen yhteydessä, esim mihin versioon U15 kuuluu 23 tuotantomoodissa näytetään oletussisältö, kehitysmoodissa "content not found" jos U22 tyhjä, muuten kans oletus 24 U23 tarkistettavat termit erottuvat hyvin käyttöliittymästä 25 U24 26 F32 Käyttöliittymäsivun alalaitaan lista kaikista sivulla olevista kielitermeistä, nappi joka vie editoriin riittää Kielitermit on voitava merkitä tarkistettavaksi halutulle tuotehierarkiatasolle ja kielelle. (liittyy ylempänä olevaan tarkistuslistaan käyttöliittymäsivukohtaisesti) 27 F22 Kielieditorin on tuettava kielitermien poistamismahdollisuutta? 28 U17 käyttöliittymäsivun selkokielinen nimi näkyviin --> millä kielellä --> oletuskieli 29 U19 käyttöliittymän nopeus (repeater control jne tms nopeutustoimia) 30 U14 tunnisteiden poistaminen (automaattinen tarkistus onko sivulla poistettavia tunnisteita) 31 U3 cache leveleiden lisääminen (muistin lisäksi esim levyvälimuisti) 32 F25 33 F17 Kielieditorilla pitää pystyä luomaan lista tuoteinstanssissa käytössä olevista kielitermeistä. Käyttäjäkohtaiset termit haetaan istunnon aloittamisen jälkeen istuntokohtaiseen muistiin (vain sen käyttäjän kielitermit, jolle istunto kuuluu). 34 U8 logiikka: mikä on paras policy toimia tämän sivun kohdalla 35 F38 Dynaamisilla kielitermeillä on monikkomuodot eri kielille 36 F37 Dynaamisilla kielitermeillä on erilaiset kontekstiriippuvaiset esitysmuodot. Toteutetaan metodi, jolla haetaan perustapauksien (numero, päivämäärä, valuutta) esitysmuodot ainakin kielen perusteella, mahdollisesti myös tuotehierarkian perusteella. 6.4.3 Tehtävät Tehtäville on tehty alustava arvio jo heti iteraation alussa. Tätä arviota päivitetään jatkuvasti projektipäällikön tehtäväseurannassa mutta päivitykset tuodaan projektisuunnitelmaan vasta iteraation lopussa. Harmaalla merkityt tehtävät ovat asiakkaan alemmalle prioriteetille asettamia ja ne karsitaan ensin pois jos aikapulaa ilmenee. 25

Taulukko 13: I1 iteraation alustava työmääräarvio tehtäville ID Nimi tunteja Y Kokoukset 40 Y Infrastruktuurin perustaminen ja ylläpito 6 Y Uusien asioiden opiskelu 14 Y Viestinnän seuranta 10 51 Projektin hallinnointi (tuntiseuranta, seuraaminen ja ohjaus) 10 52 n jatkuva päivitys 4 53 Arkkitehtuurin jatkuva päivitys 4 54 Laadunvarmistusprosessin jatkuva päivitys 8 55 Vaatimusmäärittelyn päivitys 4 56 Katselmoinnit 16 57 SEPA - suunnittelu 20 58 SEPA - dokumentointi 20 59 60 61 62 63 64 65 U 16: käyttöliittymäsivun osoite (loppuosa) on tultava automaattisen eristämisen yhteydessä kun vieraillaan sivulla U5: policy 2: haetaan käyttöliittymäsivu kerrallaan muistiin (selkein) U9: Tietokannan indeksoinnin optimointi suorituskykyä ajatellen (käytetty policy vaikuttaa indeksointiin) - käyttöliittymäsivu U12: editorin kautta lisättäessä maakohtainen kielitermi se lisätään myös kyseiselle kielelle jos siellä ei jo ole sitä U1: installaatiokohtaisen editoinnin mahdollistaminen (tarve tiputtaa osa välimuistista pois kun muokataan) U2 indeksi joka kertoo mitä tietoja on jo cachessä --> ei tarvetta hakea kannasta, haut käyttävät tätä U13: tarkistusmerkintä voidaan purkaa kielikohtaisesti, asetetaan kuitenkin päälle termikohtaisesti 4 8 8 8 16 24 16 26