Tapaus 6 - Käyttöliittymäsuunnittelu
Nyt kun tietokoneen ja ihmisen keskeinen kommunikaatio alkaa tulla tutuksi, tutustutaan aiheeseen syvemmin pohtimalla hyvän käyttöliittymän kriteerejä. Virike ei ole kovin tekninen, mutta tuntitehtäviksi on laadittu joitakin teknisempiäkin ehdotuksia.
Virike:

Käyttöliittymäsuunnittelun kahdeksan kultaista sääntöä
Käyttöliittymäsuunnittelu ei pyri pelkästään rakentamaan siltaa ihmisen ja laitteen välillä. Käytännössä ja tutkimuksen kohteena on erityisesti hyvien käytäntöjen laatiminen. Tarkoituksena on tuottaa intuitiivisia ja helppokäyttöisiä (tähän palataan hetken päästä) käyttöliittymiä. Alla on lueteltu eräät kahdeksan sääntöä [1], joita noudattamalla ei tehdä ainakaan kovin huonoa käyttöliittymää.
- Pyri johdonmukaisuuteen. Sääntö, jota rikotaan useimmiten, sillä johdonmukaisuutta on erilaista. Samankaltaisten toimintamallien tulisi toimia toisiaan vastaavissa tilanteissa; tulisi käyttää identtistä terminologiaa kehoteikkunoissa, valikoissa ja apunäkymissä; sekä tulisi käyttää johdonmukaisesti värejä, asettelua, isoja kirjaimia, fontteja, jne. koko käyttöliittymän läpi. Poikkeuksellisen toiminnan käsittely, kuten salasanan kysely tai poisto-komennon varmistaminen, tulisi olla selkeää ja määrässä rajattua.
- Mahdollista toistuville käyttäjille oikopolkujen käyttö. Käyttökertojen määrän lisääntyessä käyttäjä saattaa haluta vähentää interaktioiden määrää ja nopeuttaa vuorovaikutusta. Lyhenteet, pikanäppäimet tai piilotetut komennot ja pienet helpotukset ovat arvostettuja toistuvien käyttöliittymän hyvin tuntevien käyttäjien keskuudessa.
- Tarjoa informatiivista palautetta. Jokaisen käyttäjän toiminnon pitäisi aiheuttaa jokin näkyvä järjestelmän palaute. Toistuvien ja pienten toimintojen kohdalla palaute voi olla kohtuullista, kun toisaalta harvoin suoritettavien ja merkittävien toimintojen tulisi aiheuttaa tuntuvampi palaute.
- Suunnittele viesti-ikkunat johtamaan toiminnan päätökseen. Toimintosarjat tulisi järjestää niin, että niillä on alku, keskikohta ja loppu. Informatiivinen palaute toimintosarjan lopussa tuottaa käyttäjälle onnistuneen saavutuksen tunteen, helpotuksen, tiedon siitä, että varasuunnitelman toiminnon toteuttamiseksi voi hylätä ja merkin siitä, että voi siirtyä seuraavaan toimintosarjaan.
- Tarjoa mahdollisuus virheiden ennaltaehkäisyyn ja yksinkertaiseen virheiden käsittelyyn. Niin paljon kuin suinkin mahdollista, järjestelmä pitäisi suunnitella niin, että käyttäjä ei pysty aiheuttamaan vakavaa virhettä; suosi esimerkiksi valikkoja tiedon syöttämisen sijaan tai esimerkiksi estä kirjaimien kirjoittaminen numeronsyöttökentissä. Jos käyttäjä aiheuttaa virheen, järjestelmän tulisi löytää virhe ja tarjota yksinkertaiset, rakentavat ja yksityiskohtaiset ohjeet virheestä toipumiseen. Esimerkiksi käyttäjiltä tulisi vaatia ainoastaan komennon virheellisten osien uudelleenkirjoittamista koko komennon sijaan. Virheellisen toiminnan tulisi jättää järjestelmän tila ennalleen tai edelliseen tilaan paluun tarjottaisiin ohjeet.
- Tarjoa mahdollisuus helppoon toimintojen peruuttamiseen. Niin paljon kuin mahdollista kaikkien toimintojen pitäisi olla peruutettavissa. Tämä toiminnallisuus vähentää ahdistuneisuutta, kun käyttäjä tietää, että virheet voi korjata, mikä rohkaisee tuntemattomien vaihtoehtojen tutkimiseen. Peruuttavat toiminnot voivat olla vain yhden askeleen tai koko toimintosarjan mittaisia.
- Tue sisäistä kontrollintunnetta. Kokeneet käyttäjät kaipaavat tunnetta, että heillä on valta järjestelmän käytössä ja järjestelmä vastaa heidän toimintaansa. Yllättävät järjestelmän toiminnot, pitkälliset tiedonsyöttösarjat, tarvittavan tiedon löytämisen kyvyttömyys tai vaikeus, tai haluttavan toiminnon aikaansaamisen vaikeus, johtavat ahdistuneisuuden lisääntymiseen ja tyytymättömyyteen.
- Vähennä lyhyen aikavälin muistin kuormittamista. Ihmisen tiedonkäsittelykapasiteetti on rajallinen. Kerrallaan pystytään käsittelemään vain noin viittä asiaa kerrallaan. Näkymien on siis oltava yksinkertaisia, useiden näyttöjen (sivujen) näkymät tulisi yhdistää, näkymän liikkeen toistumistiheyttä tulisi vähentää, ja sääntöjen, pikanäppäinten ja toimintosarjojen opetteluun tulisi jättää riittävästi aikaa.
Tuntitehtäviä
- Pohtikaa ryhmässä, mitä helppokäyttöisyydellä tarkoitetaan? Entä kun toiselle helppo on toiselle täysin käsittämätön? Pohtikaa myös erikoistapauksia, joita tulisi ottaa huomioon käyttöliittymäsuunnittelussa. Ottakaa tarkasteluun esimerkiksi bussilipunostoautomaatti, puhelin, kirja.
- Kriteerien mukainen käyttöliittymä ei kuitenkaan tarjoa aina miellyttävää kokemusta käyttäjälleen. Pohtikaa millainen vaikutus käyttökokemuksella (engl. user experience, UX) on käyttöliittymien käytössä? Kuinka käyttökokemusta voidaan huomioida käyttöliittymäsuunnittelussa?
- Pohtikaa miten toteuttaisitte Scalalla yllä esiteltyjen kriteerien mukaisen käyttöliittymän ajanvarausohjelmalle.
- Ohjelmien rakentaminen aloitetaan usein vaatimusmäärittelyllä. Millaisia erilaisia keinoja on varmistaa, että alussa asetetut vaatimukset toteutuivat lopputuloksessa?
- Tarkastelkaa Spotify:n käyttöliittymää kriteerien pohjalta:

