Päivä | Selitys | Tekijä |
---|---|---|
24.10.1999 | Ensimmäinen yritelmä | Mika, Timo, Teemu |
27.10.1999 | Lisätty toimintoja | Mika, Timo |
29.10.1999 | Lisätty kuvat | Mika, Timo |
01.11.1999 | Korjattu kuvia, lisätty hakutoiminnot | Timo |
03.11.1999 | Lisätty kappaleet 1,3,6 | Lauri, Mika, Teemu, Timo |
29.11.1999 | Siirretty kuvat omaan hakemistoon | Timo |
12.03.2000 | Muutettu dokumentin eri osia vastaamaan todellisuutta | Timo |
Ostokset tehdään tavallisella WWW-selaimella salatun yhteyden yli sillä tavalla, että ohjelmisto etsii käyttäjän komentojen mukaan tietokannasta tarvittavia tuotteita ja/tai tuotelistoja sekä pitää yllä jokaisen käyttäjän henkilökohtaista ostoskoria, johon käyttäjä voi siis pudotella haluamiaan tuotteita valitsemansa kappalemäärän. Käyttäjän halutessa maksaa, avataan yhteys halutun pankin maksupalveluun.
Luku 2 on yleiskuvaus, jossa kerrotaan järjestelmän ulkoiset liittymät, jotka ovat yhteydet tietokantoihin abstraktin rajapinnan kautta, yhteydet pankkien ja luottokunnan maksupalveluihin sekä WWW-pohjainen ostoskoriliittymä. Luvussa kuvataan myös järjestelmän käyttäjät ja käyttöympäristö sekä järjestelmälle asetetut rajoitteet.
Luku 3 kuvaa tietokantojen tietosisällön.
Luku 4 kuvaa järjestelmän keskeisien komponenttien toiminnallisuude n.
Luvussa 5 kuvataan tarkemmin järjestelmän ulkoisia liittymiä, erityisesti ostoskorin käyttöliittymä.
Luvussa 6 kuvataan järjestelmän muut ominaisuudet.
Kuva 1: Ohjelmiston arkkitehtuuri
Luottokortilla maksettaessa järjestelmä kysyy ostajalta ostovaiheessa luottokortin
tiedot, lähettää maksun luottokunnalle ja palaa joko hyväksytty tai hylätty-sivulle
maksun onnistumisesta riippuen.
2.1. Ulkoiset liittymät
Järjestelmän ulkoiset liittymät voidaan jakaa kolmeen osaan: liittymät järjestelmän välityksellä
myyvän kaupan olemassa oleviin tietokantoihin, liittymä kaupassa asioivalle
ostajalle ja liittymät pankkien elektronisiin
maksupalveluihin sekä luottokorttimaksun mahdollistavaan palvelimeen.
2.1.1. Tietokannat
Kaupan tietokantojen käyttöön järjestelmässä
on tietokantakomponentti, jonka tehtävänä on huolehtia
JDBC-yhteydestä tietokantaan ja joka kätkee tämän
toiminnallisuuden kokonaan sisäänsä. Komponentti tarjoaa
palvelut ylemmän tason
toiminnoille, joiden avulla tietokannan kenttiin voidaan viitata halutuilla
nimillä. Tällainen abstrakti nimi voi olla esimerkiksi tuoteolion
tuotekuvaus. Kun tuotekuvausta kysytään, komponentti hakee tiedon
JDBC-rajapinnan läpi tietokannan oikean taulun oikeasta sarakkeesta
niin kuin määrittelytiedostossa on konfiguroitu. Tietokantojen
abstrakti määrittely ja ristiviittaukset kenttänimien ja
todellisten tietokannan kenttien välillä suoritetaan
järjestelmän asennuksen yhteydessä.
2.1.2. Liittymä ostajalle
Ostaja käyttää järjestelmää www-selaimen välityksellä, siirtoprotokollana on
siis http (tai https kauppiaan niin halutessa).
2.1.3. Maksupalvelut
Yhteys pankkiin ja luottokuntaan toimii salattuna, SSL:ää käyttäen.
Järjestelmä tulostaa asiakkaan selaimeen pankin määritysten mukaisen lomakkeen,
jonka lähettämällä asiakas pääsee pankin sivulle maksua varten.
Maksamisen jälkeen pankin järjestelmä siirtää asiakkaan takaisin tietylle
järjestelmän sivulle. Itse järjestelmä ei siis suoraan asioi pankin palvelimen
kanssa.
2.2. Käyttäjät ja käyttöympäristö
Projektin tuottamalla järjestelmällä on kaksi käyttäjäryhmää:
Järjestelmä asennetaan yrityksen palvelimelle, ja asennuksen yhteydessä
konfiguroidaan yhteydet olemassa oleviin tietokantoihin. Erillistä ylläpitoliittymää
ei ole, vaan ohjelmisto konfiguroidaan properties-tiedostoja muokkaamalla.
Ostajan käyttöympäristö on www-selain. Käyttöliittymää on hahmoteltu kohdissa
5.1.1 ja 5.2.1.
2.3. Rajoitteet
Järjestelmän tulisi toimia mahdollisimman monella www-palvelimella, ja sen
tulisi osata käyttää kaikkia JDBC:tä (joko suoraan tai JDBC-ODBC Bridgen
kautta) tukevia sql-kantoja. Minimivaatimus on toiminta Lotus R5-palvelimella,
jota käytetään kehitykseen ja testaukseen. Lotusta käytetään myös
tietokantapalvelimena.
Jotta palvelinriippumattomuus toteutuisi, koko järjestelmä ohjelmoidaan
Javalla.
Järjestelmän pitää tuottaa ostajalle sivuja, jotka toimivat 4-sarjan
www-selaimissa.
3.Tiedot ja tietokanta
Sisällysluettelo
3.1 Tietokannat
Järjestelmä vaatii toimiakseen kolme taulua, jotka voidaan määritellä
sijaitsemaan joko samassa tietokannassa tai eri tietokannoissa. Tuotetaulussa
on tiedot myytävistä tuotteista, asiakastauluun kirjoitetaan
oston tekevän asiakkaan yhteystiedot ja tilaustauluun kirjataan kukin
tilaukseen liittyvä tilausrivi. Tauluista edellytetään,
että niissä on tietyt kentät halutun toiminnallisuuden saavuttamiseksi,
mutta tauluissa voi olla myös asiakaskohtaisia eroja.
3.1.1 Tuotetaulu
Tuotetaulussa voi olla esimerkiksi seuraavat sarakkeet:
Tuotetunnus | string |
Tuotteen nimi | string |
Tuotteen kuvaus | string |
Hinta | currency |
Tarjoustuote | boolean |
Tuotekategoria<n> | string |
Muita kenttiä |
Asiakastunnus | string |
Sukunimi | string |
Etunimi | string |
Katuosoite | string |
Postinumero | string |
Postitoimipaikka | string |
Maa | string |
Puhelinnumero | string |
Sähköpostiosoite | string |
Tilaustunnus | string |
Asiakastunnus | string |
Tuotetunnus | string |
Kappalemäärä | integer |
Tilauspäivämäärä | date |
Maksu vastaanotettu | boolean |
Nimi | Prioriteetti | Syötteet | Toiminta | Tulosteet | Yleiset Toiminnot-kehys |
---|---|---|---|---|
Ohje | 3 | Ei | Avaa käyttöohjesivun Tuotekehykseen | Ei |
Tuotteet | 1 | Ei | Kutsuu toimintamodulin listaa_tuotteet ja listaa_kategoriat-funktioita parametreina aktiivinen kategoria, sekä ostoskori-olion listaa_sisältö funktiota. | Em. funktioiden antamat HTML-sivut kirjoitetaan paikoilleen Ostoskehykseen ja Tuotekategoriat-kehykseen. |
Ostoskori | 2 | Ei | Kutsuu ostoskori-olion listaa_sisältö funktiota. | Em. funktion antama HTML sivu kirjoitetaan Ostoskehykseen. |
Pääsivulle | 3 | Ei | Palaa yrityksen pääsivulle. | Ei |
Tarjoukset | 3 | Ei | Avaa Tuotekehykseen listan tarjoustuotteista. | Ei |
Haku | 2 | Ei | Avaa hakudialogin Tuotekehykseen. | Ei | Hakudialogi |
Hakukentät | 2 | Hakuehdot | Käyttäjä täyttää hakukenttiin haluamansa hakuehdot | Ei |
Suorita Haku | 2 | Ei | Napista suoritetaan haku ruudussa olevien kenttien tietojen perusteella. | Ruudulle tulee lista hakuehdon täyttävistä tuotteista. |
Takaisin | 2 | Ei | Napista keskeytetään hakutoiminnot ja palataan takaisin. | Ei | Tuotekategoriat-kehys |
Laajenna Kategoria | 1 | Kategoria | Avaa kohdekategorian alikategoriat Tuotekategoriat-, sekä Tuotekehyksessä. Lisäksi supistaa edellisen aktiivisen kategorian. | Ei | Tuotekehys, Kehyksessä tuotelista |
Tuote-esittely | 2 | Tuote | Avaa valitun tuotteen tuote-esittelyn Tuotekehykseen. | Ei |
Kappalemäärä | 1 | Tuote, kappalemäärä | Kappalemäärä-ikkunaan halutun tuotteen riville syötetään määrä joka halutaan ostaa. | Ei |
Lisää tuote ostoskoriin | 1 | Tuote | Napista lisätään ennalta syötetty kappalemäärä valittua tuotetta ostoskoriin. Jos määrää ei ole asetettu, lisätään yksi erä. | Haluttu kappalemäärä tuotetta putoaa ostoskoriin. Kokonaislaskun summa päivittyy. | Tuotekehys, Kehyksessä tuote-esittely |
Takaisin Tuotelistaan | 1 | Ei | Lataa Tuotekehykseen tuotelistan aktiivisesta kategoriasta | Ei |
Kappalemäärä | 1 | Tuote, kappalemäärä | Kappalemäärä-ikkunaan halutun tuotteen riville syötetään määrä joka halutaan ostaa. | Ei |
Lisää tuote ostoskoriin | 1 | Tuote | Napista lisätään ennalta syötetty kappalemäärä valittua tuotetta ostoskoriin. Jos määrää ei ole asetettu, lisätään yksi erä. | Haluttu kappalemäärä tuotetta putoaa ostoskoriin. Kokonaislaskun summa päivittyy. | Tuotekehys, Kehyksessä Ohjeet |
Takaisin | 1 | Ei | Avaa edellisen näkymän Tuotekehykseen. | Ei | Ostoskorikehys |
Kappalemäärä | 1 | Tuote, kappalemäärä | Kappalemäärä-ikkunaan halutun tuotteen riville syötetään määrä joka halutaan ostaa. | Ei |
Poista tuote korista | 1 | Tuote | Poistaa valitun tuotteen ostoskorista | Ostoskorin sisältö päivittyy Ostoskorikehykseen. Kokonaislaskun summa päivittyy. |
Tyhjennä Ostoskori | 2 | Ei | Avaa dialogi-ikkunan, jolla varmistetaan että käyttäjä haluaa tyhjentää ostoskorinsa. | Kokonaislaskun summa päivittyy |
Tilaa tuotteet | 1 | Ei | Avaa maksumoduliin kuuluvan maksuikkunan, josta käsin voidaan ostaa ostoskoriin valitut tuotteet. | Ostoskehykseen avautuu maksuikkuna, Tuotekategoriat-, sekä Ostoskorikehykset tyhjennetään. |
Kuva 2: Maksumodulin toimintakaavio
Maksumodulin ikkunat avataan Ostoskehykseen, Tuotekategoriat-kehys on tyhjä.
Nimi | Prioriteetti | Syötteet | Toiminta | Tulosteet | Maksukuittilomake |
---|---|---|---|---|
Hyväksy tilaus | 1 | Ei | Asiakas tarkistaa syöttämänsä tiedot ja hyväksyy maksun. | Aloitetaan valittu maksutapahtuma. |
Takaisin | 1 | Ei | Valittua tilausta ei hyväksytä maksettavaksi. | Palataan asiakastietolomakkeeseen. |
Maksutavan Valinta | 1 | Maksutapa | Asiakas valitsee jonkun annetuista maksutavoista. Tämä napin painallus käynnistää automaattisesti maksutapahtuman, eli ohjelma suorittaa tarkistuksen annetuille asiakastiedoille, ja jos ne kelpaavat, yritetään suorittaa maksu valitulla tavalla. Jos ne olivat puutteelliset, palataan asiakastietolomakkeeseen ja annetaan ilmoitus tietojen puutteellisuudesta. | Onnistunut Maksu tai Epäonnistunut Maksu-ikkuna avautuu. | Onnistunut tai Epäonnistunut Maksu |
Pääsivulle | 2 | Ei | Linkistä avautuu firman kotisivu. | Ei |
Määrittelytiedostossa kuvataan seuraavat asiat:
Suunnittelussa on otettava huomioon myös mahdollinen uusien taulujen tarve, eli järjestelmän tulee olla laajennettavissa tältä osin.
Toiminto suorittaa tuoterivien haun tuotetietokannasta haluttujen hakuehtojen mukaisesti. Hakuehtoina voidaan antaa tuotetunnus, tuotekategoria ja tuotteen nimi. Hakuehtojen yhdistelmät ovat sallittuja. Tuloksena saadaan joukko tuoterivejä, joita voidaan selata. Tulosjoukko on lajiteltu ensisijaisesti tuotekategorian ja toissijaisesti tuotteen nimen mukaiseen järjestykseen.
Prioriteetilla 2 toteutetaan hakuehdot yleisemmällä tasolla. Hakuehdoksi voidaan tällöin antaa mikä tahansa yleistä tyyppiä oleva (merkkijono, luku, boolean-arvo, päiväys) tuotetietokannan kenttä, joka on tietokantamäärittelyssä määritelty. Näiden avulla hakua voidaan rajata tarkemmin ja sovittaa asiakkaan tuotetietokannan tarpeisiin. Tarpeellisia hakukenttiä voisivat olla esimerkiksi tuotteen valmistaja tai tarjoustieto.
FUNC3002 Tuoterivien selaus, prioriteetti 1
Toiminto selaa haettuja tuoterivejä. Haetuista tuotteista päästään sen tuoterivin tuotetietoihin käsiksi, jonka kohdalla ollaan selauksessa. Selauksessa on mahdollista seuraavan ja ensimmäisen tuoterivin kohdalle siirtyminen. Alemmalla prioriteetilla voidaan toteuttaa myös vapaampi siirtyminen.
FUNC3003 Tuotetietojen haku, prioriteetti 1
Toiminnolla haetaan sen tuotteen tietoja kenttä kerrallaan, jonka kohdalla selauksessa ollaan. Toiminnolle annetaan syötteenä halutun kentän nimi, ja paluuarvona saadaan kentän sisältö, mikäli kenttä löytyy ja se on tietokantakomponenttiin määritelty.
FUNC3004 Tuotekategorioiden haku, prioriteetti 1
Toiminto hakee tuotekategoriat tietokannasta, jotta tuotteita voitaisiin selata kategorioittain.
FUNC3005 Asiakastietojen lisäys, prioriteetti 1
Toiminto lisää uuden asiakkaan tiedot asiakastietokantaan. Syötteinä annetaan asiakkaan tietojen kyselylomakkeella olevat tiedot. Palautteena saadaan uuden asiakkaan asiakastunnus, jota on hyödynnettävä varsinaisen tilauksen tallennuksessa.
FUNC3006 Tilausrivin lisäys, prioriteetti 1
Toiminto lisää tilausrivin tilaustietokantaan. Syötteinä annetaan ostoskorin yhden "rivin" tiedot, jotka ovat asiakastunnus, tuotetunnus ja kappalemäärä. Ensimmäisellä kutsukerralla toiminto luo tilaukselle tilaustunnuksen, joka annetaan myös toistuvilla kutsukerroilla syötteenä, kun tilaukseen lisätään enemmän rivejä.
Kuva 3: Hakuikkuna
Kuva 4: Ohjeikkuna
Kuva 5: Kategoria avattu
Kuva 6: Normaali tuotelista
Tässä kehyksessä on lista tuotteista jotka kuuluvat Tuotekategoriat-kehyksessä valittuun (ala)kategoriaan. Tuotteista näytetään konfiguroinnin perusteella valittuna esimerkiksi nimi, kappalehinta, paino/kappalemäärä ja kokonaismäärä. Lisäksi näytetään kenttä, johon voidaan syöttää montako kappaletta halutaan sekä nappula, jolla ko. rivin tuote siirretään ostoskoriin. Jokaisen tuotteen nimi on samalla toimintonappula, joka avaa ko. tuotteen pidemmän esittelyn Tuotekehykseen.
Kuva 7: Tuote-esittely
Esittelyikkunassa on nappula josta pääsee takaisin edelliseen tuotelistaan. Lisäksi voidaan näyttää myös joitain muita ominaisuuksia kuten esimerkiksi minimiostosmäärä, väri, lisälaitteet jne. Nämä ominaisuudet riippuvat käytettävästä tietokannasta ja asiakasyrityksen vaatimuksista. Ikkunassa voidaan myös lisätä kyseessäolevaa tuotetta koriin.
Kuva 8: Maksuikkuna
Kun asiakas on valinnut haluamansa tuotteet ostoskoriin ja painaa "Tilaa"-nappulaa, avataan asiakastietojen kyselylomake. Asiakas täyttää lomakkeelle yhteystietonsa ja valitsee haluamansa maksupalvelun. Valinnan jälkeen asiakas siirtyy pankin sivulle, jossa hän maksaa laskun pankin omia järjestelmiä käyttäen. Kun laskunmaksu on suoritettu, asiakas palautetaan takaisin kaupan sivuille ja maksetusta laskusta tulee kuittaus. Epäonnistuneesta tai peruuntuneesta maksusta ilmoitetaan käyttäjälle. Onnistuneesta maksusta kiitetään asiakasta ja kerrotaan mahdollisesti muita tietoja.
Kentät:
Mikäli ohjelman ajovaiheessa tapahtuu virheitä, käytetään Javan omaa poikkeuksenkäsittelyä. Ostajalle ei saa näkyä puolikkaita sivuja tai mystisiä virheilmoituksia, vaan helposti ymmärrättevä virheviesti.
Koska ostoskori ainakin tässä vaiheessa perustuu Javan sessioon, käyttökatkos palvelimessa tyhjentää ostettujen tavaroiden listan. Muuta haittaa lyhyestä katkoksesta ei ole, servletit osaavat alustaa itsensä uudestaan käyttökuntoon.
Tietokantojen virheet hoidetaan samalla tavalla, eli javan poikkeuskäsittelyllä.
Järjestelmää suunniteltaessa on yksi lähtökohdista ollut komponentin toimivuus mahdollisimman erilaisien kantojen päällä. Tämän takia suorituskyky on yksi tärkeimmistä kriteereistä turvallisuuden ohella. Järjestelmän tulee toimia yhtähyvon pienen kaupan kuin suuren kansainvälisen ketjun uuden tuotteen lanseerauskamppanjassa, jossa asiakkaita on useita tuhansia päivässä.
Käytettävyys ja käyttöliittymä luodaan template:lla, joilla lopullinen ulkonäkö sekä toimintojen sijainti määritetään.
Ylläpitotyötä ohjelmistossa ei alkukonfiguroinnin jälkeen ole. Tietysti syntyneet tilaukset tulee käsitellä, mutta se ei vaikuta ohjelmiston toimintaan.