Helsingin
yliopiston Tietojenkäsittelytieteen laitoksen Ohjelmistotuotanto –kurssin
projektityönä toteutetaan Java-käyttöliittymäkomponentit Schedule ja Timeline. Projektin
asiakkaana on Sari A. Laakso Tietojenkäsittelytieteen laitokselta.
Käyttöliittymäkomponenttien
tarkoituksena on helpottaa hyvien käyttöliittymäratkaisujen käyttöä
ohjelmistoissa. Projektin aikana valmistuneita komponentteja voidaan käyttää
Java-sovelluskehittimissä (User Interface Management Systems UIMS), mikä
säästää käyttöliittymän toteuttajilta aikaa ja vaivaa, kun jokaisen ei tarvitse
toteuttaa komponenttia itse. Ei tule myöskään houkutusta käyttää huonompaa,
mutta helpommin toteutettavissa olevaa käyttöliittymäratkaisua.
Projektin
työmäärittely löytyy osoitteesta
http://www.cs.helsinki.fi/~salaakso/kali-ohtu.html
Tavoitteena
on suunnitella molemmat komponentit ja toteuttaa molemmista aikataulun sallimat
olennaisimmat osat. Timeline –komponetti on kalenterin sisältävä scrollbar,
jolla voi siis selata kalenteria ja valita siitä osia. Schedule –komponentti on
kalenterinäkymä, jossa näkyvä ajanjakso voi vaihdella muutamasta päivästä
muutamaan viikkoon. Tarkoitus on, että komponentteja voi käyttää yhdessä siten,
että Timelinesta valittu ajanjakso näkyy tarkemmin Schedulessa. Niitä on myös
tarkoitus pystyä käyttämään erikseen, jos vain toinen niistä soveltuu kyseessä
olevaan käyttöliittymään. Tarkemmat kuvaukset komponenteista tulee
vaatimusmäärittelyyn.
Komponenttien
toteutuksessa on tarkoitus panostaa komponenttien helppokäyttöisyyteen sekä
niitä käyttävän ohjelmoijan että niitä ohjelmassa käyttävän loppukäyttäjän
näkökulmasta käyttäen suunnittelussa hyväksi Tietojenkäsittelytieteen
laitokselle aikojen kuluessa kerääntynyttä kokemusta ja asiantuntemusta. Projektin
aikana tehtävät komponenttien käyttöliittymää koskevat päätökset on
hyväksytettävä asiakkaalla. Toteutettavien piirteiden valinta ja priorisointi
täsmennetään kälisuunnitelman valmistumisen ja priorisoinnin jälkeen.
Projektin
hallintaan ja sisäiseen kommunikointiin käytetään suomen kieltä, mutta kaikki
komponenttien käyttäjää kiinnostava dokumentointi ja ohjelmakoodissa esiintyvä
kommentointi ja nimet ovat englantia.
Komponentti
toimii Java 2 virtuaalikoneessa. Se on käytettävissä ohjelmistoissa, jotka
toteutetaan millä tahansa Java 2:ta tukevalla kehitysvälineellä ja kääntäjällä.
Projektiryhmään
kuuluvat TKTL:n opiskelijat Panu Hiltunen, Päivi Kero, Teemu Kurppa ja Jussi
Laukkanen (projektipäällikkö). Ryhmän ohjaajina toimivat Karri-Pekka Laakso ja
Asko Saura.
Projektiryhmän
kokouksissa sihteerivuoro on kiertävä siten ettei projektipäällikkö osallistu
kiertoon. Sihteerin vuoro kiertää aakkosjärjestyksessä. Projektin puolivälissä
voidaan projektipäällikkö vaihtaa. Sihteeri laittaa pöytäkirjan
ryhmähakemistoon (teksti- tai HTML-tiedostona)
Työn
tilaaja on Sari A Laakso TKTL:lta.
Projekti
vaiheet (suunnittelu, toteutus ja testaus) tuottavat seuraavat dokumentit: Projektisuunnitelma,
Vaatimusmäärittely, Käyttöliittymäsuunnitelma, Toteutussuunnitelma, Toteutus-
ja testausdokumentti, Käyttöohje ja Loppuraportti.
Projektisuunnitelmaa
päivitetään koko projektin ajan. Alustava projektisuunnitelma hyväksytetään
asiakkaalla 20.9.1999 ja tallennetaan projektikansioon. Projektisuunnitelman
liitteenä on projektin GANTT-kaavio johon on kuvattu osakokonaisuuksien
aikataulut. GANTT-kaavioon kirjataan myös projektiin osallistuvien henkilöiden
pakollisia menoja jotka rajoittavat kyseisten henkilöiden mahdollisuuksia
osallistua työhön.
Vaatimusmäärittelyssä
kuvataan asiakkaan työlle asettamat vaatimukset. Vaatimusmäärittely sisältää
käyttötapaukset. Käyttötapausten avulla testaamme käyttöliittymäsuunnittelun
aikana käyttöliittymäkomponenttien toimivuuden.
Käyttöliittymäsuunnitelmassa
kuvataan toteutettavien komponenttien käyttöliittymäratkaisut.
Toteutussuunnitelmassa
kuvataan järjestelmän tekninen arkkitehtuuri (moduulikuvaukset, rajapintojen
määrittelyt).
Toteutusdokumentissa
kuvataan käytetyt toteutusratkaisut ja –välineet. Erityisesti kuvataan
vaatimus- ja suunnitteludokumenteissa esitetyistä ratkaisuista poikkeavat
piirteet. Dokumentti sisältää testauksen kuvauksen ja testitulokset sekä
ylläpito-ohjeen.
Toteutettavista
komponenteista tehdään projektin aikana useita prototyyppejä, joiden toimintaa
käydään läpi projektiryhmäläisten ja ohjaajien kanssa. Prototyyppejä esitetään
myös asiakkaalle jolloin asiakas voi todeta projektin tilan ja esittää
toivomuksia käyttöliittymän.
Valmiiden
komponenttien dokumentoinnilla 3 kohderyhmää:
1. Owner:
( Komponenttien jatkokehittäjä, tarvitsee myös komponenttien lähdekoodin )
2.
UI-designer: ( Käyttöliittymäsuunnittelija, ei välttämättä koodaa )
3.
Programmer: ( Ohjelmoija )
Käyttöohjeeseen
sisällytetään koodin kommenteista generoitu kuvaus.
Projekti
alkoi 14.9.1999 ja päättyy 3.12. Kriittisiä päivämääriä ovat:
Projektisuunnitelma
20.9.1999,
Vaatimusmäärittely
23.9.1999,
Käyttöliittymäsuunnitelma
8.10.1999,
Toteutussuunnitelma
22.10.1999,
Toteutus-
ja testausdokumentti sekä käyttöohje 29.11.1999,
Loppuraportti
1.12.1999 ja
Demo 3.12
.1999.
Katso
myös liite A: GANTT-kaavio!
Projektin
alkuvaiheessa Jussi toimii projektipäällikkönä. Kokouksissa valitaan
sihteeri(kiertävä), jonka tehtävänä on kirjoittaa muistio kokouksesta ja
toimittaa se verkkoon. Projektisuunnitelman laadintaan osallistuvat kaikki
ryhmän jäsenet. Muilta osin projektin työnjakoa tarkennetaan pian.
Oheisessa
taulukossa on alustava työmääräarvio. Työn vaiheiden ajoituksista ja töiden
päällekkäisyyksistä saa parhaimman kuvan tarkastelemalla tämän dokumentin
liitteenä olevaa GANTT-kaaviota. Työn on laskettu vastaavaan kuuden
opintoviikon suoritusta Helsingin Yliopiston Tietojenkäsittelytieteen laitoksella.
Työ |
Tunnit
|
Projektisuunnitelma
ja sen päivittäminen |
50 |
Vaatimusmäärittely |
30 |
Käyttöliittymäsuunnitelma: Käyttöliittymän
suunnittelu Käyttöliittymän
testaus käyttötapauksilla Dokumentin
tarkastus + tarkentaminen |
80 |
Toteutusuunnitelma: Toteutuksen
suunnittelu Toteutussuunnitelman
testaus Dokumentin
tarkastus + tarkentaminen |
150 |
Toteutus: |
400 |
Testaus |
50 |
Toteutus-
ja testausdokumentti |
60 |
Loppuraportti |
30 |
Käyttöohje |
30 |
Demon
valmistelu ja esitys |
10 |
Oman
toiminnan arviointi |
15 |
Seurantapalaverit |
200 |
YHT: |
1105 |
Projektiryhmällä
on virallisia kokouksia kahdesti viikossa, maanantaisin kello 17.00 – 20.00
sekä perjantaisin 14.15 – 16.00.
Lisäksi
ryhmä kokoontuu tarpeen mukaan, esim. prototyyppien esittelyä varten.
Käyttöliittymäsuunnitelman
tarkastustilaisuus pidetään 12.10.1999.
Aluksi
yritettiin muutamaan kertaan tehdä kahden viikon suunnitelmia, mutta kaksi viikkoa
todettiin liian pitkäksi ajaksi. Toteutuksen alkaessa alamme tehdä viikon
mittaisia suunnitelmia, jotka sovitaan perjantai-palaverissa. Edellisen viikon
suunnitelman toteutumista seurataan myös perjantaisin.
Projektissa
ei sovelleta tiukasti mitään prosessimallia, mutta protoilumallin mukaisesti
pyritään tuottamaan nopeasti osittain toimivia prototyyppejä, joilla voidaan
arvioida ratkaisujen hyvyyttä.
Dokumentointikielenä
on asiakkaan toivomuksesta englanti, mutta projektin sisäisissä dokumenteissa
(projektisuunnitelma, pöytäkirjat) käytetään suomea.
Projektisuunnitelma
on projektiryhmän sisäiseen käyttöön tarkoitettu dokumentti, jota päivitetään
koko projektin ajan. Projektisuunnitelmassa kuvataan yhteisesti sovittuja
toimintatapoja, joita projektilaisten tulisi noudattaa.
Vaatimusmäärittelyssä
kuvataan asiakkaan asettamat vaatimukset toteutettaville
käyttöliittymäkomponenteille, esitellään muissa projektin vaiheissa
pohjamateriaalina käytettävät käyttötapaukset ja tarkennetaan toteutuksen ja
testauksen vaatimuksia.
Käyttöliittymäsuunnitelma
pohjautuu vaatimusmäärittelyssä esitettyihin käyttötapauksiin. Käyttöliittymäsuunnitelmassa
tarkennetaan käyttöliittymä mahdollisimman lopulliseen muotoonsa, siten,
että käyttötapauksista seuraavat
toiminnat voidaan käyttöliittymällä toteuttaa. Ratkaisuja esitetään tekstin
lisäksi käyttöliittymästä piirrettyjen kuvien avulla.
Toteutussuunnitelmassa
kuvataan toteutettavat komponentit ohjelmistona. Luokka- ja oliokaavioilla
kuvataan komponenttien osien riippuvuuksia ja yhteyksiä toisiinsa. Sekvessikaavioilla
kuvataan komponenttien osien välistä kommunikaatiota tavallisimmissa
tapauksissa. Komponenttien kutsurajapinnat määritellään mahdollisimman
lopulliseen muotoon jo tässä vaiheessa. Toteutussuunnitelmasta muodostuu
lopulta toteutuksen kuvaus.
Tutorial
on sovelluskehittäjille suunnattu käyttöohje, jossa esimerkein kerrotaan,
kuinka komponentteja voi käyttää ja muokata oman ohjelmistonsa tarpeisiin.
Testaussuunnitelmassa
kuvataan testiaineisto ja suoritettavat testitapaukset ja arvioidaan
testitapausten kattavuus.
Testausraportissa
kuvataan testaussuunnitelmassa esitettyjen testitapaussten tulokset. Raportissa
kuvataan tarkasti kaikki löydetyt virheet ja puutteet, joita ei projektin
puitteissa voida korjata.
Yhteistä
ohjelmointiympäristöä ei valita, vaan jokainen voi ohjelmoida itselleen
tutuimmassa ympäristössä. Asiakkaan toivomuksesta toteutetaan komponenteista
vain Windows Look-and-Feel –versiot, joten ensisijaisesti testaus suoritetaan
Windowsissa.
Ohjelmakoodin
kommentointi (erityisesti JavaDoc-kommentit) on englanninkielistä, samoin kuin
kaikki luokkien, metodien, muuttujien tms. nimet. Kuitenkin toteutusvaiheessa
voi vaikeita ratkaisuja kommentoida suomeksi. Näitä voidaan kääntää myöhemmin
lopullisesta koodista englanniksi.
Ohjelmakoodissa
noudatetaan ensisijaisesti Sunin Java
Coding Conventions - tyyliopasta (http://java.sun.com/docs/codeconv/).
Lisäksi
JavaDoc-kommenteissa huomioidaan How to
Write Doc Comments for Javadoc –oppaassa
(http://java.sun.com/products/jdk/javadoc/writingdoccomments.html) annetut ohjeet.
Myöhemmin
sovitaan vielä tarkemmin ryhmän omia käytäntöjä.
Dokumentit
toteutetaan Word97 –ohjelmalla. Kaikilla ryhmän jäsenillä on käytössään Word97.
Lisäksi käytetään JavaDoc –ohjelmaa HTML-muotoisten API-kuvausten tekemiseen.
Toteutuksen
suunnittelussa tarvittavia luokka-, olio- ja sekvenssikaavioita tehdään
Rational Rose –ohjelmalla. Rational Rose on asennettuna laitoksen WindowsNT –koneisiin, ja lisäksi ainakin
Jussilla on mahdollisuus käyttää sitä työpaikalla.
Kukin
ryhmänjäsen ohjelmoi haluamassaan ympäristössä, käytössä on ainakin Emacs
(Teemu, Jussi) ja Jbuilder (Panu, Päivi).
Ohjelmakoodin
version hallintaan saatetaan käyttää CVS- versionhallintaohjelmaa. Projektiryhmä
arvioi ohjelman käytön kannattavuutta ja päättää sen käytöstä myöhemmin. Jos
projektiryhmä siirtyy CVS:n käyttöön, päivitetään projektisuunnitelmaa tältä
osin.
Koska
ohjelmointiin käytetään erilaisia ympäristöjä, hoidetaan ohjelmakoodin version
hallinta käsin. Kukin huolehtii versionumeroinnin päivittämisestä. Jos
ohjelmakoodin tehdään suurempia muutoksia, esimerkiksi korvataan luokan metodin
toteutus kokonaan toisella, on huolehdittava, että vanhasta versiosta on kopio.
Hakemistorakenne sovitaan vielä yhdessä ryhmän kanssa, yksinkertainen menetelmä
on seuraava:
Jokaisen
pakkauksen hakemistossa on alihakemisto arkisto,
jonne kopioidaan aina ennen muutosta edellinen versio, siten, että tiedoston
pääte on ko. tiedoston versionumero. Lisäksi jokaisesta toimivasta pakkauksesta
voidaan ottaa talteen kopio Esimerkiksi oheisessa kuvassa on hakemistorakenne
Schedule-pakkaukselle. Arkisto-hakemistossa
on eri luokkien versioita, ja lisäksi koko pakkauksesta on ensimmäinen toimiva
kokonaisuus hakemistossa ver1.0.
schedule
DayPane.java
WeekRow.java
Schedule.java
arkisto
DayPane.java.v1.0
DayPane.java.v1.1
DayPane.java.v1.2
WeekRow.java.v1.0
WeekRow.java.v1.1
Schedule.java.v1.0
Schedule.java.v1.1
Schedule.java.v2.0
ver1.0
DayPane.java
WeekRow.java
Schedule.java
Jokaiselle
dokumentille on oma hakemistonsa, johon voidaan kerätä eri kirjoittajien
tekemät dokumentin osaset, ja näistä kootut dokumentit. Dokumenttien
versionumero lisätään aina dokumentin nimeen. Jokainen dokumentin kirjoittaja
toimittaa oman osansa dokumentista dokumentin hakemistoon, ja nimeää sen siten,
että siitä käy ilmi osasessa olevat dokumentin luvut sekä kirjoittajan nimi,
esimerkiksi suunnitteluraportti_luku_6_(teemu).doc.
Versio |
Tekijä |
Päiväys |
Muutokset |
1.0 |
Kaikki |
20.9.1999 |
Alustava projektisuunnitelma, palautettu
asiakkaalle. |
1.1 |
Jussi Laukanen |
22.9.1999 |
Versiotaulukon lisäys, Gantt-taulukkoon resurssit. |
1.2 |
Kaikki |
28.9.1999 |
Korjaukset ohjaajien palautteen mukaisesti. |
1.3 |
Jussi Laukkanen |
2.10.1999 |
Pieniä viilauksia |
1.4 |
Päivi Kero |
26.10.1999 |
Muutettu HTML:ksi ja lisätty luku 5.6. |