Harri Laine - 10.9.2002Harjoitustyössä määritellään, suunnitellaan ja toteutetaan pieni www-alustalle toteutettava tietokantajärjestelmä. Työn tuloksena syntyy kaksi dokumenttia sekä joukko ohjelmatiedostoja. Seuraavassa on hahmoteltu dokumenttien sisältö. Ohjeessa ei ole mukana sellaisia itsestäänselvyyksiä kuin kansilehti ja sisällysluettelo.
Sidosryhmäkaavio näyttää järjestelmän sidosryhmät ja niiden yhteydet järjestelmään. Tällä kursilla kehitettävissä järjestelmissä sidosryhminä ovat enimmäkseen järjestelmän käyttäjäryhmät. Käyttäjäryhmien ja järjestelmän välisinä yhteyksinä kuvataan tällöin järjetelmän käyttötapaukset karkealla tasolla. Käyttötapaukset ovat järjestelmän käyttäjilleen tarjoamia palveluita. Käyttäjäryhmät voidaan esittää vapaamuotoisina symboleina. Käyttäjäryhmien ja järjestelmän väliset viivat esittävät käyttötapauksia. Viivojen päähän voidaan laittaa nuolenkärki osoittamaan palvelun tarjoajaan (eli yleensä järjestelmään - vain tapauksessa, jossa sidosryhmänä on toinen järjestelmä, jonka palveluja käytetään hyväksi, osoittaa nuoli tuohon toiseen järjestelmään).
Sekä
käyttötapaukset että käyttäjäryhmät kuvataan erikseen
tekstinä. Alla esimerkki:
Kuva:1: Esimerkki kaaviosta (kaavio laadittu Power Point:lla)
Määritellään sidosryhmäkaaviossa esiintyvät käyttäjät
Esimerkki
Jokamies
Käyttötapauksella tarkoitetaan järjestelmän avulla hoidettavaa tavoitteellista tehtäväkokonaisuutta, esimerkiksi tilauksen kirjaus, tilauksen peruutus, asiakkaan kirjaus, asiakkaan poistaminen, laskun tulostus, kuukausiyhteenvedon laatiminen ovat tehtäväkokonaisuuksia, joita on luonnollista mallintaa käyttötapauksina. Kustakin käyttötapauksesta kuvataan sen sisältö: mitä käyttötapauksessa tehdään. Raporttien kohdalta kerrotaan, mitä tietoja raporttiin sisältyy. Tässä vaihessa ei vielä ratkaista sitä, miten käyttötapaus viedään teknisesti läpi, millainen ulkoasu näytöllä on ja mitä näppäimiä painetaan. Jotain yleisiä periaatteita näistäkin voi toki kertoa. Tarkoituksena on, että suunnittelu etenee karkeammalta tasolta kohti yhä enemmän ykstyiskohtia sisältäviä kuvauksia. Käytötapausten läpivienti käyttöliittymän avulla kuvataan käyttöliittymän hahmottelun yhteydessä myöhemmin.
Käyttötapausten avulla määritellään järjestelmän toiminnallisuus eli, mitä järjestelmällä tehdään. Voit luonnostella käyttötapauksia esimerkkitapausten avulla. Esimerkkitapauksessa toiminnan kohde on kiinnitetty, esimerkiksi 'ilmoittautuminen Informaatiojärjestelmät kurssin harjoitusryhmään 3' on esimerkkitapaus käyttötapauksesta 'luentokurssille ilmoittautuminen'. Voit esittää esimerkkitapauksia myös dokumentissa havainollistaaksesi käyttötapauksia. Käyttötapaukset voi esittää tärkeysjärjestyksessä, aakkosjärjestyksessä tai käyttäjittäin ryhmiteltyinä. Seuraavassa esimerkissä on kuvattu kenelle tahansa tarkoitetut käyttötapaukset asunnonvuokrausjärjestelmässä.
Esimerkki:
Jokamiehen käyttötapaukset
Yritysinfon lukeminen
Esimerkki: Millaisia asuntoja on tarjolla Kruunuhaassa?
Järjestelmän tietosisältö kuvataan luokkakaavion alulla. Kaavio voidaan laatia jollakin piirrosohjelmalla tai erityisellä tällaisten kaavioiden laadintaan tarkoitetulla työkalulla. Laitoksella on käytössä erityistyökaluna Windows ympäristössä toimiva Plastic Lite ja Rational Rose Student edition sekä Nokian tutkimuskeskuksen Mermaid. Näillä saa UML-tekniikan mukaisia kaavioita (Plasticilla vain luokkakaavioita). Linux KDE ympäristöstä löytyy luokkakaaavioiden tekoon kuml.
Esimerkki luokkakaaviosta (tehty Plastic Lite:lla)
Kaavion lisäksi täytyy kuhunkin luokkaan liittää selitys, jossa määritellään kyseinen kohde. Attribuutitkin täytyy määritellä ellei merkitys ole nimen perusteella itsestäänselvä. Jos attribuutilla on koodiarvoja tai rajattu arvojoukko, on arvojen merkitys myös selitettävä. Myös yhteydet täytyy määritellä. Alla on esimerkkinä yhden luokan määrittely.
Esimerkki luokan kuvauksesta:
Luokka: varustelukuvaus
Attribuutti Arvojoukko Kuvailu huoneisto viite huoneistoon tunnistava yhteys laatimis_aika paivays sisäinen tunniste laatija viite virkailijaan jääkaappi merkki K/E (kyllä/ei) pakastin merkki K/E (kyllä/ei) astianpesukone merkki K/E (kyllä/ei) liesituuletin merkki K/E (kyllä/ei) lasitettu_parveke merkki K/E (kyllä/ei) kylpyamme merkki K/E (kyllä/ei) parketti merkki K/E (kyllä/ei) sauna merkki K/E (kyllä/ei) viinikaappi merkki K/E (kyllä/ei) muuta pitkä teksti Jokaiseen huoneistoon voi liittyä monta varustelukuvausta, joista vain viimeisin on voimassa. Varustelukuvaus laaditaan huoneiston arvioinnin yhteydessä. Varustelukuvaus identifioidaan huoneiston ja laatimisajan perusteella. Ensimmäinen varustelukuvaus perustuu huoneiston omistajan ilmoitukseen. Varustelukuvaus kuvaa huoneiston kunnon ja varustelun. Yleisimmille varusteille on varattu oma attribuutti, jonka arvona on 'k' jos varuste on tarjolla, muulloin arvona on 'e'. Varsinainen kuntokuvaus on pitkässä vapaamuotoisessa tekstikentässä muuta. Attribuutti laadittu ilmaisee kuvauksen laatimisajan.
Varustelukuvaus on yhteydessä
- huoneistoon, jota se kuvaa,
- virkailijaan joka on sen laatinut
(HUOM: Yllä oleva ratkaisu ei ole varustelun suhteen kovin hyvä. Uusien varusteiden mukaanottaminen edellyttää kannan rakenteiden ja ohjelmien muuttamista)
Jos haluat varmistua siitä, että oliomallisi ja käyttötapauksesi sopivat yhteen ja mallit ovat kattavia voit laatia riippuvuusmatriisin kuvaamaan olioiden käsittelyä käyttötapauksissa. Riippuvuusmatriisin sarakkeina ovat olioluokat ja yhteydet. Riveinä ovat käyttötapaukset. Kuhunkin sarakkeeseen merkitään, mitä käyttötapauksessa tehdään ko. luokan olioille (C=create, R=read, D=delete, U=update). Jokaisen käyttötapauksen täytyy käsitellä jotain luokkia. Luokan olioille täytyy mahdollistaa riittävät käsittelyoperaatiot käyttötapausten kautta.
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ä. Erityisen tärkeää on luoda kokonaiskuva käyttöliittymästä.
Luonnoksia käyttöliittymästä voi tehdä jollakin piirrosohjelmalla. Tekstinkäsittelyjärjestelmät piirrostoiminnot riittävät yleensä hahmotelman laatimiseen. Joistakin näytöistä ja raporteista riittää sanallinen hahmotelma. Taustakuvia ja vastaavia hienouksia ei tässä vaiheessa ole tarpeen esitellä.
- 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
Näyttöjen välisiä yhteyksiä on luontevaa esittää kaavioina. Seuraavassa kuvassa on esimerkki tällaisesta kaaviosta.
.
Käyttöliittymän sivujen väliset yhteydet (tehty Plastic Lite:lla).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 käyttötapauksen yhteydessä tarvitaan monia käyttöliittymäkomponetteja, voi riippuvuuksia kuvata matriiseina.
Relaatiotietokantakaavio esitetään SQL:n create table lauseina. Kaavioon täytyy sisältyä taulujen välisten viiteyhteyksien ja avainten määritykset. Kaaviota voi havainnollistaa myös esittämällä taulujen väliset viiteriippuvuudet kuvana, mutta tämä ei ole pienen tietokannan osalta välttämätöntä. Jos relaatiokaaviossa on attribuutteja, jotka eivät esiinny käsitemallissa tai jonkin käsitemallin attribuutti on karsittu tai sen muotoa on muutetettu on tästä erikseen mainittava. Yleissääntönä on, että relaatiotietokantakaavion tulee olla yhteensopiva käsitemallin kanssa.
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 liitteenä.
Voit liittää tähän yhteyteen myös kuvan, josta käy esiin taulujen rakenne ja taulujen väliset viiteavaimet. Alla esimerkki kuvasta. Kuvassa nuolet lähtevät viiteavain sarakkeen kohdalta, pk= priumary key, fk= foreign key. Tämkin kuva on tehty Plastic Lite:llä. Muita mainittuja työkaluja voi samoin käyttää monipuolisesti eri tarkoituksiin.
Toteutusdokumentissa kuvataan aikaansaatu ohjelmisto.
JOHDANTO
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.
OHJELMISTON YLEISRAKENNE
Ohjelmiston yleisrakenteessa kuvataan, mistä komponenteista ohjelmisto koostuu. WWW-alustaisissa sovelluksissa komponentteja ovat:
Kokonaisuuden kuvaamiseksi esitetään kaavio, josta näkyy, miten komponentit liittyvät toisiinsa. Kaaviossa esitetään
- HTML-sivut (käsintehdyt tai proseduurien generoimat),
- kuvat yms. erillistiedostot ja
- ohjelmat, joita käytetään sivujen tuottamiseen tai lomakkeiden käsittelyyn. Servlet-toteutuksessa ohjelmat jakautuvat servletteihin ja apuluokkiin.
Jos ohjelmiston käyttöliittymä hyödyntää kehyksiä (frame) on kuvattava millaisia riippuvuuksia kehysten sisällöillä on.
- liikkuminen sivujen välillä ja
- sivujen generointi ohjelmissa.
Yleisrakenteen kuvaamiseksi voidaan käyttää esimerkiksi kaaviotekniikkaa, jossa on symbolit manuaalisia html-sivuja, generoituja sivuja ja proseduureja varten (kuva 3).
Kuva 3: rakennekaavion symbolit.
Symboleja yhdistetään nuolilla, jotka kuvaavat siirtymiä sivujen välillä tai sivun tuottamista proseduurissa. Siirtymää kuvaavaan nuoleen on syytä liittää tieto siirtymän aiheuttajasta, linkistä tai lomakkeen lähetysnapista. Kuvassa 4 on esimerkki rakennekaaviosta.
Kuva 4: Esimerkki rakennekaaviosta (laadittu MSWord:llä)
Kustakin komponentista laaditaan erillinen kuvaus, jossa esitetään komponentin ymmärtämisen kannalta oleelliset asiat. Kuvaus on suunnattu henkilölle, joka mahdollisesti joskus joutuisi ylläpitämään ohjelmistoa.
JÄRJESTELMÄN KOMPONENTIT
Kaikkien komponenttien kohdalta esitetään:
Komponentit voidaan esitellä esim. ryhmiteltyinä html-sivuihin, servletteihin ja apuluokkiin. Lisäksi voi omana osionaan luetella sovelluksessa käytettävät kuva-, ääni- yms. tiedostot.
- komponentin nimi
- komponentin tarkoitus
- komponentin tyyppi
HTML-sivujen osalta kuvataan
- lyhyt luonnehdinta sivun sisällöstä
- mitä tiedostoja sivuun sisältyy
- mitä linkkejä tai lomakkeita sivulle sisältyy ja
- mitä ohjelmia sivulta käynnistetään ja miten (kinkki vai lomakkeenkäsittelijä)
- jos sivuun liittyy Javascriptillä tehtäviä tarkistuksia nämä mainitaan.
HTML-lomakkeisiin liittyvien kenttien osalta kerrotaan, mitä kenttiä lomakkeeseen sisältyy. Jos arvoihin liittyy jotain erityisvaatimuksia, nämä kerrotaan. Piilokentät ja niiden käyttötarkoitus on syytä esittää. Jos sivu on konkreettinen HTML-tiedosto, kerrotaan, missä tämä tiedosto sijaitsee. Jos sivu on generoitu kerrotaan, mikä ohjelma generoi sen.
Esimerkkejä sivukuvauksista
aloitussivu Staattinen html-sivu, tiedosto: index.html, kuva sivusta liittenä k1. Sivuun liittyvät tiedostot: back123.gif : taustakuva, button223.gif: luettelomerkki logo_big.jpg: yrityksen isompilogo Sivulla on lyhyt yleisesite järjestelmästä sekä linkit, joiden avulla pääsee käsiksi järjestelmän tarjoamiin palveluihin: asiakastunnus johtaa sisäänkirjoittautumiseen käytettävälle tunnussivulle (tunnus.html) rekisteröidyn johtaa uuden asiakkaan tietoja kyselevälle rekisteröintisivulle (rekisteroi.html) yritystiedot johtaa yritysinfo-sivulle (katonalle.html) yleiskuva käynnistää servletin Yleiskuva. Servletille ei välitetä parametreja. tunnussivu Staattinen html-sivu, tiedosto: tunnus.html, kuva sivusta 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 käsittelee sevletti Kayttooikeus. yleiskuva tarjonnasta Generoitu html-sivu, jonka tuottaa srvletti Yleiskuva, kuva sivusta suunnitteludokumentissa (kuva 9). Sivuun liittyvät kuvatiedostot: back123.gif : taustakuva, logo_small.jpg: yrityksen pienempi logo Sivu sisältää paikkakunnittain jaoteltuna taulukoita kyseisellä paikkakunnalla tarjolla olevien eri kokoisisten huoneistojen lukumääristä.Ohjelmien (servlettien ja apuluokkien) kohdalta esitetään
- tarkoitus
- parametrit
- toiminnan yleispiirteet
- ohjelman suorittamat tietokantaoperaatiot
- mitä erityistä ohjelmaan liittyen tulisi huomioida
- käytettävät apuluokat ja -palvelut
Selitysten tarkoituksena on auttaa ohjelmakoodin lukemista. Ohjelmakoodiin on syytä liittää kommentteja ja käyttää havainnollisia muuttujanimiä. Ohjelmaan liittyvät yleistiedot voi kirjoittaa myös ohjelmakoodin alkuun yleiskommentiksi, jolloin ne vain kerätään ohjelmakoodista dokumenttiin.
Ohjelmakoodit sijoitetaan dokumentin liitteiksi.
Esimerkkejä ohjelmakuvauksista
Yleiskuva servletti Servletti generoi sivun 'yleiskuva tarjonnasta'. Käynnistetään 'aloitussivun' linkistä. Käynnistyksen yhteydessä ei välitetä parametreja. Kyselyllä huoneet haetaan taulusta asunto kaupunki-, alue- ja huoneistotyyppikohtaisesti tarjolla olevien huoneistojen lukumäärät. Vastausrivit käydään läpi ja kaupungin tai alueen vaihtuessa aloitetaan taulukko, johon sijoitetaan huoneistotyyppi ja kyseisen tyyppisten huoneistojen lukumäärä. Paikkakunnan vaihtumisen testaamiseen käytetään muuttujaa edellinen, jonka arvona on viimeeksi käsitellyn paikkakunnan nimi (kaupungin ja alueen yhdiste)Kayttooikeus servletti Servletti tarkastaa asiakkaan käyttöoikeuden. Jos asiakkaalla on käyttöoikeus generoidaan sivu 'asiakaspalvelut'. Jos asiakkaalla ei ole käyttöoikeutta generoidaan sivu 'virheellinen tunnus'. Servletti käynnistetään tunnussivulta käsittelemään kirjoittautuminen- lomaketta. Servletin parametrit asiakastunnus: merkkijono salasana: merkkijono Kyselyn 'asiakaskysely' avulla haetaan taulusta asiakas tiedot asiakkaasta, jolla on parametrina annettu asiakastunnus ja salasana. Jos asiakastunnus oli tyhjä tai asiakastietoja ei löytynyt, generoidaan sivu 'virheellinen tunnus'. Jos asiakas löytyi, perustetaan uusi istunto. Istuntokontrolli hoidetaan HttpSession-olioiden avulla. Asiakastunnus taltioidaan HttpSession olioon.ASENNUSTIEDOT
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. Apuluokkien muodostamat pakkaukset pitää esitellä. Servlettien sijoittelu riippuu servlettiympäristöstä, joten sitä ei tarvitse määritellä.
KÄYNNISTYS- / KÄYTTÖOHJE
Perusoletuksena on, että järjestelmän käyttäjä osaa käsitellä WWW-sivuja selaimella. Tähän liittyviä ohjeita ei siten tarvitse antaa. WWW-sovelluksen tulisi olla helppokäyttöinen ja intuitiivinen. Sivujen pitäisi itsessään sisältää riittävästi sivun käyttöön tarvittavaa informaatiota. Jos sivut ovat tällaisia riittää antaa ohjelman käynnistykseen tarvittava URL. Jos 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.
LIITTEET
Dokumentin liitteina annetaan
- tehtäväkuvaus
- suunnitteludokumentti (korjattuna, jos alkuperäisessä oli puutteita)
- tietokannan määrittelevät create table lauseet, jos ne eivät ole mukana dokumentin tekstiosuudessa tai suunnitteludokumentissa
- ohjelmakoodit
Päivitetty 10.9.2002. Harri Laine