Työn sisältö Työn rakenne Työhön liittyvä dokumentaatio Työssä käytettävät apuvälineet Ohjauksen organisointi Tietokantasovellusten harjoitustyö syksy 2004 Sivu 1 Määritellään, suunnitellaan ja toteutetaan pieni www-alustalle toteutettava tietojärjestelmä. Tyypillisessä työssä suunnitellaan tietokanta ja sitä käsittelevä sovellus sekä toteutetaan osa suunnitellusta sovelluksesta. Tuloksena syntyy kaksi dokumenttia sekä koko joukko ohjelmatiedostoja. Dokumentit ovat olennainen osa kurssin suoritusta! Tietokantasovellusten harjoitustyö syksy 2004 Sivu 2
Harjoitellaan käytännössä pienen tietojärjestelmän suunnittelua ja toteutusta kursseilla Tietokantojen perusteet ja Johdatus sovellussuunnitteluun esitellyillä menetelmillä ja työn aikana opetettavilla välineillä. Työssä noudatetaan sovellussuunnittelun periaatteita => laadukas ohjelmisto sekä laadukas dokumentaatio Tietokantasovellusten harjoitustyö syksy 2004 Sivu 3 Työ koostuu karkeasti kahdesta vaiheesta osasuoritteineen: Suunnittelu Käyttäjät ja käyttötapaukset Tietosisältö Käyttöliittymä Suunnitteludokumentti Toteutus Toteutetaan suunniteltu työ ohjaajan määrittämässä laajuudessa Toteutusdokumentti Tietokantasovellusten harjoitustyö syksy 2004 Sivu 4
Ketkä käyttävät järjestelmää? - Etsi järjestelmän käyttäjät. Mihin järjestelmää käytetään? - Hahmottele järjestelmän käyttötapaukset. Mitä tietoa järjestelmä sisältää? - Suunnittele järjestelmän tietosisältö. Miten järjestelmää käytetään? - Hahmottele järjestelmän käyttöliittymän yleiskuva. Miten järjestelmässä liikutaan toteutettaessa kutakin käyttötapausta? Tietokantasovellusten harjoitustyö syksy 2004 Sivu 5 Määritellään taulut tietokantaan. Laaditaan aloitussivu. Ohjelmoidaan esim. käyttötapaus (tai muu looginen kokonaisuus) kerrallaan servletit, joiden avulla käyttötapaus saadaan vietyä läpi. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 6
Suunnitteludokumentin tarkoituksena on määritellä laadittava sovellus sekä esitellä harjoitustyön aiottu laajuus ja sisältö. Työn ohjaaja voi rajata ja ottaa kantaa työn sisältöön dokumentin pohjalta. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 7 Dokumentti muodostuu seuraavista osioista: kansilehti, sisällysluettelo (otsikoitu Sisältö), johdanto, yleiskuva järjestelmästä, järjestelmän tietosisältö, käyttöliittymän hahmotelma ja relaatiotietokantakaavio. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 8
Toteutettavan ohjelman nimi Dokumentin nimi Omat yhteystiedot Yliopisto, laitos Kurssin nimi, harjoitusryhmän numero Ohjaajan nimi Dokumentin päiväys Tietokantasovellusten harjoitustyö syksy 2004 Sivu 9 Järjestelmän tarkoitus Tiivis kuvaus siitä, mistä on kyse. Millaisen toiminnan tukemiseen järjestelmä on tarkoitettu? Mitkä ovat järjestelmän tavoitteet? Nämä tiedot saa yleensä tehtäväkuvauksesta. Toimintaympäristö Missä laite- ja ohjelmistoympäristössä järjestelmän on tarkoitus toimia? Tietokantasovellusten harjoitustyö syksy 2004 Sivu 10
Rajaukset liittyen työn määrittelyyn, suunnittelun ja toteutuksen laajuuteen. Toteutusympäristö Missä ympäristössä työ toteutetaan? Tietokantasovellusten harjoitustyö syksy 2004 Sivu 11 Kukkakauppa FloraNet on edistyksellinen kukkakauppa. Yrityksessä työskentelee tällä hetkellä johtajan lisäksi kuusi työntekijää, mutta uusien työtekijöiden ottamista on jo harkittu viime aikaisen hyvän menestyksen vuoksi. FloraNet tarjoaa asiakkailleen erilaisia kukkatoimituksia lähtien yksittäisten kukkien kotiinkuljetuksesta aina suuriin tapahtumakoristelutilauksiin. Tarjotakseen asiakkailleen mahdollisimman vaivattoman tavan tehdä kukkatilauksia milloin vain FloraNet on suunnittelemassa uutta verkkopalvelua yritykselleen. Asiakas voi tehdä tilauksen verkon välityksellä. Yhteen tilaukseen voi sisältyä useampia kukkalajeja ja yhtä lajia voi tilata useamman kappaleen. Tilauksen tekijä ja vastaanottaja voi olla eri henkilö. Asiakas saa tilauksesta tilausnumeron. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 12
Sidosryhmäkaavio Käyttäjäryhmät Käyttötapaukset Tietokantasovellusten harjoitustyö syksy 2004 Sivu 13 Sidosryhmäkaavio näyttää järjestelmän sidosryhmät ja niiden yhteydet järjestelmään. Kaaviossa: Sidosryhmät (yleensä kurssin harjoitustöissä vain käyttäjäryhmiä) esitetään vapaamuotoisina symboleina. Käyttötapaukset esitetään sidosryhmien ja järjestelmän välisinä nuolina, joiden kärki osoittaa palveluntarjoajaan. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 14
Määritellään sidosryhmäkaaviossa esiintyvät käyttäjät. Jokaisesta käyttäjäryhmästä lyhyt kuvaus: Keitä ovat käyttäjäryhmän henkilöt? Mitä käyttäjäryhmä voi tehdä järjestelmän avulla? Tietokantasovellusten harjoitustyö syksy 2004 Sivu 15 Asiakas Asiakas on kuka tahansa kukkakaupan sivuja katseleva käyttäjä. Hän voi katsella tarjolla olevaa kukkavalikoimaa, tehdä kukkatilauksia ja tarkastella kukkakaupan yritystietoja (toimipisteet, aukioloajat, toimitusajat, maksutavat). Asiakas ei tarvitse käyttäjätunnusta tehdäkseen tilauksia. Työntekijä Työntekijä on kukkakaupassa työskentelevä henkilö. Hän kirjautuu järjestelmään omalla käyttäjätunnuksellaan. Tämän jälkeen hän voi katsella asiakkaiden tilauksia, lisätä uusien kukkien tietoja, muuttaa ja poistaa kukkia nykyisestä kukkavalikoimasta. Järjestelmän käyttämisen lopuksi työntekijä kirjautuu ulos järjestelmästä. Johtaja Johtaja on kukkakaupan johtaja. Hän tarvitsee käyttäjätunnuksen ja salasanan käyttääkseen järjestelmää. Johtaja voi tarkastella tilastoja kukkien tilauksista. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 16
Käyttötapauksella tarkoitetaan järjestelmän avulla hoidettavaa tavoitteellista tehtäväkokonaisuutta. Esimerkiksi tilauksen kirjaus, tilauksen peruutus, asiakkaan lisäys tai poistaminen, laskun tulostus ja kuukausiyhteenvedon laatiminen ovat tehtäväkokonaisuuksia, joita on luonnollista mallintaa käyttötapauksina. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 17 Kustakin käyttötapauksesta kuvataan sen sisältö: mitä käyttötapauksessa tehdään. Raporttien kohdalta kerrotaan, mitä tietoja raporttiin sisältyy. Tässä vaiheessa ei vielä ratkaista sitä, miten käyttötapaus viedään teknisesti läpi, millainen ulkoasu näytöllä on tai mitä näppäimiä painetaan. Käyttötapausten läpivienti käyttöliittymän avulla kuvataan myöhemmin käyttöliittymän hahmottelun yhteydessä. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 18
Käyttötapausten avulla määritellään järjestelmän toiminnallisuus eli, mitä järjestelmällä tehdään. Esimerkkikäyttötapaukset havainnollistavat toiminnallisuutta. Käyttötapaukset voidaan esittää tärkeysjärjestyksessä, aakkosjärjestyksessä tai käyttäjittäin ryhmiteltyinä. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 19 Asiakkaan käyttötapaukset Yritysinfon lukeminen Asiakas voi käydä lukemassa tietoa yrityksen toimipisteiden sijainnista, aukioloajoista, toimitus- ja maksutavoista. Toimipaikkalistassa näkyy toimipisteen nimi, aukioloaika, katuosoite listattuna nimen mukaan nousevassa järjestyksessä. Kukkavalikoiman katselu Asiakas voi katsella tarjolla olevaa kukkavalikoimaa. Kukkalistassa näkyy kukan lajinimi, väri ja yksikköhinta. Käyttäjän on mahdollista katsella listaa joko lajinimen tai yksikköhinnan mukaisessa järjestyksessä. Kukkien tilaaminen Asiakas voi tilata kukkia itselleen tai ystävilleen. Hän voi sisällyttää yhteen tilaukseen yhtä kukkaa useampia kappaleita ja myös useampia eri kukkalajeja. Tilausta tehdessään asiakas kertoo tilattavien kukkien lajin, värin ja määrän sekä nimensä, yhteystietonsa (puhelinnumero, osoite) ja toimitusosoitteen (vapaaehtoinen). Tietokantasovellusten harjoitustyö syksy 2004 Sivu 20
Järjestelmän tietosisältö kuvataan käsitemallin alulla (YYY, ER, oliomallinnus). Laitoksen järjestelmissä tietosisällön kuvauksen voi tehdä esimerkiksi seuraavilla ohjelmistoilla Windows-ympäristössä ohjelmistoilla Mermaid, Rational Rose demo, Plastic Lite ja ArgoUML sekä Linux-ympäristössä ohjelmistolla Umbrello. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 21 Kaavion lisäksi täytyy sanallisesti määritellä luokat (tai yksilötyypit), attribuutit arvojoukkoineen ja pakollisuuksineen sekä luokkien väliset yhteydet. Jos haluat varmistua siitä, että käsite-/oliomallisi ja käyttötapauksesi sopivat yhteen ja mallit ovat kattavia, voit laatia riippuvuusmatriisin kuvaamaan olioiden käsittelyä käyttötapauksissa. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 22
Kukkalaji Kukkalaji on valikoimasta tällä hetkellä löytyvän lajin nimi. Jokaisella lajilla on oma hinta. Attribuutti Tyyppi Kuvaus id int yksilöivä viitenumero, pakollinen nimi varchar kukkalajin nimi, pakollinen hinta int kukkalajin hinta Kukkatilaus Kukkatilaus määrittelee yksittäiseen tilaukseen liittyvien kukkien lajit ja näitä lajeja vastaavat määrät. Attribuutti Tyyppi Kuvaus kukkalaji_id int kukkalaji, johon tilaus liittyy, pakollinen tilaus_id int tilaus, johon kukat liittyvät, pakollinen maara int kukkia tilattu määrä, pakollinen Tietokantasovellusten harjoitustyö syksy 2004 Sivu 23 Käyttöliittymän hahmotelmassa luonnostellaan järjestelmän käyttöliittymä toteutettavaksi ajatellussa laajuudessa. Hahmotelmaan voi kuulua luonnoksia raporttien ja näyttöjen ulkoasusta sekä näihin liittyviä selityksiä. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 24
Erityisen tärkeää on luoda kokonaiskuva käyttöliittymästä: Miten käyttötapaukset suhtautuvat näyttöihin ja raportteihin? Miten tietyn käyttötapauksen yhteydessä toimitaan? Miten näyttöjen välillä liikutaan? Miten raportit kytkeytyvät näyttöihin? Käyttötapausten ja käyttöliittymäkomponenttien välisiä yhteyksiä voi selittää tekstimuodossa. Jos useat käyttötapaukset käyttävät yhteisiä käyttöliittymä- komponentteja tai jos käyttötapauksen yhteydessä tarvitaan monia käyttöliittymäkomponetteja, voi riippuvuuksia kuvata myös matriiseina. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 25 Relaatiotietokantakaavio esitetään SQL:n create table -lauseina. Kaavioon täytyy sisältyä taulujen välisten viiteyhteyksien ja avainten määritykset. Jos relaatiokaaviossa on attribuutteja, jotka eivät esiinny käsitemallissa, tai jonkin käsitemallin attribuutti on karsittu tai sen muotoa on muutettu, on tästä erikseen mainittava. Teknisesti tämän kohdan voi toteuttaa sisällyttämällä varsinaiseen dokumenttitekstiin vain taulujen nimet sekä lyhyen selityksen taulujen tarkoituksesta. Create table -lauseet voi antaa dokumentin liitteenä. Voit liittää tähän yhteyteen myös kuvan, josta käy esiin taulujen rakenne ja taulujen väliset viiteavaimet. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 26
CREATE TABLE kukkalaji ( id int NOT NULL, nimi varchar NOT NULL, hinta int NOT NULL, PRIMARY KEY (id)); CREATE TABLE kukkatilaus ( tilaus_id int NOT NULL, kukkalaji_id int NOT NULL, maara int NOT NULL, PRIMARY KEY (tilaus_id), FOREIGN KEY (kukkalaji_id)); Tietokantasovellusten harjoitustyö syksy 2004 Sivu 27 Toteutusdokumentissa kuvataan toteutettu ohjelmisto. Osat: Kansilehti ja sisällysluettelo Johdanto Ohjelmiston yleisrakenne Järjestelmän komponentit Asennustiedot Käynnistys- ja käyttöohje Liitteet Tietokantasovellusten harjoitustyö syksy 2004 Sivu 28
Johdannon sisältö on pitkälti sama kuin määrittely- ja suunnitteludokumentissa. Rajaukset-osassa esitetään lisärajaukset määrittely- ja suunnitteludokumenttiin nähden, esimerkiksi mitä osia ei ole toteutettu. Rajauksista pitää sopia ryhmän ohjaajan kanssa etukäteen. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 29 Ohjelmiston yleisrakenteessa kuvataan, mistä komponenteista ohjelmisto koostuu. WWW-alustaisissa sovelluksissa komponentteja ovat: HTML-sivut (käsintehdyt tai servlettien generoimat), servletit ja kuvat yms. erillistiedostot. Kokonaisuuden kuvaamiseksi esitetään kaavio, josta näkyy, miten komponentit liittyvät toisiinsa. Kaaviossa esitetään liikkuminen sivujen välillä ja sivujen generointi. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 30
Yleisrakenteen kuvaamiseksi voidaan käyttää esimerkiksi kaaviotekniikkaa, jossa on symbolit staattisia HTML-sivuja, generoituja sivuja ja servlettejä varten. Staattinen html-sivu Generoitu html-sivu Servletti Symboleja yhdistetään nuolilla, jotka kuvaavat siirtymiä sivujen välillä, servlettien kutsuja sekä siirtymiä servleteistä generoiduille sivuille. Siirtymää kuvaavaan nuoleen on syytä liittää tieto siirtymän aiheuttajasta, linkistä tai lomakkeen lähetysnapista. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 31 Tietokantasovellusten harjoitustyö syksy 2004 Sivu 32
Kaikkien komponenttien kohdalta esitetään komponentin nimi, komponentin tarkoitus ja komponentin tyyppi. Komponentit voidaan esitellä esimerkiksi ryhmiteltyinä HTMLsivuihin ja servletteihin. Lisäksi voi omana osioinaan luetella sovelluksessa käytettävät kuva-, ääni- yms. tiedostot. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 33 HTML-sivujen osalta kuvataan lyhyt luonnehdinta sivun sisällöstä, mitä tiedostoja sivuun sisältyy, mitä linkkejä tai lomakkeita sivulle sisältyy ja mitä servlettejä sivulta käynnistetään ja miten. Lisäksi kerrotaan sivuun mahdollisesti liittyvät Javascriptillä tehtävät tarkistukset. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 34
Jos HTML-sivulla on lomake, kerrotaan, mitä kenttiä lomakkeeseen liittyy. Jos lomakkeen kenttien arvoihin liittyy jotain erityisvaatimuksia, nämä kerrotaan. Myös lomakkeiden piilokentät ja niiden käyttötarkoitus on syytä esittää. Jos HTML-sivu on konkreettinen HTML-tiedosto, kerrotaan, missä tämä tiedosto sijaitsee. Jos sivu taas on generoitu, kerrotaan, mikä servletti sen generoi. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 35 Aloitussivu Käsintehty html-sivu, tiedosto: index.html, kuva liittenä k1. Sivuun liittyvät tiedostot: back123.gif: taustakuva, button223.gif: luettelomerkki logo_big.jpg: yrityksen isompi logo Sivulla on lyhyt yleisesite järjestelmästä sekä linkit, joiden avulla pääsee käsiksi järjestelmän tarjoamiin palveluihin: Kukkavalikoima kutsuu servlettiä, joka generoi kukkavalikoiman (Kukkavalikoima.java). Kirjautuminen johtaa sivulle, jonka kautta työntekijät voivat kirjautua järjestelmään (kirjautuminen.html) Yritystiedot johtaa yritysinfo-sivulle (yritysinfo.html) Tietokantasovellusten harjoitustyö syksy 2004 Sivu 36
Kirjautuminen Käsintehty html-sivu, tiedosto: kirjautuminen.html, kuva liitteenä k2. Sivuun liittyvät kuvatiedostot: back123.gif: taustakuva, logo_small.jpg: yrityksen pienempi logo Sivulla on lomake, jossa annetaan asiakastunnus ja salasana. Isoja ja pieniä kirjaimia ei tulkita samoiksi. Lomakkeen tiedot välitetään Kirjautuminen.java-servletille. Kukkavalikoima Generoitu html-sivu Kukkavalikoima. Sivulla näkyy listana kaikki tällä hetkellä tarjolla olevat kukkalajit ja niiden hinnat. Kukan nimi toimii linkkinä tilauslomakkeeseen. Kun käyttäjä painaa linkkiä, kutsutaan Tilaus.java-servlettiä. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 37 Servlettien kohdalta esitetään tarkoitus, parametrit, toiminnan yleispiirteet, tietokantakyselyiden tarkoitus ja riippuvuus parametreista, kutsuttavat servletit sekä mitä erityistä servlettiin liittyen tulisi huomioida. Selitysten tarkoituksena on auttaa ohjelmakoodin lukemista. Itse ohjelmakoodit sijoitetaan toteutusdokumentin liitteeksi. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 38
Servelttien koodissa on syytä käyttää havainnollisia muuttujanimiä. Servlettien koodeihin on syytä liittää kommentteja. Servlettiin liittyvät yleistiedot voi kirjoittaa myös servletin koodin alkuun yleiskommentiksi, jolloin ne vain kerätään servleteistä dokumenttiin. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 39 Kukkavalikoima Kukkavalikoima.java-servletti hakee kaikki tällä hetkellä valikoimasta löytyvät kukkalajit käyttäjän katseltavaksi. Servletti generoi Kukkavalikoima html-sivun, jossa käyttäjä voi selailla tarjolla olevaa kukkavalikoimaa. Kukkavalikoima.java-servlettiä voidaan kutsua miltä tahansa asiakkaan näkemältä sivulta (linkki sijaitsee päätason navigaatiossa). Parametrit: ei parametreja Tietokantasovellusten harjoitustyö syksy 2004 Sivu 40
Kirjautuminen Kirjautuminen.java-servletti tarkastaa työntekijän käyttöoikeuden. Jos kirjautuneella käyttäjällä on työntekijän käyttöoikeus, generoidaan sivu Tilaukset. Jos kirjautuneella käyttäjällä on johtajan käyttöoikeudet, generoidaan sivu Raporttivalikoima. Jos työntekijää ei pystytä tunnistamaan, generoidaan Kirjautuminen-sivu virheilmoituksen kanssa. Kirjautuminen.java-servlettiä kutsutaan staattiselta ja generoidulta Kirjautuminen-html-sivulta. Parametrit: asiakastunnus: merkkijono salasana: merkkijono Tietokantasovellusten harjoitustyö syksy 2004 Sivu 41 Asennustietoina kerrotaan, miten järjestelmän tiedostot sijoittuvat hakemistoihin. Kaikki tiedostot voivat olla samassa hakemistossa tai jakautua useaan eri hakemistoon. Ohjeen tarkoituksena on toisaalta kertoa, miten sovellus on nyt asennettu, ja toisaalta, miten sen saisi asennettua uuteen ympäristöön. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 42
Perusoletuksena on, että järjestelmän käyttäjä osaa käsitellä wwwsivuja selaimella. Tähän liittyviä ohjeita ei siten tarvitse antaa. WWW-sovelluksen tulisi olla helppokäyttöinen ja intuitiivinen. Sivujen itsessään pitäisi sisältää riittävästi sivun käyttöön tarvittavaa informaatiota. Jos sivut ovat tällaisia, riittää antaa ohjelman käynnistykseen tarvittava URL sekä mahdolliset käyttäjätunnukset ja salasanat. Jos sovelluksen käyttöön liittyy joitain yleisiä toimintajärjestykseen liittyviä asioita, ne voidaan kertoa tässä yhteydessä. Näiden tietojen tulisi löytyä myös tuotettavan järjestelmän sivuilta. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 43 Toteutusdokumentin liitteinä annetaan tehtäväkuvaus korjattu määrittely- ja suunnitteludokumentti tietokannan määrittelevät create table -lauseet, jos ne eivät ole mukana dokumentin tekstiosuudessa tai määrittelydokumentissa, servlettien ohjelmakoodit sekä tuntikirjanpito. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 44
Ensimmäinen tapaaminen kaikille ryhmän jäsenille yhteinen - sovitaan ajat ja mahdollisesti jo aiheetkin. Ohjausta viikottain n. 20 minuuttia per oppilas - sijoittuu ohjaajan ryhmälleen ilmoittamaan aikahaarukkaan (ellei toisin sovita). Kurssiin liittyy myös mahdollisesti 1-2 demotilaisuutta, joihin olisi tarkoitus valmistautua huolellisesti. Tietokantasovellusten harjoitustyö syksy 2004 Sivu 45 Tekniikkaluento 1. periodilla ma 27.9. klo 16-18 salissa B222 2. periodilla ma 8.11. klo 12-14 auditoriossa D122 Kurssin kotisivu: http://www.cs.helsinki.fi/u/ronkaine/tsoha/tsohas04.html Tietokantasovellusten harjoitustyö syksy 2004 Sivu 46