Joel on Software

Joel on Software Joel tarkvarast

 

Kasutajaliidese disain programmeerijatele
1. peatükk
2. peatükk
3. peatükk
4. peatükk
5. peatükk
6. peatükk
7. peatükk
8. peatükk
9. peatükk

Veel "Joel on Software" artikleid eesti keeles

Veel "Joel on Software" artikleid inglise keeles

Kirjuta autorile (ainult inglise keeles)

 

Kasutajaliidese disain programmeerijatele
2. peatükk: Ootuste väljaselgitamine


Joel Spolsky
Tõlkinud Paavo Helde
Toimetanud Anti Veeranna
11. aprill 2000

Uus kasutaja ei alusta arvuti taha istudes kunagi päris tühjalt kohalt. Tal on programmi töötamise suhtes teatud ootused. Kui ta on varem kasutanud sarnast tarkvara, siis ta eeldab, et sinu programm töötab sarnaselt tolle teisega. Kui ta on eelnevalt üldse mingit tarkvara kasutanud, siis ta eeldab, et sinu programm järgib teatavaid üldisi tavasid. Tal on üsna täpne ettekujutus sellest, kuidas üks kasutajaliides (UI) töötama peaks. Seda nimetatakse kasutajamudeliks: kasutaja ettekujutuseks programmi käitumisest.

Ka programmil on oma "vaimne mudel", ainult et see on kodeeritud bittidena, mida protsessor täht-tähelt täidab. Seda nimetatakse programmimudeliks ning see on Seadus. 1. peatükis saime teada, et kasutajaliides on õnnestunud siis, kui programmimudel vastab kasutajamudelile.

Võtame konkreetse näite. Kui lisada Microsoft Wordis (nii on see ka enamikes teistes tekstitöötlusprogrammides) dokumenti pilt, siis salvestatakse see pilt dokumendi faili. Pildi võib mujal ette valmistada, lohistada selle hiirega dokumenti ning seejärel esialgse pildifaili kustutada - dokumenti jääb pilt alles.

HTMLis ei saa nii teha. HTML dokumendis kasutatavad pildid asuvad eraldi failides. Kui anda tekstitöötlusega harjunud ja HTMList mitte midagi teadvale kasutajale kätte kena WYSIWYG HTML-toimetamisprogramm a la FrontPage, siis tõenäoliselt eeldab ta, et pilt salvestatakse dokumendiga samasse faili. Seda nimetatakse kasutajamudeli inertsiks.

Tegemist on kahetsusväärse konfliktiga kasutajamudeli (pilt salvestatakse samasse faili) ja programmimudeli (pilt asub eraldi failis) vahel ning see konflikt avaldub kasutajaliideses.

FrontPage-laadset programmi projekteerides oled just sattunud oma esimese UI probleemi ette. Sa ei saa muuta HTMLi ülesehitust. Samas tuleks midagi ette võtta programmimudeli kasutajamudeliga kooskõlla viimiseks.

Sul on kaks valikut. Võid üritada muuta kasutajamudelit, aga see on märkimisväärselt raske. Programmi juhendis võib olukorda selgitada aga kõik teavad, et kasutajad juhendeid ei loe ning ei peakski lugema. Võid kuvada dialoogiakna selgitusega, et pildifaili ei lisata HTML-dokumenti, kuid sellel lahendusel on kaks viga: see ärritab kogenud kasutajaid ja pealegi ei loe kasutajad niikuinii dialoogiakende sisu (sellest räägime lähemalt 6.-ndas peatükis).

Seega, kui mägi ei tule Muhamedi juurde... Peaaegu alati on parem lahendus kasutajamudeli asemel programmimudeli muutmine. Kui kasutaja lisab pildi, siis peaksid tegema pildist koopia alamkataloogi dokumendifaili juures, nii et programmi käitumine vastaks kasutaja ootustele pildi kopeerimise osas (originaali võib julgelt kustutada).

Kuidas ma kindlaks teen, milline on kasutajamudel?

Selgub, et see on suhteliselt kerge. Lihtsalt küsi kasutajatelt! Vali viis suvalist kolleegi, sõpra või sugulast ja selgita neile üldjoontes oma programmi tööd ("see on programm veebilehekülgede koostamiseks"). Kirjelda situatsiooni: "Sa töötad veebileheküljega ja sul on pildifail nimega Pilt.JPG, mida soovid sellele veebileheküljele paigutada." Seejärel esita mõned küsimused kasutajamudeli välja selgitamiseks. "Kuhu pilt salvestati? Kui sa kustutad Pilt.JPG faili, kas pilt säilib veebileheküljel?"

Üks mu sõber töötab fotoalbumiprogrammiga. Peale fotode sisestamist näitab programm nende vähendatud koopiatest koosnevat indeksit. Nende indekspiltide genereerimine on aeganõudev, eriti siis kui fotosid on palju, niisiis tahaks ta genereerida indekspilte ainult üks kord ja salvestada nad seejärel kõvakettale. Selleks on mitu erinevat moodust. Kõik indekspildid võib salvestada ühte suurde faili nimega Thumbnails. Mõeldav on ka salvestada eraldi failidena alamkataloogi Thumbnails. Faile saab märkida opsüsteemi poolt peidetuks, nii et kasutaja neid ei näe. Mu sõber valis lahenduse, mis oli tema arvates parim kompromiss: ta salvestas iga pildi picture.JPG indeksfaili uude faili nimega picture_t.JPG samasse kataloogi. Tehes 30 pildist koosneva albumi on lõpptulemusena kataloogis koos indekspiltidega 60 faili.

