(toiminnot)

hwechtla-tl: Graafisten käyttöliittymien responsiivisuus

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


(nettipäiväkirja 15.07.2012) En tajua, miksi moniajavien graafisten käyttöjärjestelmien käyttöliittymäsuunnittelu ei ota huomioon sitä, että koneen ollessa kuormittunut (tai netti- tai oheislaiteyhteyksien ollessa hitaita) ohjelman saama syötevirta ei edusta tarkalleen käyttäjän toimien aikasarjaa. Kun kone on ylikuormittunut, tapahtuu tyypillisesti kaksi asiaa:

  1. käyttäjältä luetaan syötettä harvemmin, esim. hiiri liikkuu isommin hyppäyksin.
  2. ohjelma saa käyttäjän syötteen myöhässä, esim. jotain näppäintä on painettu eri tilanteessa, kuin missä ohjelma sen lopulta saa.

Perinteinen muoto tästä ongelmasta on esim. se, että poistat jotain tekstiä pitämällä delete- tai backspace-näppäintä pohjassa. Sitten kone jumittaa, jona aikana kirjaimenpoistoja kertyy jonoon, josta ne sitten purkautuvat vielä paljon sen jälkeen, kun se teksti, jonka halusit poistaa, on jo hävinnyt maan kamaralta. Tuloksena tuhoutuu tekstiä, jonka olisit halunnut säästää.

Nämä ongelmat ovat taas pahentuneet, koska kosketusnäyttökäyttöliittymät ovat yleistyneet ja niissä on valtava määrä erilaisia eletoimintoja: sipaisuja, käännöksiä, pyyhkäisyjä, lyhyitä ja pitkiä napautuksia ja niin edelleen. Kun koneet (tai kännykät) ovat kuormittuneita, nämä eleet tulkitaan toisikseen, ne osuvat vääriin toimintoihin näytöllä, tai niitä on mahdotonta tehdä. Omaa Android-kännykkääni, jossa on kuviolukitus, on melkein mahdotonta saada auki ennen ajastimen aiheuttamaa näyttölukitusta, jos se on hidas ottamaan vastaan sormen vetämistä näyttöä pitkin.

Toki ongelma on ollut ihan tarpeeksi paha myös esim. hiirten kanssa, joilla turhautunut käyttäjä ehtii saada aikaan tolkuttoman määrän napautuksia, ennen kuin kone tokenee tokkurastaan ja alkaa enemmän tai vähemmän ahkerasti toimittaa niitä, enimmäkseen vääriin osoitteisiin. Kuinka monta kertaa olet sulkenut vahingossa kaksi ikkunaa tai välilehteä yhden sijaan, koska ensimmäinen on ollut hidas sulkeutumaan?

Tähän ongelmaan on oikeasti olemassa parempia ratkaisuja. Olennaisin on se, että kaikki tapahtumat (siis tiedot siitä, että käyttäjä on tehnyt jotain) aikaleimataan ja näihin aikaleimoihin oikeasti kiinnitetään huomiota asiakasohjelmissa. Ja mitä niiden aikaleimojen perusteella pitäisi tehdä?

  1. Ohjelmien pitää pitää kirjaa, onko niiden tila muuttunut sen jälkeen, kun tapahtuma on lähetetty. Jos tila on muuttunut ja tapahtuman lähdöstä on esim. yli sekunti, pitää varmistaa, että käyttäjä oikeasti haluaa toteuttaa ne. (Ne kannattaa kerätä yhteen klönttiin ja hyväksyttää kerralla.)
  2. Aikaleimat pitää ottaa huomioon tulkittaessa, mitä käyttäjä on tehnyt. Esim. laskettaessa hiiren liikkeen nopeutta pitää ottaa huomioon, kuinka pitkä aika kahden hiirikohdistuksen välillä on kulunut.

Syy, miksi näin ei tehdä, on todennäköisesti se, että ohjelmoijat eivät tykkää kiinnittää huomiota vaikeasti tuotettaviin ja testattaviin erityistilanteisiin, koska ne tuottavat paljon ylimääräistä työtä ja hyöty on pienehkö (eikä vaikuta esim. tuotteen myyntiin). Lisäksi, koska periaatteessa kaikki nämä ongelmat pystyy korjaamaan lisäämällä koneiden suoritustehoa, on aika kova houkutus jättää ne vain huomiotta. Ongelma on vain se, että vaikka koneet olisivat kuinka tehokkaita, yksittäinen ohjelma pystyy edelleen kuormittamaan koko koneen.


kommentoi (viimeksi muutettu 29.07.2014 09:05)