當(dāng)一個新用戶坐下使用你的軟件,他們對于軟件的認識并不是一片空白。他們對于程序應(yīng)該怎么工作有自己的預(yù)期。如果他們以前用過相似的軟件,他們就會認為這個軟件也將那樣工作。如果他們以前用過任何軟件,他們會認為你的軟件應(yīng)該會符合一些通常的慣例。他們也會聰明的猜出這些UI將會怎么工作。這叫做用戶模型:他們對于程序做什么的心理理解。
程序也有"心理模型"只是以位的形式編碼并且會被CPU忠實地執(zhí)行。這個叫做程序模型,這就是定律。我們從第一章知道,如果程序模型與用戶模型相符合,你就有了一個成功的用戶界面。
我們來看一個例子。微軟的Word(和大多數(shù)文字編輯器),當(dāng)你把圖片放進你的文檔里,那個圖片實際上被嵌入進同一個文件中。我可以創(chuàng)建圖片,拉進文檔,然后刪除原來的圖片文件,當(dāng)時那張圖片還是會保留在文檔中。
現(xiàn)在,HTML不能讓你這么做。HTML文檔必須和他們的圖片分開存儲。如果你有一個會使用文字編輯器的用戶,但是完全不知道HTML,他坐在一個所見即所得的HTML編輯器前,類似FrontPage,他們就會想當(dāng)然的認為圖片會被存進那個文件中。把這個叫做用戶模型惰性。
因此我們的用戶模型(圖片會嵌入到文件中)和程序模型(圖片必須分開存儲)有了一場不愉快的沖突,而且UI必定會引起問題。
如果你要設(shè)計一個類似FrontPage的程序,你會發(fā)現(xiàn)你的第一個UI難題。你不能改變HTML。必須想辦法協(xié)調(diào)程序模型和用戶模型。
你有兩個選擇。你可以改變用戶模型。這已經(jīng)被證明非常困難。你可以在用戶手冊上解釋,但是地球人都知道用戶不會去讀用戶手冊,而且他們并不是必須去看。你可以彈出一個對話框解釋圖片文件并不會嵌入進文件,但是這里會有兩個問題:這樣會使熟練的用戶惱怒,而且用戶也不會去看對話框(我們會在第六章詳細說明)
那么,既然改變不了世界那我們就...你最好的選擇就是改變程序模型,而不是用戶模型。也許當(dāng)他們插入圖片的時候,你可以把那張圖片復(fù)制進文檔文件的子目錄里,這樣至少你可以用戶的想法一樣,圖片已經(jīng)被復(fù)制了(而且原始圖片可以安全的刪除)
我怎么知道用戶模型是怎么樣的?
這個被證明是相對簡單的。只要詢問他們就行了!從你辦公室,或者朋友,或者家庭成員中隨機挑選5個人,用通用術(shù)語告訴他們你的程序是干什么的("這是一個制作網(wǎng)頁的程序")。然后向他們描述情況:"你在做一個網(wǎng)頁,一個圖片文件Picture.jpg。你把這個圖片插入到網(wǎng)頁中。"然后問他們一些問題以試著猜測用戶模型。"圖片到哪里去了?如果你刪除了Picture.jpg,網(wǎng)頁里的圖片還存在嗎?"
我的一個朋友在做照片專輯的應(yīng)用程序。在你插入照片之后,應(yīng)用程序會向你顯示一組縮略圖:每個圖片產(chǎn)生一個小圖片。生成縮略圖需要很長時間,特別是有很多照片的情況下,因此他想要把縮略圖保存在硬盤的某個地方,這樣縮略圖只需要生成一次。這樣做可以有很多方式。它們可以存儲在一個大的叫Thumbnails 的文件中。它們可以分開存儲在Thumbnails的子目錄中。它們也可以做個隱藏文件,因此用戶就不知道它們了。我的朋友選了一個他認為最佳性價比的方式:把每個圖片picture.jpg的縮略圖picture_t.jpg放在同一個目錄中。如果你做一個有30張圖片的專輯,當(dāng)你這么做了,你的目錄下包括縮略圖就有60個文件。
你可以對各種儲存照片方式的利與弊爭論幾個星期,但還有更科學(xué)的方式。只需要詢問一組用戶他們認為縮略圖存儲到那里了。當(dāng)然,他們中很多人不知道也不關(guān)心,或者他們沒有考慮過這個問題,但是如果你問了很多人,你會了解到某種共識。大多數(shù)人的選擇就是最佳的用戶模型,怎么做一個符合的程序模型取決于你。
下一步,你必須測試你的意見。做一個用戶界面的原型,給別人一些任務(wù)。他們通過做任務(wù),問他們認為會發(fā)什么什么。你的目的是總結(jié)出他們什么是他們期待的。如果任務(wù)是"插入圖片,"你會發(fā)現(xiàn)他們會把圖片拖進你的軟件里,你就會意識到最好支持拖放功能。如果他們找插入菜單,你就會意識到最好在插入菜單中有插入圖片選項。如果他們找到字體工具欄,把"Times New Roman"改成"Insert Picture",那么你發(fā)現(xiàn)了還不會使用GUI的原始人,他想要一個文字界面。
測試你的界面需要多少用戶?你的直覺可能是"越多越好,"這在科學(xué)實驗中說得通。但是這個直覺是錯誤的。幾乎所有以可用性測試的為生的人都認為5-6個人足夠了。多于這個,你就會一邊又一遍得看到重復(fù)現(xiàn)象。任何多余的用戶只是浪費時間。
你不需要專業(yè)的可用性測試實驗室,你不需要把用戶隔離起來-你可以做"50美分可用性測試",你可以簡單的抓一個你看到人然后讓他們做一個快速的可用性測試。確定你沒有透漏給他們?nèi)绾巫?。要求他們想到什么說什么而且要問他們開放式的問題以探索他們的心理模型。
如果你的程序模型是特立獨行的,這個可能就不符合用戶模型。
當(dāng)我6歲的時候我爸爸帶回來世界第一個口袋計算器,HP-35,他想讓我相信這里面有一個計算機。我覺得不太可能。星際迷航中所有的計算機都有一個房間那么大而且有盤式磁帶錄音機。我認為這只是按鍵和LED顯示器的各個元素之間的相互關(guān)系產(chǎn)生數(shù)學(xué)上正確的結(jié)果。(嘿,我才6歲)。
有一個重要的經(jīng)驗心得用戶模型通常不會很復(fù)雜。當(dāng)人們不得不猜測程序如何工作的時候,他們傾向于猜測簡單的東西,而不是復(fù)雜的。
坐在一臺Macintosh前。打開兩個Excel文檔和一個Word文檔。幾乎所有的初學(xué)者會猜測窗口都是獨立的。它們看上去是獨立的:
用戶模型說點擊Spreadsheet 1會使它顯示在前面。實際上發(fā)生的情況是Spreadsheet2顯示到了前面,幾乎給了每個人意外的挫折:
實際上是這樣的,Microsoft Excel的程序模型說"你有這些可視化的表格,每一個對應(yīng)一個文檔,且窗口把這些可視化的表格粘在一起。當(dāng)你把Excel顯示在前端,那么Excel中的所有窗口也都移到前端。"
是的??梢暬砀?。用戶模型有多大的幾率包含了可視化表格的概念?大約是零。因此新用戶會對程序的行為但到驚訝。
另外一個來自Microsoft Windows的例子是Alt+Tab這個切換到下一個窗口的組合鍵。大部分的用戶都假設(shè)這個只是簡單的在所有窗口中輪流切換。如果你有窗口A,B和C,激活了A,Alt+Tab會切換到B。在按Alt+Tab會切換到C。實際上會發(fā)生的事情是,第二次按Alt+Tab會切回到A。切換到C的唯一辦法是按住Alt不放,按Tab兩次。對于反復(fù)切換兩個應(yīng)用程序是很好方法,但是沒有人能弄明白,因為這是比輪流切換窗口模型更復(fù)雜的模型。
當(dāng)用戶模型簡單的時候,使程序模型和用戶模型相符合已經(jīng)足夠難了。當(dāng)用戶模型變得復(fù)雜,使兩者相符甚至變得不可能了。因此挑一個盡可能簡單的用戶模型吧。
文章源:CSDN
by Joel Spolsky
Tuesday, April 11, 2000
User Interface Design for Programmers 第二章