Erinevate skeemide eeliseid ja puudusi võib vaagida nädalate kaupa, kuid probleemile saab läheneda ka teaduslikumalt. Lihtsalt küsi kasutajate käest, kuhu nende arvates indekspildid salvestatakse. Loomulikult ei oska ega taha paljud neist midagi arvata, kuid küsitledes piisavalt suurt hulka inimesi, hakkad nägema vähemalt mingit konsensust. Kõige rohkem pakutud variant on parim kasutajamudel ja edasi on juba sinu mureks programmimudel sellega vastavusse viia.

Järgmiseks tuleb sul oma teooriaid testida. Valmista kasutajaliidese prototüüp ja palu mõnel inimesel selle abil ülesandeid täita. Sel ajal, kui nad ülesannet lahendavad, uuri, mis nende arvates parasjagu toimub. Sinu eesmärgiks on nende ootuste välja selgitamine. Kui ülesandeks on "pildi sisestamine" ja sa märkad, et nad püüavad hiirega tirida pilti sinu programmi, peaksid toetama hiirega tirimist. Kui nad lähevad "Sisesta" menüüsse, siis peaksid sellesse menüüssse lisama valiku "Pilt". Kui aga keegi läheb fondi määramise kasti ning asendab sõnad "Times New Roman" sõnadega "Sisesta Pilt", siis oled leidnud käsurida otsiva relikti, kes pole veel graafiliste kasutajaliidestega tuttav.

Kui paljude inimeste peal peaks kasutajaliidest testima? Instinktiivselt võiks arvata, et "mida rohkem, seda uhkem," ja teadusliku eksperimendi puhul oleks see oma kohal. Aga see instinkt on vale. Peaaegu kõik professionaalsed kasutushõlpsuse testijad loevad viit või kuut inimest küllaldaseks. Edasisel testimisel hakkavad tulemused korduma ning sa lihtsalt raiskad oma aega.

Pole vaja spetsiaalset kasutushõlpsuse laborit ja pole vaja ka rahvast "tänavalt" korjata - võid lihtsalt peatada esimese vastujuhtuva inimese ja paluda tal läbida kiire kasutushõlpsuse test. Vaata, et sa mängu ära ei riku talle ette öeldes kuidas midagi teha tuleb. Palu tal "valjusti mõelda" ning esita suunavaid küsimusi, et tema vaimset mudelit välja selgitada.

Kui programmimudel ei ole triviaalne, siis tõenäoliselt ei ühti see kasutajamudeliga.

Kui olin kuuene, tõi mu paps koju ühe maailma esimestest taskukalkulaatoritest, HP-35, ja püüdis mind veenda et selle sees peitub arvuti. Mina kahtlesin selles. Kõik Star Treki arvutid olid toasuurused ning neil olid suured pöörlevad lindiseadmed. Minu arust oli tegemist lihtsalt võlutrikiga, mis pani kalkulaatori klahvivajutuste peale matemaatiliselt õigeid tulemusi näitama (Olin ju vaid kuuene.)

On rusikareegel, et kasutajamudelid ei ole ülemäära keerulised. Kui inimene peab mõistatama, kuidas programm töötab, siis kaldub ta tegema lihtsaid ja mitte keerulisi oletusi.

Võta istet Macintoshi taga. Ava kaks Exceli tabelit ning üks Wordi dokument. Peaaegu kõik algajad arvavad, et need aknad on üksteisest sõltumatud, sest nad näevad välja sõltumatud.

Kasutajamudeli järgi toob klõps tabelil 1 vastava akna esiplaanile. Tegelikult tuuakse esiplaanile aga tabel 2, valmistades ebameeldiva üllatuse peaaegu igaühele:

Selgub, et Microsoft Exceli programmimudelis eksisteerivad nähtamatud lehed, üks iga rakenduse kohta ja aknad on "kleebitud" nendele nähtamatutele lehtedele. Tuues Exceli esiplaanile, liiguvad kõik Exceli aknad esiplaanile.

Seeeelge. Nähtamatud lehed. Milline on tõenäosus, et kasutajamudel sisaldab nähtamatuid lehti? Arvatavasti nullilähedane. Niisiis on uute kasutajate üllatumine garanteeritud.

Teine näide Microsoft Windowsi maailmast on Alt+Tab klahvikombinatsioon, mis lülitab ümber "järgmisesse" aknasse. Enamik kasutajaid arvab tõenäoliselt, et tegemist on lihtsa tsükliga üle olemasolevate akende. Kui on avatud aknad A, B ja C ning A on aktiivne, siis Alt+Tab peaks viima B-sse ning järgmine Alt+Tab C-sse. Tegelikult aga viib teine Alt+Tab tagasi A-sse. Ainus viis C-ni jõuda on hoida Alt-klahvi all ning vajutada Tab-klahvi kaks korda. Alt+Tab on mugav viis kahe rakenduse vahel edasi-tagasi käimiseks, kuid peaaegu mitte keegi ei tule ise selle peale, sest tegemist on veidi keerukama mudeliga, kui seda on lihtne tsükkel üle olemasolevate akende.

Juba lihtsate mudelite puhul on küllalt raske programmi ja kasutaja mudeleid kokku viia. Kui mudelid lähevad keerukamaks, väheneb õnnestumise võimalikkus veelgi. Niisiis vali lihtsaim võimalik mudel.



> 3. peatükk

Artikli algupärane nimi inglise keeles on User Interface Design for Programmers Chapter 2: Figuring Out What They Expected  

Joel Spolsky on Fog Creek Software asutaja. See on väike tarkvarakompanii New York Citys. Ta on lõpetanud Yale'i ülikooli ja töötanud programmeerija ning juhina Microsoftis, Viacomis ja Junos.


Need leheküljed esitavad üksikisiku seisukohti.
Kogu sisu Copyright ©1999-2005 Joel Spolsky. Kõik õigused reserveeritud.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky