http://www.niksula.cs.hut.fi/projects/ohtace/documents/laatu/ohjelmanlaatu.html
CVS info: $Id: ohjelmanlaatu.html,v 1.4 1996/11/26 09:44:40 tsalste Exp $


Internet-TV

Ohjelman laatu

Tämä dokumentti käsittelee ohjelmatyössä tuotettavan lopputuotteen, ohjelmiston laatua, ja on osa laajempaa laatudokumenttia.

Kuka laadun kokee?

Ohjelmatuotteen laadun kokee sen käyttäjä. Koska työssä ei ole tarkoitus tehdä myytävää ohjelmistoa, jätetään tässä huomiotta se laatukuva, joka potentiaaliselle asiakkaalle muodostuu ennen ohjelman käyttöä tai ostopäätöstä. Keskitytään siis siihen laatuun, jota käyttäjä kokee käyttäessään ohjelmaa.

Loppukäyttäjän lisäksi ohjelmatuotteen laadun kokee se, joka tutustuu itse ohjelmakoodiin. Tällainen henkilö voi olla kiinnostunut ohjelman toteutustekniikasta, hän ehkä haluaa kehittää ohjelmaa edelleen taikka siirtää sen toiseen ympäristöön.

Ohjelman käyttäjät

Ohjelman käyttäjiä, samaten käyttötarpeita on erilaisia. Ohjelman elinkaaren ajalta voidaan hahmottaa 3 vaihetta:
  1. Ohjelman asennus
  2. Ohjelman käyttö
  3. Ohjelman poisto
Nämä vaiheet suorittaa joko yksi ja sama käyttäjä, tai mahdollisesti myös eri käyttäjät.

Vaiheista pisimpään kestävä on ilman muuta ohjelman käyttövaihe - tai muuten jossain on vikaa! Sen vuoksi seuraavassa rajoitutaankin käyttövaiheen osanottajien, ohjelman loppukäyttäjien, tarpeisiin. Tämä ei kuitenkaan tarkoita, että ohjelman asennus ja poisto olisivat merkityksettömiä laadun kannalta.

Ohjelman loppukäyttäjien jaottelu

Käyttöliittymäseminaarin yhteistyöryhmämme jakaa käyttäjät 4 kastiin. Tässä yhteenveto kasteista sovellettuna tämän dokumentin tarpeisiin.
  1. Satunnainen käyttäjä: tyytyy vähään, painotus helppoudella
  2. Tavallinen käyttäjä: käyttää usein, järjestelmän oppiminen rajallista, painotus katseltavien ohjelmien sisällöllä, käyttöliittymän helppoudella ja vaivattomuudella
  3. Taitava käyttäjä: käyttää usein, painotus käyttöliittymän mukavuudella ja käytön muokattavuudella omien tarpeiden mukaiseksi
  4. Guru: osaa vaatia myös tekniseltä toteutukselta enemmän, on kiinnostunut myös "nippelitiedosta", teknisistä ominaisuuksista
Tavoitteena on, että satunnaisista käyttäjistä kehittyy tavallisia käyttäjiä, joista puolestaan osasta ajan myötä taitavia käyttäjiä, jopa guruja.

On selvää, että eri käyttäjäryhmät kokevat laadun eri tavoin.

  1. Satunnainen käyttäjä arvostaa erityisesti käytön helppoutta. Ohjelma on nopeasti opittavissa käyttäjän aikaisemman kokemusmaailman perusteella.
  2. Tavallinen käyttäjä arvostaa myös käytön helppoutta. Hän on jo oppinut käyttämään ohjelmaa jollain tavalla. On tärkeää, että ohjelma toimii koko ajan samalla tavalla. Lisäksi uuden oppiminen tapahtuu hyödyntämällä ohjelmasta jo opittuja tietoja. Käytön on oltava myöskin vaivatonta. Tavallinen käyttäjä edellyttää ohjelmalta luotettavuutta, sillä hän käyttää ohjelmaa usein.
  3. Taitava käyttäjä arvostaa paitsi vaivatonta käyttöä, myös muokattavuutta omien tarpeiden ja halujen mukaiseksi. Myös taitava käyttäjä edellyttää ohjelmalta luotettavuutta.
  4. Guru edellyttää myös vaivattomuutta, muokattavuutta ja luotettavuutta. Tämän lisäksi häntä kiinnostaa tekninen toteutus, erilaiset tunnusluvut, asetukset jne. Häntä saattaa jopa kiinnostaa itse ohjelmakoodi, mistä lisää seuraavassa kappaleessa.

