TAVI

Tapahtumapohjaisten järjestelmien jonomallien visualisointi

Projektisuunnitelma 2.0

3.3.2002
 

Sisällys
1 Projektin yleiskuvaus
1.1 Työn aihepiiri
1.2 Prosessimalli
2 Aikataulu
3 Resurssit
4 Organisaatio
4.1 Osallistujat
4.2 Vastuiden jakaminen
4.3 Ryhmän työskentelytavat
5 Kehitys- ja käyttöympäristö
6 Toteutusmenetelmät ja standardit
6.1 Dokumentit
6.2 Suunnittelu
6.3 Ohjelmakoodi
7 Riskien hallinta
8 Laadun varmistus
9 Tuotteenhallinta
9.1 Versionhallinta
9.2 Varmuuskopiointi
10 Projektin päättäminen

LÄHTEET

1 Projektin yleiskuvaus

Tämän projektin tarkoituksena on tuottaa työkalu tapahtumapohjaisten järjestelmien jonomallien visualisointiin. Projekti on Helsingin yliopiston tietojenkäsittelytieteen laitoksen cum laude -opintokokonaisuuteen kuuluva ryhmätyönä tehtävä 6 opintoviikon laajuinen ohjelmistotuotantoprojekti.

Projektin asiakas on Juha Taina, jota projektiryhmässä edustaa ryhmän ohjaaja Lauri Aarnio. Projektin aihe liittyy asiakkaan väitöskirjatutkimukseen, ja työn tutkimusalueita ovat tosiaikajärjestelmät ja suorituskykyanalyysi. Asiakas on aiemmin käyttänyt suorituskykyanalyysissä suurta määrää laajoja laskentataulukoita. Menetelmää halutaan automatisoida, koska se on ollut hidas, työläs ja virhealtis.

Projektiryhmä on antanut projektin nimeksi TAVI.

1.1 Työn aihepiiri

Tapahtumapohjainen järjestelmä perustuu transaktioihin, jotka suorittavat operaatioita järjestelmän palvelupisteissä.

Projektin tarkoituksena on tuottaa visuaalinen suorituskykyanalyysityökalu, jonka avulla voidaan sekä suunnitella että analysoida tapahtumapohjaisia järjestelmiä. Työkalu perustuu jonoanalyysiin ja sitä varten kehitettyihin valmiiksi annettuihin kaavoihin.

Valmiissa työkalussa on mahdollisuus piirtää analysoitavassa järjestelmässä olevat palvelupisteet ja muista palvelupisteistä niihin saapuvat palvelupyynnöt, jotka kuvataan särminä palvelupisteiden välillä (kuva 1). Jokaiseen palvelupisteeseen voi saapua useita palvelupyyntötyyppejä, joista jokaisella on oma vaadittu palveluaika. Kaikkiin palvelupisteisiin ei välttämättä kerry palvelupyyntöjonoa. Lisäksi malliin on voitava lisätä muuttujia, joita voidaan käyttää palvelupyyntöjen saapumistiheyden ja palvelun kestoajan arviointiin. Pääpaino työssä on visuaalisella suunnittelulla ja toteutuksella.
 


kuva 1: Tapahtumapohjaisten jonomallien visualisointi
 
 

1.2 Prosessimalli

Projektiryhmä on asiakkaan suostumuksella valinnut työkalukseen kevyen ohjelmistoprosessimallin: Extreme Programming (myöhemmin XP).

XP perustuu pienissä osissa tehtävään jatkuvaan suunnitteluun, testaukseen ja toteutukseen. Se sopii parhaiten ohjelmistotuotantoprojekteihin, joissa koko projektin kattavia tarkkoja määrittelyjä on vaikeaa tehdä heti projektin alkuvaiheessa.

Prosessimallin mukaisesti projekti etenee iteratiivisina kierroksina. Kunkin kierroksen alussa asiakas toimittaa ryhmälle nipun käyttäjäkertomuskortteja, joihin on vapaamuotoisesti kirjoitettu toteutettavaksi haluttavia toimintoja. Projektin jäsenet arvioivat tehtävien vaatiman työmäärän ja valitsevat korteista ne, jotka he  ehtivät seuraavan kierroksen aikana toteuttaa. Valinnassa noudatetaan asiakkaan esittämää toteuttamisjärjestystä.