Oppimistavoite-ehdotuksia
- Virikkeenä esitelty kriteerilista ei ole ainoa. Ota selvää Nielsenin kymmenestä heuristiikkasäännöstä.
- Käytettävyystestit.
- Useihin peleihin on jäänyt tai jätetty erilaisia koodeja, jotka saattavat tuottaa pelaajalle etua pelissä, esim. kuolemattomuus tai loputon ammusvarasto jne. Miksi tällaisia koodeja on peleissä? Kuinka tämä voitaisiin toteuttaa Scalassa?
- Käyttöliittymät eivät ole pelkästään hiirellä tai näppäimistöllä ohjailtavia. Ne eivät rajoitu pelkästään tietokoneeseen vaan ne ovat ihmisen ja ympäristön rajapinnassa. Tutustu muutamaan erikoisempaan käyttöliittymään kuten vaikkapa tähän: http://tomgerhardt.com/mudtub/.
- Tutustu yleisellä tasolla käyttöliittymäsuunnittelun vaiheisiin.
- Tutustu jollekin tietylle järjestelmälle laadittuihin interaktion suosituksiin. Esimerkiksi Windows Phone sovellusten on käyttäydyttävä samalla tavalla riippumatta sovelluksen kehittäjästä. Miksi tällaiset yleiset ohjeet on hyvä olla?
Työotsake:
Oppimistavoitteet:
Oppimistavoitteet: