Tik-76.115 Vaatimusmäärittely
SUSI - Smart web Updating with a Simple Interface

Sisällysluettelo
- 1. Johdanto
- 1.1 Yleistä
- 1.2 Termit
- 1.3 Vaatimusmäärittelyn sisältö
- 2. Yleiskuvaus
- 2.1 Käyttötarkoitus
- 2.2 Käyttäjät
- 2.3 Käyttöympäristö
- 3. Toiminnot
- 3.1 Asiakasohjelma
- 3.2 Palvelin
- 3.3 Sivujen generointi
- 4. Ulkoiset liittymät
- 5. Muut ominaisuudet
- 6. Laatusuunnitelma

1.1 Yleistä
SUSI-projektin tarkoituksena on kehittää
Ohjelmatyö-kurssin (Tik-76.115)
puitteissa ohjelmisto, jonka avulla voidaan editoida WWW-sivuja Javaa
tukevan selainohjelman kautta. Ohjelman tarkoituksena on helpottaa
WWW-järjestelmien ylläpitäjien työtä antamalla loppukäyttäjille suoran
työkalun sivujen muokkaukseen ilman HTML-kielen osaamista.
Järjestelmä mahdollistaa myös rajoitetun editoinnin pohjien (template)
avulla, joissa määritellään erikseen sallitut toimenpiteet dokumentille.
Lisäksi palvelin huolehtii käyttäjien tunnistamisesta, jolloin
loppukäyttäjille voidaan antaa erilaisia oikeuksia eri dokumentteihin.
1.2. Termit
- Applet: Javalla toteutettu, selaimessa ajettava pieni ohjelma,
joka yleensä on käyttöliittymäelementti tai vastaava.
- Client/server: Client/server (asiakas/palvelin) -järjestelmillä
tarkoitetaan hajautettuja ohjelmistoja, joissa asiakasohjelma ottaa
yhteyden palvelinohjelmistoon. Tiedon prosessointi tapahtuu yleensä
asiakasohjelmassa ja palvelin huolehtii tiedon tallentamisesta ja
jatkokäsittelystä.
- Elementti: Elementillä tarkoitetaan tässä projektissa templaten
pienintä yksittäistä osaa, johon voidaan kohdistaa määrittelyjä.
- HTML (HyperText Markup Language): Määrittelykieli, jolla kuvataan
WWW-sivut, niiden asettelu ja sisältämä teksti, kuvat yms. elementit.
- HTTP (HyperText Transfer Protocol): TCP/IP-protokolla, jolla
WWW-sivut ja siihen liittyvät muut objektit siirretään.
- Java: SUN:n kehittämä laitteistoriippumatonta tavukoodia tuottava
oliopohjainen ohjelmointikieli, jonka avulla voidaan totetuttaa WWW:n
päälle hajautettuja, client/server-pohjaisia ohjelmistoja.
- Selain: WWW-palveluiden käyttäjän työasemassa ajettava ohjelma,
joka hakee WWW-sivut käyttäen HTTP-prokollaa. Selain visualisoi sivun
HTML-koodin näytölle.
- Template (Sivupohja): Tässä projektissa sivupohjilla eli
templateilla tarkoitetaan ennaltamääriteltyjä asettelu-, tiedon sisältöä
rajoittavia ja muita dokumenttiin liittyviä tietoja. Templatet ja niiden
pohjalle syötetyt tiedot muodostavat kokonaisuuden, joista varsinaiset
HTML-sivut generoidaan.
- WWW (World Wide Web): Internetin päällä toimiva maailmanlaajuinen
hypertekstijärjestelmä
1.3. Vaatimusmäärittelyn sisältö
Luvussa 2 käsitellään järjestelmän yleiskuvaus
arkkitehtuurista ja käyttöympäristöstä sekä käytettävistä työkaluista.
Luvussa 3 kerrotaan lyhyesti järjestelmän
keskeisistä toiminnoista.
Luvussa 4 käydään läpi järjestelmän ulkoiset
liitynnät, tietoliikennetarpeet sekä alustava näkemys käyttöliittymästä.
Luvussa 5 kerrotaan ohjelmiston yleisistä
omainaisuuksista, jotka liittyvät lähinnä sen sisäiseen rakenteeseen.
Lopuksi luvussa 6 määritellään keskeiset
laatukriteerit, joihin kehitystyössä panostetaan.
2.1 Käyttötarkoitus
Tässä ohjelmatyössä tuotetaan WWW-sisältötuotannon työkalu, jonka avulla
voidaan tuottaa WWW-sivuja ennaltamäärättyjen sivupohjien (template) pohjalta
ilman HTML-koodin kirjoittamista; järjestelmä huolehtii HTML-koodin
generoinnista sivupohjien ja syötetyn datan perusteella.
2.2 Käyttäjät
Ensisijainen kohderyhmä ovat käyttäjät, joilla on WWW-sivujen tuottamiseen
tarvittavat tiedot, mutta ei taitoa, kokemusta tai halua kirjoittaa sivuja
HTML-muodossa. Järjestelmä on suunnattu myös organisaatioille, jotka haluavat
tuottaa laadukkaita sekä ulkoasultaan ja layoutiltaan korkeatasoisia ja
yhtenäisiä WWW-sivuja riippumatta siitä, kuka varsinaiset tiedot sivuille
kirjoittaa.
2.3 Käyttöympäristö
Järjestelmä toteutetaan client/server-pohjaisella ratkaisulla.
Asiakasohjelma toimii missä tahansa WWW-selaimessa, joka tukee
vähintään JDK 1.02:lla tehtyjä editoriappletteja sekä HTML-kielen
versiota 3.2.
Palvelinosa pyritään toteuttamaan mahdollisimman laitteisto- ja
käyttöjärjestelmäriippumattomaksi käyttämällä Java-ohjelmointikieltä sekä
tarpeen vaatiessa muita yleisiä skriptikieliä (esimerkiksi perl).
Nopeudeltaan kriittisissä komponenteissa (kuten salauksen purku ja
allekirjoitusten tarkistus) voidaan palvelimessa käyttää myös C++-kieltä,
mutta nämäkin komponentit on ohjelmoitava mahdollisimman pienin muutoksin
siirrettäviksi.
Ensisijaisesti kuitenkin toteutetaan palvelinosa jonkin UNIX:n päällä
toimivaksi.
Järjestelmän vaatimat tietokanta-, tiedosto- ja tietoliikenneliittymät
pyritään jättämään mahdollisimman avoimiksi. Vaatimuksena käytetylle
tietokannalle on tuki JDBC-rajapinnalle.
Tietoliikenteen osalta vaaditaan asiakkaan ja palvelimen välille HTTP-yhteys,
joka myös riittää ulkoisiin tietoliikenneyhteyksiin. Näin järjestelmää
käytettäessä palomuureihin ei tarvitse avata uusia portteja.
Alla alustavat kaaviot järjestelmäarkkitehtuurista ja tietoliikenteen
toteutusmalleista.
Kuva 1. WWW-editorin järjestelmäarkkitehtuurin yleiskuva
Kuva 2. Yleiskuva tietoliikenteen toteutusmalleista
Vaaditut toiminnot voidaan jakaa kolmeen osaan: asiakasohjelma (editori),
palvelin sekä sivujen generointi.
3.1 Asiakasohjelma
Järjestelmä generoi annetun sivupohjan perusteella asiakasohjelmalle sivun,
joka toimii editorina tietojen syöttöä varten. Asiakas palauttaa syötetyn
datan palvelimelle.
Editorin tyylillisistä ominaisuuksista toteutetaan ainakin tekstieditori,
jolla voidaan säätää tekstityyliä lopulliselle HTML-sivulle. Lisäksi
editoriapplettien on mahdollistettava yksinkertaisten taulukoiden
muokkaaminen sekä erilaisten listarakenteiden ja linkkien lisääminen.
Myös kuvien lisääminen palvelimen kuvakirjastosta on tarpeellinen toiminto.
3.2 Palvelin
Palvelin huolehtii sivupohjien ja datan tallennuksesta, arkistoinnista ja
versionhallinnasta. Palvelin sisältää mekanismit asiakasohjelmien käyttäjien
autentikointiin ja näiden oikeuksien hallintaan. Palvelin sisältää myös
notifikaatiomekanismit, joilla järjestelmän ulkopuolisille WWW-palveluun
kuuluville osille tiedotetaan uusista, muuttuneista ja poistetuista sivuista.
Lisäksi palvelin tarjoaa indeksin järjestelmään syötetyistä sivuista.
3.3 Sivujen generointi
Palvelimesta voidaan erottaa erillinen osa, joka huolehtii HTML-koodin
generoinnista annetun sivupohjan ja siihen liittyvän datan perusteella.
Generaattori on erotettu varsinaisten palvelimesta, koska generaattoria
voidaan käyttää myös HTML-koodin generointiin dynaamisesti eli esimerkiksi
CGI-binäärin osana.
Sivugeneraattori toteutetaan siten, että HTML-koodi voidaan uudelleengeneroida
helposti, jos sivuun liittyvä pohja muuttuu.
Järjestelmä tarjoaa ulospäin kohdassa 3.2 kuvatut notifikaatiomekanismit.
Palvelimen ylläpitämä indeksi on myös tarjolla indeksisivujen ja muiden
viittausten muodostamista varten. Sivugeneraattorin liittymänä ulospäin toimii
hakemisto, johon generoidut HTML-sivut tallennetaan. Indeksi sisältää tiedot
hakemistosta ja sen sisällöstä.
5. Muut ominaisuudet
Helppokäyttöisyyden lisäksi järjestelmällä on muutamia selkeitä
toiminnallisia vaatimuksia. Näistä tärkeimpiä on turvallisuus, sillä
luvaton käyttäjä voi aiheuttaa paljon haittaa muokkaamalla sivuja oman
mielensä mukaan. Näin käyttäjien tunnistaminen ja oikeuksien
rajoittaminen on suunniteltava huolellisesti.
Muutettavista dokumenteista on arkistoitava vanhat versiot, jotta
palaaminen virheellisistä muutoksista olisi helppoa. Samalla järjestelmä
kerää lokia tehdyistä muutoksista, jolloin väärinkäyttöä voidaan yrittää
selvittää jälkikäteen.
Ohjelmisto pyritään myös suunnittelemaan ja toteuttamaan mahdollisimman
helposti siirrettäväksi eri ympäristöjen välillä. Tätä varten
koodaukseen käytetään java- ja perl-kieliä, jotka löytyvät kaikille
yleisimmille alustoille. Toteutus tapahtuu aluksi jonkin UNIX-version
päälle sekä Apachen HTTP-palvelimelle, mutta toivottavaa on myös helppo
siirtäminen esimerkiksi Windows NT & Microsoft IIS -yhdistelmälle.
Dokumenttipohjien (template) määrittelemiseksi on laadittava HTML:ään
laajennus, jossa sallitut editointikohteet voidaan määritellä.
Ylläpidettävyyden kannalta tämä vaikeuttaa uusien editoitavien sivujen
muodostamista, koska siihen vaaditaan myös laajennuskielen hallitseminen.
Tähän tarkoitukseen voisi jatkossa kehittää oman editorinsa, mutta tämän
kurssin puitteissa asiaa ei tutkita.
Ohjelmiston suorituskyky pyritään pitämään riittävänä, jotta käytettävyys ei
kärsi. Kriittistä suorituskyvyn kannalta on käyttöliittymäapplettien koko,
koska suurin osa käyttäjän odotteluajasta kuluu applettien siirtoon verkon
yli. Appletit pyritään siis pitämään mahdollisimman pieninä. Palvelimen
suorituskyky on pitkälti riippuvainen käytettävästä laitteistosta ja
käyttöjärjestelmästä, mutta loppukäyttäjän (sisällöntuottaja) kannalta
palvelimen suorituskyky ei ole kovin kriittistä. Kuitenkin palvelinohjelmisto
toteutetaan käyttäen mahdollisimman tehokkaita ohjelmistoteknisiä,
-arkkitehtuurisia ja algorimisiä ratkaisuja.
Keskeisiä tavoitteita ohjelmatyön toteuttamiselle ovat:
Tuotettavaan ohjelmistoon liittyvät laatukriteerit
Laatukriteerit ovat tärkeysjärjestyksessä.
- Käyttöliittymä
Koska ohjelmistoa rakennetaan loppukäyttäjiä varten, on
käyttöliittymä saatava riittävän selkeäksi ja yksinkertaiseksi.
Käyttöliittymän laatu testataan käytettävyystestillä.
- Laajennettavuus
Tämän kurssin puitteissa näinkin laajan uudentyyppisen
ohjelmiston kehittäminen voi tuskin edetä lähellekään
täydellisyyttä, joten palvelinpuoli on suunniteltava erittäin
huolellisesti, jotta sitä voidaan jatkossa kehittää
ilman suuria muutoksia jo olemassaolevaan koodiin.
Lisäystarvetta tulee esimerkiksi kehittyvästä HTML-kielestä, jolloin
uudentyyppisten elementtien käsittely vaatii uusien komponenttien
ohjelmointia. Kurssin puitteissa on tarkoitus toteuttaa vain
peruskomponenttien käsittely, kuten tekstin ja tyylien
määrittely. Taulukoiden lisääminen ja palvelimella jo olevien
kuvien lisääminen ovat seuraavana tärkeysjärjestyksessä.
Laajennettavuutta arvioidaan yhdessä kurssin henkilökunnan kanssa
tehtyjen ohjelmistoteknisten ratkaisujen pohjalta.
- Turvallisuus
Jotta järjestelmää voitaisiin käyttää avoimissa verkoissa, on
sen väärinkäyttömahdollisuuksia ehkäistävä erittäin
huolellisesti. Ainakin käyttäjän autentikointi on toteutettava
mahdollisimman vahvalla tavalla. Tiedon salaamiselle jätetään
myöhempi laajennusmahdollisuus, joka voidaan toteuttaa vasta selainten
tukiessa laajasti Javan JDK 1.1-versioita. Appleteissa kryptaus on
kuitenkin melko tehotonta ja hidasta, joten olemassaolevien
turvallisuusmekanismien (HTTP-S ja SSH-putkitus) käyttäminen on
suositeltavampi ratkaisu. Pyrimme saamaan ohjelman käytännön
tietoturvallisuuden erikoiskurssille hyökkäyskohteeksi, jossa yhteydessä
tietoturva tulee testatuksi.
- Suorituskyky
Käyttöliittymä ja siihen liittyvät elementtien editointiappletit
pyritään toteuttamaan mahdollisimman kevyiksi, jotta järjestelmän
suorituskyky saadaa riittäväksi erilaisissa verkkoympäristöissä.
Suorituskyky todetaan käytettävyystestin yhteydessä ja
tarkoilla mittauksilla erilaisissa verkkoymäristöissä.
- Siirrettävyys
Palvelinohjelmisto on oltava helposti siirrettävissä eri ympäristöille.
Ensijaisesti toteutetaan järjestelmä UNIX-pohjaiseksi, mutta palvelin
toteutetaan siten, että siirrettävyys Windows NT -ympäristöön on
mahdollisimman helppoa. Siirrettävyys arvioidaan asiantuntemuksen
pohjalta ja kokeillaan.
- Mahdollisimman avoimet rajapinnat
Laajennettavuuden lisäksi ohjelman liitynnät ulospäin on
toteutettava mahdollisimman standardeilla kirjastoilla. Tämä
mahdollistaa mm. tiedon säilyttämisen erilaisissa tietokannoissa.
Myös tuotetut WWW-sivut voivat periaatteessa majailla joko
tiedostojärjestelmässä tai tietokannassa. Tietokantaliittymää ei
toteuteta tämän kurssin puitteissa, mutta sen myöhempään
tarpeeseen varaudutaan.
- Jatkokehitettävyys
Koska tämän projektin kaltaisella tuotteella on selvä kaupallinen
tarve ja markkinoilla ei vielä ole vastaavia tuotteita, pyritään
projekti toteuttamaan siten, että ohjelmistoa voidaan jatkokehittää
suoraan toteutetun ohjelmiston pohjalta. Lisäksi on mahdollista, että
TLM-laboratoriossa on kiinnostusta kehittäää tämän projektin pohjalta
jokin selvästi erilainen ohjelmisto. Tämä asettaa korkeita vaatimuksia
niin ohjelmiston arkkitehtuurin suunnittelulle kuin toteutukselle ja
dokumentoinnille. Tämä voidaan arvioida siitä, onko TLM-laboratoriolla
ja/tai ryhmän jäsenillä kiinnostusta jatkokehittää ohjelmistoa.
Kurssin suorittamiseen liittyvät laatukriteerit
- Ohjelmistoprojektin hallinnan oppiminen
Koska työelämässä valtaosa diplomi-insinööreistä toimii erilaisissa
johto- ja hallintatehtävissä, on ryhmän jäsenten keskeisenä tavoitteena
oppia projektin hallintaan ja johtamiseen liittyviä aspekteja. Oppimisen
kannalta aiheemme on muita aiheita hedelmällisempi, koska mitään valmista
määrittelyä tai suunnitelmia ei ole käytettävissä. Projektimme on muita
"täydellisempi", koska joudumme tekemään kaiken itse alkaen markkinoiden
ja tarpeiden kartoittamisesta varsinaisen ohjelmiston toteutukseen.
Ryhmän jäsenille tehdään "mitä opit" -kysely kurssin loppupuolella.
- Käytettävissä olevien henkilöstöresurssien tehokas hyödyntäminen
Työryhmässä on edustettuna asiantuntemusta useilta eri tietotekniikan
alueilta, joten henkilöstön erikoisosaamisen hyödyntäminen ja eri
tehtävien jakaminen oikeille henkilöille on välttämätöntä, jotta
käytettävissä olevassa melko lyhyessä ajassa saadaan tehtyä mahdollisimman
paljon ja tehokkaasti. Resurssien jaon objektiivinen arviointi on
kuitenkin melko vaikeaa. Tuntiraporttien ja kyselyn avulla
arvioidaan henkilöstöresurssien hyödyntämisen tehokkuutta.

$Id: vm.html,v 1.11 1997/11/03 07:18:44 avaltoka Exp $