Tässä projektissa kunkin toteutuskierroksen pituus on 3 viikkoa, ja projektin aikana ryhmä ehtii tehdä kolme iterointikierrosta. Jokaista kierrosta seuraa viikon mittainen jakso, jonka aikana:

Kukin jakso tuottaa itsenäisen toimivan ohjelmaversion.

Projektin tarkoituksena on myös kokeilla XP-prosessimallia. XP:n keskeisiä ominaisuuksia ovat mm. pareittain ohjelmointi, testitapausten luominen etukäteen sekä jatkuva testaus ohjelmoinnin aikana. Eräs projektin tavoitteista on testata parityöskentelyn toimivuutta.

XP perustuu minimaaliseen dokumentointiin, eikä tuota kaikkia perinteisen vaihejakomallin mukaisia asiakirjoja. Tämän takia ryhmän jäsenten välinen avoin kommunikointi, ohjelmakoodin huolellinen dokumentointi ja testien kirjoittaminen on erityisen tärkeää. Ohjelmistoon liittyvät dokumentit generoidaan ohjelmakoodista englanninkielisinä JavaDoc-kuvauksia.

Ennen ohjelmoinnin alkua ryhmä arvelee työn olevan kooltaan 4000 LOC (lines of code). Ensimmäisen toteutuskierroksen jälkeen koodia on kertynyt noin 3000 LOC.

2 Aikataulu

Projekti piti aloituskokouksen 17.1.2002, ja työ valmistuu viimeistään 31.5.2002. Osallistujat pitävät esityksiä omista vastuualueistaan 28.1. ja 31.1. Projektisuunnitelma valmistuu 31.1.2002, jolloin myös CVS (Concurrent Version System) -ympäristö ja ryhmän kotisivut on luotu. Yksikkötestien ja ohjelmakoodin kirjoitus aloitetaan 1.2.2002. Projektiryhmä pitää toisen ja kolmannen ohjelmointijakson jälkeen FTR-kokoukset (Formal Technical Review), vaikka ne eivät varsinaisesti XP-prosessimalliin kuulukaan.

Kaikki kevään 2002 ohjelmistotuotantoprojektit esittelevät työnsä yhteisessä esittelytilaisuudessa10.5.2002. Ryhmä pyrkii saamaan työnsä valmiiksi 1.5.2002 mennessä.Projektin aikataulu on esitetty kuvassa 2.

 kuva 2: Projektin aikataulu Gantt-kaaviona

3 Resurssit

Projekti toteutetaan Helsingin yliopiston tietojenkäsittelytieteen laitoksen tiloissa käyttämällä laitoksen tietokoneita ja ohjelmistoja. Työ tehdään Java-ohjelmointikielellä, ja projekti käyttää Sunin (copyright) Java-koodausstandardia.

Henkilöstöresurssit on esitetty luvussa 4. Jos ryhmän jäsenten aikataulujen yhteensovittamisessa tulee ongelmia, XP:n ehdottomasta parityöskentelyvaatimuksesta jouduttaneen hieman tinkimään. Projektin toteutuksen ajan jokainen projektin jäsen käyttää projektityöhön keskimäärin 20 viikkotyötuntia.

4 Organisaatio

4.1 Osallistujat

Projektiin osallistuu 6 tietojenkäsittelytieteen laitoksen opiskelijaa, projektin ohjaaja, vastuuhenkilö sekä asiakas (taulukko 1)
 
  Asiakas 
Juha Taina .
Projektin vastuuhenkilö Turjo Tuohiniemi . .
Projektin ohjaaja Lauri Aarnio lauri.aarnio@helsinki.fi 050-4836606
Projektiin osallistuvat opiskelijat Kimmo Airamaa kimmo.airamaa@helsinki.fi 045-6744503, 1355773
  Esko Kupiainen esko.kupiainen@helsinki.fi .
  Liisa Länkä liisa.lanka@hut.fi 050-3303493
  Janne Petäjä janne.petaja@helsinki.fi 040-5147586
  Heikki Tuominen heikki.tuominen@helsinki.fi 040-5674072
  Johannes Ukkonen johannes.ukkonen@helsinki.fi 050-3016916

taulukko 1: Osallistujat

Projektin johtoryhmään kuuluu projektin ohjaaja, vastuuhenkilö sekä asiakas.

