Yhteenveto |
Aluksi kappaleessa esitellään ohjelman ja ympäristön välinen rajapinta. Tämän jlkeen kerrotaan lyhyesti käyttöliittymästä ja sen toteutuksesta. Lopuksi esitellään käytetyt toteutustyökalut. Käytimme kaupallista CASE-työkalua nimeltään SELECT, johon saimme lisenssin asikkaalta.
Tässä kappaleessa on määritelty ohjelmistossa ja dokumentoinnissa käytettävät käsitteet. Lisäksi kappaleessa esitellään oliokaavio, joka näyttää käsitteiden väliset relaatiot.
Kappaleessa on esitelty navigointi käyttäjän näkökulmasta. Kaaviossa on näytetty käyttäjän mahdolliset valinnat ja mihin niistä päästään. Tämän jälkeen kerrotaan ohjelman rakenteesta ja ohjelman osien välisistä rajapinnoista.
Viimeisessä kappaleessa kuvataan ohjelman muita ominaisuuksia. Ohjelman suorituskykyä pyritään parantamaan järkevällä suunnittella. Ohjelma rakennetaan siten, että sen eri osat voivat sijaita eri koneissa, jolloin voidaan jakaa kuormaa eri osien välillä.
Hyvä käytettävyys saavutetaan yhdenmukaisella ja käyttäjäystävällisellä liittymällä. Tämän saamme aikaan huolellisella suunnittelulla sekä mahdollisti käytettävyystestauksella. Myös vasteajat on oltava nopeita ja tämä taas asettaa vaatimuksia itse ohjelman toiminnalle.
Järjestelmä pyritään rakentamaan siten, ettei sen vikaantumistiheys ole suuri ja virhetilanteet pystytään hoitamaan hallitusti. Kuormitusta seurataan ja siitä annetaan tietoja ylläpitäjälle.
Turvallisuus on otettava huomioon jo järjestelmää suunniteltaessa. Pyrimme siihen, ettei tavallisella käyttäjällä ole mahdollisuutta sabotoida järjestelmää. Emme käytä SQL-rajapintaa suoraan HTML-sivuissa vaan sivujen tekemisen hoitaa oma ohjelmansa. Lisäksi käyttäjän oikeudet tarkistetaan CGI- skripteissä.
Vaikka järjestelmä toimii itsekseen, tietyt asiat vaativat aina ylläpitäjää. Pyrimme helpottamaan ylläpitäjän hommia tekemällä usein tarvittavat asiat helposti tehtäviksi ja teemme mahdollisesti niille WWW-sivut, joista ylläpito onnistuu helposti.
Ohjelmisto toimii UNIX-ympäristössä eikä sitä käännetä muihin ympäristöihin. Pyrimme silti välttämään laitteistoriippuvaisia ratkaisuja, jotta siirto toiseen ympäristöön onnistuisi helpommin. Käytämme standardi ohjelmointikieliä ja koneiden väliseen tiedonsiirotoon käytämme TCP/IP:tä.
Uusien pelien lisääminen vaatii ohjelmointia. Tarjoamme siihen kuitenkin rajapinnan, jonka välityksellä ohjelmiston kanssa voi keskustella. Pääohjelma vaatii tiettyjen toiminteiden implementoinnin myös uudelta ohjelmalta.
1. Johdanto |
Tämä ohjelmisto on tarkoitettu tukemaan peliyhteisöjen muodostumista internetissä. Ohjelmistotyön toimeksiantajana on Tele ja se tehdään ohjelmatyö-kurssin puitteissa lukuvuoden 97 - 98 aikana.
Ohjelmistoa käyttävät internet-peleistä kiinnostuneet surffarit.
Ohjelmiston tavoitteena on tarjota ympäristö, jossa voi tutustua eri peleihin ja pelata niitä. Siinä voi seurata omia pelituloksia suhteessa muiden pelaajien tuloksiin rankinglistojen avulla. Omaa pelituloshistoriaa voi myös seurata. Pelaajat voivat muodostaa joukkueita joukkueenjohtajan avulla. Joukkueenjohtaja voi haastaa muita joukkueita pelaamaan. Myös yksittäiset pelaajat voivat haastaa toisiaan. Ohjelmiston avulla voi ylläpitää rankinglistaa myös valituista fyysisistä peleistä.
Ohjelmistosta on tarkoitus tehdä skaalautuva ja helposti ylläpidettävä, jotta ohjelmisto olisi luovutusvaiheen jälkeen toimeksiantajan käytettävissä ja kehitettävissä.
Tässä dokumentissa on aluksi yleiskuvaus ohjelmistosta kappaleessa 1. Kappaleessa 2 kuvataan ohjelman tarvitsemat tiedot ja tietokanta. Kappaleessa 3 on määritelty ohjelmiston toiminnat. Kappaleissa 5 ja 6 käsitellään ohjelmiston ulkoisia liittymiä ja muita ominaisuuksia.
2. Yleiskuvaus |
SELECT'llä on myös mahdollista generoida c++ lähdekieltä ja SQL'n taulukoiden määrittelylauseita.
3. Tiedot ja tietokanta |
4. Toiminnot |
Seuraavassa on lueteltu järjestelmän käyttäjän eri roolit ja toiminnot joita voi suorittaa. Huomaa että kaikki aikaisemmat toiminteeet säilyvät käyttäjäroolin muuttuessa.
Toiminnot kuvataan Jacobsonin USE CASEt.
5. Ulkoiset liittymät |
Käyttöliittymän sivut peruskäyttäjälle:
Käyttöliittymän sivut joukkueen johtajalle:
Käyttöliittymän sivut ryhmän ylläpitäjälle:
Ohjelmiston osat ja niihiin liittyvät rajapinnat
WWW-sivut WWW-sivut generoidaan pääosin "lennossa", jolloin se sisältää eri informaatiota käyttäjästä riippuen. Käyttäjälle näytetään vain ne vaihtoehdot, joihin hänellä on oikeus. WWW-sivut toimvat ohjelmiston käyttöliittymänä.
CGI-skriptit CGI-skriptit ovat ohjelmiston aivot. Ne tekevät suurimman osan työstä WWW-sivuilta saamiensa syötteiden mukaisesti. Jokaisellä skriptillä on oma pieni tehtävänsä ja niitä yhdistelemällä päästään haluttuun lopputulokseen. Skriptien pienellä koolla haluamme nopeuttaa niiden latausta ja näin osaltaan parantaa tuotteen käytettävyyttä.
Automaattinen tulostenkeruu API
Tämän rajapinnan kautta voivat pelit lähettää
automaattisesti tuloksia pelaajien välisistä otteluista. Highscore
serverissä pyörii ohjelma (listener), joka kuuntelee tiettyä porttia.
Lähettävässä päässä sender kommunikoi peliohjelman kanssa ja saa peliltä
tuloksen. Tulos lähetetään highscore-serverille, jossa se ohjataan oikealle
CGI-skriptille, joka osaa lukea kyseistä viestiä. Tämä skripti tekee myös
talletuksen tietokantaan. Protokollaviesti vaihtelee pelistä riippuen ja siksi
sen tuloskenttän muoto saattaa vaihella. Ohessa on protokollaviestin rakenne:
Rivi 1:highscore (kertoo viestin olevan meille kuuluva)
Rivi 2:pelin id (pelin id numeroilla ilmaistuna)
Rivi 3:start (ilmoittaa tuloskentän alkamisen)
Rivi 4:tuloksia...
...
Rivi n:end (kertoo tuloskentän loppumisesta)
Em. viestistä tutkitaan ensin mihin peliin se liittyy. Tämän jälkeen valitaan sitä vastaava CGI-skripti. Pelin id ja itse tulososa välitetään valitulle skriptille. Tämä skripti tietää, miten tulososaa käsitellään.
6. Muut ominaisuudet |
Suorituskykyasioita pyrimme ottamaan huomioon järjestelmää toteutettaessa siten ettei laitteiston tehoa ja resursseeja turhaa hukata. Pyrimme välttämään työlaitä tietokantahakuja, turhia prossien käynnistyksiä ja turhaa prosessien välistä kommunikointia.
Järjestelmä suunnitellaan siten, että varsinainen datan prosessointi ja tietokanta voidaan tarvittaessa sijoittaa eri koneelle ja käyttöliittymän hallinta, syöttö ja tulostustoiminnot toiselle koneelle.
Tarvittessa voidaan eri servereille sijoittaa eri peleja jolloin kuormitusta saadaan tasattua tai vaihtoehtoisesti käyttää rinnakkaisia järjestelmiä joille eri käyttäjät jaetaan.
Käytettävyyteen kuuluu hyvä käyttöliittymä, joka on yksinkertainen, yhtenäinen ja johdonmukainen. Käyttöliittymäsuunnittelussa luotamme omaan ammattitaitoome ja jos aikataulu sallii on pienimuotoinen käyttöliittymätesti koehenkilöillä myös mahdollinen. Käytettävyyteen littyen pyrimme siihen että järjestelmän vasteajat olisivat nopeita kohtuullisella käyttäjämäärällä.
Käytettävyyden parantamiseksi järjestelmässä käytetään yhtenäistä, ymmärettävää ja määriteltyä käsitteistöä.
Järjestelmä suunnitellaan siten että laitteiston boottauksen jälkeen järjestelmä nousee käyttökuntoon.
Järjestelmä suunnitellaan siten ettei joku voi esim. omia formeja käyttämällä sabotoida järestelmää, eli SQL:ää ei käytetä suoraan HTML-sivuilla ja CGI-scripteissä tehdään tarvittavat tarkistukset käyttäjän oikeuksista.
Järjestemän tuotanto (ja kehitys) ympäritstössä noudatetaan yleisiä UNIX:n turvallisuusohjeita eli mahdolliset eri porsaanreijät tukitaan ja tarpeettomat palvelut ajetaan alas.
Ylläpitäjän jolla on kaikki oikeudet järestelmään on käytettävä salattua yhteyttä esim. SSH, hoitaessaan ylläpitotehtäviä, ettei salasana ja käyttäjätunnus pääse muiden haltuun.
Järjestelmä tarvitsee ylläpitäjän vaikka suurin osa järjestelmän käyttöön liittyvistä tehtävistä onkin muiden käyttäjien vastuulla. Järjestelmän ylläpitäjän on tunnettava SQL, solidin tietokanta, RedHat Linux (ja UNIX yleensä) ylläpito sekä ainakin perusteet HTML-kielestä.
Lisäksi järjestelmä tukee superhessu-oikeusia, joilla ylläpitäjä pääsee tekemään samoja muutoksia ilman rajoituksia kuin muutkin käyttäjät, hyödyntäen järjestelmän kaikille näkyvää käyttöliittymää.
Ylläpidettävyyteen kuuluu myös ylläpidettävän koodin kirjoittaminen. Ohjelmoinnissa käyteään yhtenäistä tyyliä, kuvaavia muuttujannimiä ja n.100 riviä pitkät ohjelmat jaetaan pienempiin osiin.
Järjestelmää ei portata eri ympäristöihin. Kehitysympäristönä toimii RedHat Linux ja otamme huomioon GNU Configure -ohjelman vaatimukset järjestemää tehdessä, jolloin sitä käyttäen järjestelmä voidaan tarvittaessa siirtää eri alustoille.
Ohjelmoinnissa käytetää standardoituja kieliä (Ansi C++:ssaa, Perliä ja Javaa) ja tekniikoita, sekä pyritään välttämään ympäristöriippuvia ratkaisuja ohjelmoinnissa. Jos järjestelmä hajautetaan useammalle koneelle, käytetään koneiden välisessä liikennöinnissä TCP/IP:tä.
Uusien pelien ja säännöstöjen lisääminen vaatii ohjelmointia. Järjestelmä tarjoaa rajapinnat niiden liittämiseen, eikä puutu niiden sisäiseen rakenteeseen.