Tik-76.115 Toiminnallinen määrittely

Highscore

http://www.hut.fi/~jsalomaa/highscore/documents/to.html
Viimeksi päivitetty  16.2.1998.

Sisällysluettelo

Yhteenveto
1. Johdanto
2. Yleiskuvaus
2.1 Liittymäkaavio
2.2 Käyttöliittymä
2.3 Toteutustyökalut
3. Tiedot ja tietokanta
3.1 Käsitesanasto
3.2 Oliokaavio
4. Toiminnot
4.1 USE CASEt
5. Ulkoiset liittymät
5.1 Navigointi
5.2 Rajapinnat
6. Muut ominaisuudet
6.1 Suorituskyky
6.2 Käytettävyys
6.3 Toipuminen
6.4 Turvallisuus
6.5 Ylläpidettävyys
6.6 Siirrettävyys
6.7 Laajennettavuus


 

Yhteenveto

Yleiskuvaus

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.

Tiedot ja tietokanta

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.

Toiminnot

Kappaleessa on kuvattu järjestelmän toiminnot käyttäen Jacobsonin USE CASEja. Suoraan ulkoisesti tai välillisesti heratetyistä toiminnosta on määritelty

Ulkoiset liittymät

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

2.1 Liittymäkaavio

liittymakaavio

2.2 Käyttöliittymä

Käyttöliittymä tulee olemaan kokonaan WWW-pohjainen. Käyttöliittymän rakentamiseen käytetään pääosin HTML 3.2 -määrityksen mukaista sivunkuvauskieltä ja sen käyttöliittymäkomponentteja. Tarvittaessa käytetään myös JavaScript ja Java kieliä. Käyttöliittymästä pyritään tekemään mahdollisimman helppokäyttöinen ja intuitiivinen. Palveluun rekisteröinti mahdollistaa sen että jokaiselle käyttäjälle voidaan tarjota jossainmäärin räätälöity käyttöliittymä eli hänelle voidaan tarjota suoraan vain hänelle kohditettua tietoa esim. tulleista haasteista. Osa käyttöliittymästä on vahvasti pelikohtaista (esim. tulosten syöttö ja rankinglistan tulostus) joten nämä osat joudutaan ohjelmoimaan pelikohtaisesti, samalla käyttöliittymän ulkoasu voidaan räätälöidä kunkin pelin henkeen sopivaksi.

2.3 Toteutustyökalut

Määrittelyn ja suunnittelun CASE-työkalu on SELECT. Ohjelmisto on käytössä asiakkaalla ja se tukee UML-menetelmän keskeisten kaavioiden piirtämistä.

SELECT'llä on myös mahdollista generoida c++ lähdekieltä ja SQL'n taulukoiden määrittelylauseita.

 

3. Tiedot ja tietokanta

3.1 Käsitesanasto

Surffaaja
Surffaaja on Internetin käyttäjä
Käyttäjä
Käyttäjä on järjestelmään rekisteröitynyt surffari
Peli
Järjestelmässä on erilaisia pelejä, joista johdetaan peliryhmiä. Esim. tennis.
Peliryhmä
Tietyille pelaajille tai joukkueille tarkoitettu peli. Peliryhmä voi olla suljettu tai avoin kaikille. Peliryhmällä on johtaja. Esim. firman sisäinen tennis
Pelaaja
Pelaaja on tiettyyn peliryhmään ilmoittautunut käyttäjä. Käyttäjä voi olla pelaaja useammassa peliryhmässä
Joukkue
Joukkue koostuu käyttäjistä. Joukkueella on yksi johtaja. Pelaaja voi erota joukkueesta. Joukkueeseen voi tulla uusia pelaajia. Myös joukkueenjohtaja voi muuttua. Jos joukkueen nimi muuttuu, on kyseessä eri joukkue.
Ryhmänjohtaja
Käyttäjä, joka vastaa tietyn peliryhmän toiminnasta.
Joukkueenjohtaja
Käyttäjä, joka on perustanut joukkueen.
Superhessu (super user)
Käyttäjä jolla ei ole rajoituksia, yleensä administrator
Ottelu
Yksittäinen pelitapahtuma peliryhmän sisällä.
Otteluraportti
Joukko tietoja yhden ottelun kulusta.
Rankinglista
Peliryhmäkohtainen otteluraporteista tietyllä algoritmilla saatu pelaajien tai joukkueiden järjestys. Yksi peliryhmä voi sisältää useampia rankinglistoja

3.2 Oliokaavio

Käsitteellinen oliokaavio

 

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.

Surffari:

Käyttäjä

Pelaaja

 Joukkueenjohtaja:

 Ryhmänjohtaja:

Superhessu

4.1 USE CASEt

Toiminnot kuvataan Jacobsonin USE CASEt.

 

5. Ulkoiset liittymät

5.1 Navigointi


Käyttöliittymän sivut peruskäyttäjälle:


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:


 

5.2 Rajapinnat

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

6.1 Suorituskyky

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.

6.2 Käytettävyys

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öä.

6.3 Toipuminen

Järjestelmä suunnitellaan siten että laitteiston boottauksen jälkeen järjestelmä nousee käyttökuntoon.

6.4 Turvallisuus

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.

6.5 Ylläpidettävyys

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.

6.6 Siirrettävyys

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ä.

6.7 Laajennettavuus

Uusien pelien ja säännöstöjen lisääminen vaatii ohjelmointia. Järjestelmä tarjoaa rajapinnat niiden liittämiseen, eikä puutu niiden sisäiseen rakenteeseen.