Kukin projektin jäsen on tehnyt Helsingin yliopiston kanssa sopimuksen ohjelmistotuotantoprojektiryhmän tuotosten immateriaalioikeuksista. Helsingin yliopisto antaa kaikkeen sellaiseen materiaaliin, joihin se on saanut immateriaalioikeudet tällä tavalla, avoimen ohjelmistokehityksen periaatteiden mukaisesti vapaan käyttöoikeuden GNU General Public Licensen tai valintansa mukaan GNU Lesser General Public Licensen muodossa.

4.2 Vastuiden jakaminen

Projektin tehtävät on jaettu antamalla kullekin projektiryhmän jäsenelle oma vastuutehtävä (taulukko 2).
 
  Vastuu
Jäsen
Ohjaaja Lauri Aarnio
Projektipäällikkö Liisa Länkä
Java-vastaava Johannes Ukkonen
Käyttöliittymäsuunnittelu Kimmo Airamaa
Tuotteenhallinta Heikki Tuominen
Testausvastaava Janne Petäjä
Projektin WWW-sivut Esko Kupiainen

taulukko 2: Vastuut

Ohjaaja toimii asiakkaan edustajana ja laatii ryhmälle prosessimallin mukaiset käyttäjäkertomukset. Hän myös raportoi projektin etenemisestä asiakkaalle ja projektin vastuuhenkilölle.

Projektipäällikön vastuulla on:

Projektipäällikkö kokoaa projektin jäsenten yhdessä tekemän projektisuunnitelman. Lisäksi hän kokoaa projektin loppuraportin sekä valmiiden ohjelmaversioiden käyttöohjeet. Projektipäällikön sijainen on Heikki Tuominen.

Java-vastaava määrittelee projektin toteutuksessa käytettävän Java-standardien mukaisen ohjelmointityylin sekä luokkien, metodien ja muuttujien nimeämistavan. Hän neuvoo tarvittaessa muita ryhmän jäseniä ohjelmointikielen käyttöön liittyvissä ongelmissa. Tavoitteena on, että kaikki projektin jäsenet tuottavat yhtenäistä Java-koodia. Ohjelmakoodi kommentoidaan ja muuttujat nimetään englanniksi.

Tuotteen hallinnasta vastaava henkilö huolehtii versionhallintaympäristön (CVS) rakentamisesta sekä varmuuskopioinnista. Hän myös opastaa muita ryhmän jäseniä CVS:n käytössä.

Testauksesta vastaava jäsen huolehtii testien laadunvarmistuksesta. Hänen vastuullaan on, että valitut testit ovat riittäviä.

4.3 Ryhmän työskentelytavat

Ryhmä kokoontuu säännöllisesti kahdesti viikossa: maanantaisin ja torstaisin klo 16.15 - 18.00. Maanantaisin ryhmä tapaa kokouksissa asiakkaan. Kokouksissa käsiteltäviä asioita ovat: Kokousten ulkopuolella ryhmä tekee projektityötä yhdessä TKTL:n tiloissa. Koko ryhmä työskentelee yhdessä maanantaisin ja torstaisin, muina aikoina työskennellään pääosin pareittain tai yksin.

Kokouksiin laaditaan esityslista, jonka mukaisesti kokoukset etenevät. Kaikista kokouksista kirjoitetaan pöytäkirjat, jotka talletetaan projektin kotihakemistoon sekä projektikansioon. Ellei toisin sovita, projektipäällikkö on kokouksen puheenjohtaja. Sihteeri valitaan aina kokouksen alussa. Poissaoloista ilmoitetaan kaikille ryhmän jäsenille etukäteen sähköpostilla.

Kokousten ulkopuolella ryhmä käyttää keskinäisessä viestinnässään sähköpostia, WWW-sivuja ja kiireellisissä tapauksissa myös puhelimia. Sähköpostiviestit lähetetään tiedoksi myös ohjaajalle.

Projektin yhteystiedot ovat:

Valitun prosessimallin mukaisesti projekti pyritään toteuttamaan mahdollisuuksien mukaan parityöskentelynä. Parit eivät ole kiinteitä, vaan vaihtelevat projektien kuluessa.

Kukin projektin jäsen pitää henkilökohtaista tuntikirjanpitoa. Koko projektin keston ajalta arvioitu työajan määrä on 20 viikkotyötuntia/henkilö.