Ohjelmakoodin käyttäjät

Ohjelmakoodin käyttäjiä ovat
  1. Ohjelman toisiin käyttöympäristöihin siirtäjät
  2. Ohjelman jatkokehittäjät
  3. Lähdekoodin hyväksikäyttäjät
  4. Teknisestä ratkaisusta kiinnostuneet
  5. Ohjelmatyöryhmä kehitystyön aikana
Näille kaikille ryhmille on yhteistä se, että lähdekoodiin tutustumisen on oltava helppoa. Lisäksi ryhmillä on omia erityisiä tarpeita:
  1. Ohjelman toisiin käyttöympäristöihin siirtäjät arvostavat sellaista toteutusta, että ohjelma on siirrettävissä kohdekäyttöympäristöön vähäisellä vaivalla, mahdollisesti edes tutustumatta itse lähdekoodiin.
  2. Ohjelman jatkokehittäjät arvostavat lisäysten ja muutosten helppoutta. Ohjelman modulaarinen rakenne helpottaa lisäyksiä ja osien korvaamista toisilla. Selkeä yhtenäinen ohjelmointitapa, kommentoinnit, muuttujien nimeäminen jne. auttavat ymmärtämään ohjelman toimintaa.
  3. Lähdekoodin hyväksikäyttäjät arvostavat samoja asioita kuin jatkokehittäjät. Lisäksi heille on eduksi, mikäli ohjelmasta voidaan irrottaa osakokonaisuuksia, kuten esimerkiksi lähetysvirran vastaanotto ja purku, erikseen ja hyödyntää toisessa ohjelmassa.
  4. Teknisestä ratkaisusta kiinnostuneet lähinnä lukevat lähdekoodia (kuten jatkokehittäjätkin), mutta he eivät muokkaa koodia itse.
  5. Itse ohjelmatyöryhmä on kiinnostunut kaikista yllä luetelluista asioista. Ohjelmatyöryhmä on tässä mukana lähinnä siksi, ettei laadukkaan ohjelmatyöprosessin merkitys unohtuisi lopputuotteen laatua pohdittaessa.

Tavoiteltavat laatuominaisuudet

Ylläolleen analyysin perusteella olemme valinneet seuraavat (kts. allaoleva taulukko) laatuominaisuudet, joihin pyrimme. Taulukossa on rastein kuvattu myös, pyritäänkö ominaisuus saavuttamaan käyttöliittymän, teknisen toteutuksen, vai lähdekoodin ominaisuuksin.

Laatuominaisuus Käyttöliittymä Tekninen toteutus Ohjelmakoodi
Käytettävä x x
Luotettava x
Siirrettävä x x
Ylläpidettävä x

Ominaisuudet

1. Käytettävyys

Helppokäyttöisyys
Keinot käyttöliittymän helppokäyttöisyyden takaamiseksi:
  1. Ymmärrettävien symbolien käyttö
  2. Vähäinen määrä toimintoja
  3. Symbolien, komentojen ja toimintojen johdonmukainen käyttö näytöstä toiseen
  4. Kaikki toiminnot ja tapahtumat voitava ymmärtää symbolien perusteella; tekstiä käytetään vain antamaan lisätietoja
  5. Kaikki toiminnot voi toteuttaa ohjelman "sisältä"; komentoriviparametreja ei tarvita
Vaivattomuus
Keinot vaivattoman käyttöliittymän takaamiseksi:
  1. Kaikki toiminnot saatavilla sekä hiirestä että näppäimistöstä
  2. Valintahierarkiat mataliksi
  3. Useimmin tarvitut toiminnot toteutettavissa yhdellä komennolla (tietyn näppäimen tai napin painallus)