5 Kehitys- ja käyttöympäristö

Projekti toteutetaan Helsingin yliopiston tietojenkäsittelytieteen laitoksen Linux- ja Windows -ympäristöissä Java-ohjelmointikielellä (Java2, v.1.3.). Käyttöliittymäkomponentit tehdään pääosin Javan swing-pakkauksen luokkia käyttäen. Yksikkötestauksessa käytetään JUnit (v.3.7) -työkalua.

Versionhallinta toteutetaan käyttäen CVS-järjestelmää. Kaikki muutokset ohjelmaan tehdään CVS:n kautta. Dokumenttien hallinta tehdään keskitetysti yhden henkilön kautta. Tekstinkäsittelyohjelmistona toimii Microsoft Word (Office97) ja projektiaikataulun Gantt-kaavio toteutetaan Microsoft Project98 -ohjelmalla.

Sovellusalustana käytetään Java-virtuaalikonetta Linuxilla ja Windowsilla, ja tiedostojen käsittelyssä käytetään Emacs-editoria.

6 Toteutusmenetelmät ja standardit

Ohjelmistoprosessina ryhmä käyttää iteratiivista XP-prosessimallia. Prosessimalli on esitelty tarkemmin projektisuunnitelman kohdassa 1.2 Prosessimalli

6.1 Dokumentit

Työn aikana tuotetaan seuraavat dokumentit: Projektin hallintaan liittyvät dokumentit tuotetaan suomeksi. Kaikki ohjelmistoon liittyvät dokumentit sekä ohjelman käyttöohje ovat englanninkielisiä, ohjelmakoodista tuotettavia JavaDoc-kuvauksia. Projektipäällikkö kokoaa projektin hallintaan liittyvän dokumenttiaineiston asiakirjaksi, ja WWW-sivuista vastaava jäsen päivittää tiedostot ryhmän kotisivulle.

Työtuntilistat tuotetaan ja säilytetään ainoastaan paperiversioina. XP:n mukaiset käyttäjäkertomukset seurantatietoineen talletetaan myös sähköiseen muotoon projektin kotihakemistoon, mutta niitä ei julkaista projektin www-sivuilla.

6.2 Suunnittelu

Projektin suunnittelutyö tehdään yksikkötestejä kirjoitettaessa, eikä projektin puitteissa laadita virallisia vaihejakomallin mukaisia suunnitteludokumentteja. Ohjelman keskeisimmistä osista piirretään UML-kaavioita. Niitä käytetään helpottamaan tietorakenteiden ymmärtämistä.

6.3 Ohjelmakoodi

Projekti käyttää Sunin (copyright) Java-koodausstandardia. Ryhmän Java-vastuuhenkilö on laatinut erillisen ohjeen käytettävästä ohjelmointityylistä.
 
 

7 Riskien hallinta

Tässä ohjelmistotuotantoprojektissa tarkastellaan riskejä hyvin karkealla tasolla (taulukko 3). Projektiin ei sisälly samanlaisia tuotannollisia ja taloudellisia riskejä kuin liike-elämän ohjelmistotuotantoprojekteihin.
 
  Riski
Miten riskin voi välttää
Riskin vakavuus 
Riskin todennäköisyys Toipumissuunnitelma
Ryhmä ei ymmärrä asiakkaan tarpeita Kiinteä ryhmän ja asiakkaan vuorovaikutus Korkea Matala Asiantuntija ryhmän ulkopuolelta
Systeemimääritykset tehdään vajavaisesti tai virheellisesti Valitun prosessimallin (XP) noudattaminen Korkea Keski Prosessin sykli takaisinpäin
Muutostenhallinta vaillinaista Versionhallinta työkalun käyttö Keski Matala Menetelmien tarkastus
Valittu teknologia muuttuu Alkuperäinen teknologia valitaan oikein Korkea Matala Projekti aloitetaan alusta
Ryhmä on erimielinen - työkuorma jakautuu epätasaisesti Parityöskentely, tarkastuspisteet Keski Korkea Tehtävien uudelleen arviointi
Asiakkaan tarpeet muuttuvat Prosessimallin valinta huomioimaan muutoksia Matala Keski Uudet ominaisuudet seuraavaan jaksoon
Työ laajenee arvaamattomasti Laajennukset ryhmän yhteisellä päätöksellä Matala Matala Työn mitoittaminen alussa sovittuun tasoon
Aikarajat ovat epärealistisia Alkuperäinen aikataulu tehtävän vaativuuden mukaan Keski Keski Työn laajuus arvioidaan uudestaan
Projektin ihmisiltä puuttuu tarvittavia taitoja Tehtävän realistinen arviointi projektisuunnitelmassa Matala Matala Koulutus, ryhmän ulkopuolinen apu
Asiakkaan luottamus projektin hoitajiin vähenee tai katoaa Asiakkaan pitäminen ajan tasalla Korkea Matala Luottamuspulan syyn korjaaminen
Osa ryhmästä sairastuu tai lopettaa Varahenkilöjärjestelmä Keski Keski Lisäkuorma varahenkilölle
Tehty työ tai osa siitä katoaa. Varmuuskopiointi, versionhallinta Korkea, Matala Varmuuskopiot: TKTL ja henkilökohtaiset