Muokattavuus Suorituskyky Asennettavuus
Keinot asennettavuuden takaamiseksi:
  1. Ohjelma määrittelee tarvittavat parametrit itse
  2. Mikäli halutaan antaa käyttäjän määritellä joitain parametrejä, oletusarvojen on kuitenkin oltava mielekkäät, ja käyttäjän on kyettävä asentamaan ohjelma kiinnittämättä huomiota parametrien arvoihin
  3. Mikäli asennus epäonnistuu, ohjelma kykenee kertomaan, mikä oli virhe ja mitä käyttäjän pitäisi seuraavaksi tehdä asennuksen hyväksi

2. Luotettavuus

Virheettömyys
Keinot teknisesti virheettömän ohjelman luomiseksi:
  1. Pyritään virheettömään koodiin heti suunnittelu- ja ohjelmointivaiheessa
  2. Kattava testaus
  3. Virheiden korjaaminen
  4. Käytettävän valmiin lähdekoodin laadun tarkistus
  5. Valmiin levitysversion virustarkistus
Virhetilanteiden käsittely
Keinot virhetilanteiden käsittelemiseksi:
  1. Mahdolliset virhetilanteet mietitään ennakolta
  2. Virheet ennakoidaan ohjelmakoodissa, ei jätetä käsittelemättä
  3. Yleiskäyttöiset virheenkäsittelyrutiinit
Ennakoitavuus
Keinot ennakoitavuuden takaamiseksi:
  1. Käyttöliittymän suunnittelu johdonmukaiseksi
  2. Käyttöliittymäriippumattomien työkalujen käyttö

3. Siirrettävyys

Lähetysriippumattomuus Työkalujen siirrettävyys Koodin siirrettävyys
Keinot koodin siirrettävyyden takaamiseksi:
  1. Käytetyt tiedostonimet kelpaavat mahdollisimman monessa tiedostojärjestelmässä, kuten DOSin 8.3-järjestelmässä (FAT). Käytetään tiedostonimissä vain merkkejä a-z ja 0-9, sekä pelkästään pieniä kirjaimia.
Työn siirrettävyys
Keinot ohjelmatyön siirrettävyyden takaamiseksi:
  1. Luodaan ylläpidettävää koodia (josta lisää alla)
  2. Ohjelmoidaan englanniksi: tiedostojen, muuttujien, aliohjelmien, luokkien jne. nimet

4. Ylläpidettävyys

Ymmärrettävyys
Keinot ohjelmakoodin ymmärrettävyyden takaamiseksi:
  1. Aliohjelmat pidetään lyhyinä (max. 50 riviä)
  2. Kattava kommentointi tiedosto-, luokka- ja aliohjelmatasolla
  3. Jokainen aliohjelma kommentoidaan: toiminta, parametrit, paluuarvot
  4. Erityistä huomiota kiinnitetään rajapintojen dokumentointiin
  5. Jokainen lähdekooditiedosto luetteloidaan erityiseen sisällysluetteloon, jossa kerrotaan tiedoston sisältö
  6. Jokaisen lähdekooditiedoston ohjelmointirajapinta kuvataan pääpiirteittäin tiedoston alussa
  7. Luokkien toiminta, erityisesti rajapinnat, kuvataan yleisellä tasolla luokkamäärittelyn yhteydessä (.h-tiedostossa). Luokan jäsenten toiminta kuvataan jäsenten toteutuksen yhteydessä (.cc-tiedostossa).
Yhdenmukaisuus Modulaarisuus
Keinot:
  1. Olio-ohjelmointi: luokkahierarkiat
  2. Ohjelma jaetaan osiin, jokaisella osalla oma vastuuhenkilö

Dokumentin laati: Tuomas Salste
Viimeksi päivitetty: 25.11.96

Ohjelmatyön pääsivu

Ohjelmatyöryhmän osoite: ohtace@tcm.hut.fi
Käyttöliittymäryhmän osoite: lysm@cs.hut.fi