taulukko 3: Riskit

8 Laadunvarmistus

Projektin laadunvarmistuksessa käytetään JUnit-nimistä testejä automatisoivaa yksikkötestaustyökalua. Työkalu on suunniteltu käytettäväksi nimenomaan Extreme Programming -prosessimallin yhteydessä. Testitapaukset kirjoitetaan Javalla jo ennen varsinaisen koodin kirjoittamista. Kun ohjelmakoodi on kirjoitettu, sen testaus voidaan suorittaa automaattisesti aikaisemmin kirjoitettujen testitapausten avulla.

Projektin aikana on tarkoitus järjestää kaksi FTR:ää. Katselmukset järjestetään 25.3. ja 2.5. eli kolmen viikon mittaista koodausjaksoa seuraavalla viikolla. Varsinaisten katselmuksien lisäksi suuri osa koodin tarkistamisesta suoritetaan XP-prosessimallin mukaisesti parityöskentelyn avulla ohjelmakoodin kirjoittamisen yhteydessä. Projektiryhmä päätti pitää katselmuskokoukset, vaikka ne eivät varsinaisesti XP-prosessimalliin kuulu.

Tuotteen korkea laatu pyritään varmistamaan testauksella, koodikatselmoinneilla ja ennenkaikkea XP:n mukaisella parityöskentelyllä.

9 Tuotteenhallinta

9.1 Versionhallinta

Projektissa käytetään versionhallintaan CVS-versionhallintajärjestelmää. Kaikki lähdekoodi ja elektroniset dokumentit talletetaan versionhallintajärjestelmään. Koska projektissa toteutetaan XP-prosessimallia, on osa dokumenteista vain paperimuodossa, eikä niitä tämän mallin puitteissa ole tarkoituskaan saattaa elektroniseen muotoon. Nämä dokumentit sekä projektin kotihakemistoon talletetut käyttäjäkertomukset jäävät elektronisen versionhallinnan ulkopuolelle.

9.2 Varmuuskopiointi

Varmuuskopioinnissa luotetaan pääasiassa TKTL:n päivittäiseen varmuuskopiointiin. Versionhallintajärjestelmästä otetaan kuitenkin vähintään viikoittain ulos lähdekoodin uusin versio,  joka talletetaan atk-keskuksen levylle. Lisäksi kaikista julkaisuista (iteraatioiden tuloksista) otetaan varmuuskopiot atk-keskuksen levylle.

10 Projektin päättäminen

Projekti voidaan katsoa päättyneeksi, kun annettujen määrittelyjen mukainen tuote on valmis ja luovutettu asiakkaalle ja kaikki tämän asiakirjan mukaiset dokumentit on laadittu ja hyväksytty. Lopputarkastuksen tekee projektin ohjausryhmä. Projekti keskeytetään keskeneräisenä, jos määrittelyjen mukaista tuotetta tai vaadittuja dokumentteja ei ole hyväksytty 31.5.2002 mennessä.
 

LIITE 1

LÄHTEET

http://www.cs.helsinki.fi/u/kpalaaks/ohtu/CVS.html - ohje CVS-versionhallinnan perusteista
http://java.sun.com/docs/codeconv/html/CodeConventions.doc10.html#186 - ohjeita java-koodausstandardeista