11 易用性
任何該死的傻瓜都會(huì)使事情復(fù)雜化般妙,需要一個(gè)天才才能使事情簡(jiǎn)單化阻逮。
——艾爾伯特愛(ài)因斯坦
易用性關(guān)注的是用戶(hù)完成所需任務(wù)的簡(jiǎn)易程度以及系統(tǒng)提供的用戶(hù)支持類(lèi)型。多年來(lái)娩梨,易用性被證明是提高系統(tǒng)質(zhì)量(或者更準(zhǔn)確地說(shuō)我碟,用戶(hù)對(duì)系統(tǒng)質(zhì)量的感受)的最便宜且最簡(jiǎn)單的方法。
易用性由以下幾方面組成:
學(xué)習(xí)系統(tǒng)的特點(diǎn)姚建。如果用戶(hù)并不熟悉特定的系統(tǒng)或者是系統(tǒng)中特定的某部分,系統(tǒng)將如何簡(jiǎn)化系統(tǒng)的學(xué)習(xí)吱殉?這就需要包括提供幫助的功能掸冤。
高效地使用系統(tǒng)。系統(tǒng)將如何使用戶(hù)更高效地操作系統(tǒng)友雳?這可能包括用戶(hù)發(fā)出命令后稿湿,重定向系統(tǒng)的能力。例如押赊,用戶(hù)可能希望暫停一個(gè)任務(wù)饺藤,執(zhí)行其他多項(xiàng)操作,然后再恢復(fù)該任務(wù)流礁。
最小化錯(cuò)誤的影響涕俗。系統(tǒng)如何使產(chǎn)生的用戶(hù)錯(cuò)誤影響最小神帅?例如再姑,用戶(hù)可能希望取消發(fā)出的不正確指令。
調(diào)整系統(tǒng)以適應(yīng)用戶(hù)需求找御。用戶(hù)(或者系統(tǒng)本身)如何使用戶(hù)的任務(wù)更容易元镀?例如,系統(tǒng)可以根據(jù)用戶(hù)的過(guò)去的訪問(wèn)紀(jì)錄自動(dòng)填寫(xiě)URL霎桅。
增加信心和滿意度栖疑。系統(tǒng)如何使用戶(hù)確信正在執(zhí)行正確的操作?例如滔驶,提供表明系統(tǒng)正在執(zhí)行一個(gè)長(zhǎng)時(shí)間運(yùn)行的任務(wù)以及任務(wù)的完成程度的反饋可以增加用戶(hù)對(duì)系統(tǒng)的信心遇革。
11.1易用性一般情況
易用性一般情況構(gòu)成概括如下:
刺激源。最終用戶(hù)(可能是一個(gè)特定的角色瓜浸,比如一個(gè)系統(tǒng)或者網(wǎng)絡(luò)管理員)通常是易用性的刺激源澳淑。
刺激。刺激是由于最終用戶(hù)希望高效地使用系統(tǒng)插佛,學(xué)會(huì)使用系統(tǒng)杠巡,最大限度地減少錯(cuò)誤的影響,適應(yīng)系統(tǒng)雇寇,或者配置系統(tǒng)產(chǎn)生的氢拥。
環(huán)境蚌铜。使易用性關(guān)注于系統(tǒng)運(yùn)行時(shí)間或者配置時(shí)間的用戶(hù)操作平臺(tái)拘荡。
產(chǎn)品漾根。產(chǎn)品是與用戶(hù)進(jìn)行交互的系統(tǒng)或者系統(tǒng)的一特定部分。
響應(yīng)募寨。系統(tǒng)應(yīng)提供用戶(hù)所需的功能叁怪,或預(yù)執(zhí)行用戶(hù)的需求审葬。
*響應(yīng)估量。響應(yīng)通過(guò)任務(wù)時(shí)間奕谭、錯(cuò)誤數(shù)量涣觉、完成任務(wù)數(shù)量、用戶(hù)滿意度血柳、用戶(hù)掌握度官册、成功操作的比率、錯(cuò)誤產(chǎn)生后浪費(fèi)的時(shí)間長(zhǎng)短和丟失的數(shù)據(jù)多少难捌。
表11.1列出了描述易用性的一般情況的相關(guān)術(shù)語(yǔ)膝宁。
圖11.1給出了一個(gè)使用表11.1生成的具體的易用性情況的例子:用戶(hù)下載了一個(gè)新的應(yīng)用并在兩分鐘后的實(shí)驗(yàn)后對(duì)其進(jìn)行有效的使用。
11.2易用性的策略
回憶一下根吁,易用性關(guān)注的是用戶(hù)完成所需任務(wù)的容易程度和系統(tǒng)提供的支持類(lèi)型员淫。人際交互的研究人員們已經(jīng)用過(guò)術(shù)語(yǔ)用戶(hù)主動(dòng),系統(tǒng)主動(dòng)和混合主動(dòng)來(lái)描述人機(jī)交互中哪一方在執(zhí)行特定的動(dòng)作時(shí)占主動(dòng)地位击敌,以及交互如何進(jìn)行满粗。易用性場(chǎng)景可以將雙發(fā)的主動(dòng)性結(jié)合起來(lái)。比如愚争,當(dāng)取消一個(gè)命令時(shí)映皆,用戶(hù)發(fā)出一個(gè)取消指令——用戶(hù)主動(dòng)——然后系統(tǒng)應(yīng)答。在取消的過(guò)程中轰枝,無(wú)論如何捅彻,系統(tǒng)可能提出一個(gè)進(jìn)行指令——系統(tǒng)主動(dòng)。因此鞍陨,取消操作可以作為混合主動(dòng)的示例步淹。我們運(yùn)用用戶(hù)和系統(tǒng)主動(dòng)之間的差別來(lái)討論架構(gòu)師用來(lái)實(shí)現(xiàn)不同易用性場(chǎng)景的策略。
圖11.2展示了一系列運(yùn)行時(shí)易用性策略的目標(biāo)诚撵。
分離用戶(hù)界面缭裆!
通過(guò)快速構(gòu)建產(chǎn)品原型以使用戶(hù)界面的實(shí)驗(yàn)更快捷,是一個(gè)架構(gòu)師能做的使系統(tǒng)更加易用的最有幫助的事情之一寿烟。構(gòu)建一個(gè)產(chǎn)品原型澈驼,或者一些原型,讓真實(shí)的用戶(hù)體驗(yàn)用戶(hù)界面并給出反饋筛武,會(huì)得到巨大的意外收獲缝其。做到這一點(diǎn)最好的方法就是設(shè)計(jì)能夠快速改變用戶(hù)界面的軟件挎塌。
我們?cè)诘?章看到的可修改性策略完美地支持這一目標(biāo),特別是以下這些:
- 增強(qiáng)語(yǔ)意連貫内边,封裝和共同分配相關(guān)責(zé)任榴都,將用戶(hù)界面的責(zé)任集中于一處。
- 限制依賴(lài)漠其,以最小化改變用戶(hù)界面時(shí)的連鎖反應(yīng)嘴高。
- 推遲綁定,讓你在做出關(guān)于用戶(hù)界面的關(guān)鍵決定時(shí)不用重新編程和屎。
推遲綁定在這里非常有幫助阳惹,因?yàn)槟憧梢灶A(yù)料到你的產(chǎn)品的用戶(hù)界面將會(huì)在測(cè)試甚至在其進(jìn)入市場(chǎng)之后面臨修改的壓力。
用戶(hù)界面生成工具與以下策略是一致的眶俩;大部分產(chǎn)生一個(gè)單一的模塊,該模塊有一個(gè)抽象的接口以連接軟件的其余部分快鱼。大部分提供在編譯后仍能改變用戶(hù)界面的能力颠印。你可以根據(jù)生成模塊的依賴(lài)約束來(lái)完成你的工作部分,然后你需要決定采用不同的工具抹竹。
不同的用戶(hù)界面分離模式的工作發(fā)生在1980年和1990年线罕。隨著網(wǎng)絡(luò)和模型—視圖-控制器這種現(xiàn)代化反映網(wǎng)絡(luò)接口的模式的出現(xiàn),MVC已經(jīng)成為了占主導(dǎo)地位的分離模式∏耘校現(xiàn)在 MVC 模式被內(nèi)置于多種不同的框架中钞楼。(詳見(jiàn)第 14 章中對(duì) MVC 的討論。)MVC 讓提供多種數(shù)據(jù)視圖袄琳,支持用戶(hù)主動(dòng)更加簡(jiǎn)單询件,像我們下面要討論的那樣。
許多時(shí)候唆樊,質(zhì)量屬性是相互矛盾的宛琅。易用性和可修改性,恰恰相反逗旁,總是相得益彰嘿辟,因?yàn)樽屢粋€(gè)系統(tǒng)更加易用的方法是讓它容易修改。無(wú)論如何片效,也并不總是這樣红伦。在許多系統(tǒng)中,業(yè)務(wù)規(guī)則驅(qū)動(dòng)用戶(hù)界面——比如淀衣,指定如何驗(yàn)證輸入昙读。為了實(shí)現(xiàn)這一驗(yàn)證,用戶(hù)界面可能需要調(diào)用服務(wù)器(對(duì)性能可能造成負(fù)面影響)膨桥。為了消除這一負(fù)面影響箕戳,架構(gòu)師可能選擇在客戶(hù)端和服務(wù)端復(fù)制這些規(guī)則某残,這就會(huì)給升級(jí)帶來(lái)困難。哎呀陵吸,架構(gòu)師的生活從來(lái)都不容易玻墅!
易用性和可修改性的實(shí)現(xiàn)之間是有聯(lián)系的。用戶(hù)界面設(shè)計(jì)過(guò)程由生成用戶(hù)界面和之后的測(cè)試用戶(hù)界面設(shè)計(jì)組成壮虫。修正設(shè)計(jì)中的不足澳厢,并反復(fù)重復(fù)上述過(guò)程。如果用戶(hù)界面已經(jīng)被構(gòu)建成了系統(tǒng)的一部分囚似,系統(tǒng)必須被修改以反映最新的設(shè)計(jì)剩拢。這就是易用性與可修改性之間的連接。這種連接導(dǎo)致了支持用戶(hù)界面設(shè)計(jì)的標(biāo)準(zhǔn)模式(比如側(cè)邊欄)饶唤。
支持用戶(hù)主動(dòng)
當(dāng)系統(tǒng)正在被執(zhí)行時(shí)徐伐,通過(guò)給用戶(hù)系統(tǒng)正在做什么的反饋和通過(guò)允許用戶(hù)做出合適響應(yīng)能增強(qiáng)易用性。比如募狂,下面要描述的策略:取消办素,撤銷(xiāo),暫停/繼續(xù)祸穷,以及聚合——支持用戶(hù)改正錯(cuò)誤或者變得更高效性穿。
架構(gòu)師通過(guò)列舉和分配系統(tǒng)責(zé)任來(lái)響應(yīng)用戶(hù)命令來(lái)設(shè)計(jì)針對(duì)用戶(hù)主動(dòng)的響應(yīng)。以下是一些用戶(hù)主動(dòng)的常見(jiàn)示例:
- 取消雷滚。當(dāng)用戶(hù)發(fā)出取消命令時(shí)需曾,系統(tǒng)必須服從(因此,無(wú)論是什么活動(dòng)被取消祈远,都需要一個(gè)恒定的不被屏蔽的監(jiān)聽(tīng)器)呆万;被取消的指令必須終止;任何被取消的指令正在使用的資源在執(zhí)行取消后必須被釋放车份;與被取消指令合作的組建必須被通知桑嘶,以便它們采取合適的操作。
- 撤銷(xiāo)躬充。要支持撤銷(xiāo)的功能逃顶,系統(tǒng)必須擁有足夠數(shù)量的關(guān)于系統(tǒng)狀態(tài)的信息,使一個(gè)早期的狀態(tài)能夠按照用戶(hù)的要求被存儲(chǔ)充甚。這樣的一條紀(jì)錄大概以“快照”的形式存放——舉個(gè)例子以政,檢查點(diǎn)——或者說(shuō)一系列可逆操作。不是所有的操作都很容易逆轉(zhuǎn):比如說(shuō)伴找,將一個(gè)文件中所有出現(xiàn)的字母“a”全部換成字母“b”不能被將所有的“b”替換成“a”逆轉(zhuǎn)盈蛮,因?yàn)橐恍癰”可能是在原始改變之前就存在的。在這種情況下系統(tǒng)必須保存更加詳細(xì)的修改紀(jì)錄技矮。當(dāng)然抖誉,一些操作殊轴,比如響鈴,是不能被撤銷(xiāo)的袒炉。
- 暫停/繼續(xù)旁理。當(dāng)用戶(hù)已經(jīng)開(kāi)始了一個(gè)長(zhǎng)時(shí)間運(yùn)行的操作——比如說(shuō),從某臺(tái)服務(wù)器上下載一個(gè)很大的文件或者一系列文件——提供暫停和繼續(xù)操作通常是有用的我磁。高效地暫停一個(gè)長(zhǎng)時(shí)間運(yùn)行的操作要求暫時(shí)性釋放資源的能力孽文,以便這些資源能夠重新分配給其他的任務(wù)。
- 聚合夺艰。當(dāng)一個(gè)用戶(hù)在進(jìn)行有代表性的操作時(shí)芋哭,或者以同種方式影響很大數(shù)量的對(duì)象的操作,提供將低級(jí)對(duì)象聚合成單個(gè)群組的能力是非常有用的郁副,這樣减牺,操作就能被應(yīng)用到群組,將用戶(hù)從重復(fù)操作的苦活兒(以及潛在的錯(cuò)誤)中解救出來(lái)存谎。比如拔疚,將一張幻燈片的所有對(duì)象聚合起來(lái),將文本字體改成14號(hào)愕贡。
支持系統(tǒng)主動(dòng)
當(dāng)系統(tǒng)占主動(dòng)時(shí),它一定依賴(lài)于用戶(hù)的一個(gè)模型巷屿,用戶(hù)正在進(jìn)行的任務(wù)或者系統(tǒng)狀態(tài)本身固以。每個(gè)模型要求不同種類(lèi)的輸入以完成其主動(dòng)性。支持系統(tǒng)主動(dòng)的策略是識(shí)別系統(tǒng)使用的模型以預(yù)測(cè)其自身行為或者用戶(hù)意圖嘱巾。封裝這些信息可以讓系統(tǒng)更加容易裁減或修改憨琳。在開(kāi)發(fā)過(guò)程中的裁減和修改可以基于過(guò)去用戶(hù)的行為動(dòng)態(tài)地進(jìn)行或者離線進(jìn)行。以下是一些策略:
- 維持任務(wù)模型旬昭。任務(wù)模型被用于決定背景篙螟,于是系統(tǒng)能夠知道用戶(hù)正在嘗試什么,進(jìn)而提供幫助问拘。比如遍略,知道句子以大寫(xiě)字母開(kāi)頭將允許一個(gè)應(yīng)用在該位置將小寫(xiě)的字母糾正。
- 維持用戶(hù)模型骤坐。這個(gè)模型明確地代表了用戶(hù)對(duì)系統(tǒng)的了解绪杏,在預(yù)期時(shí)間內(nèi)的用戶(hù)行為,和其他特別方面的用戶(hù)或某一類(lèi)用戶(hù)纽绍。比如蕾久,維持一個(gè)用戶(hù)模型,以允許系統(tǒng)控制鼠標(biāo)選擇的策略拌夏,這樣當(dāng)需要滾動(dòng)的時(shí)候僧著,不是所有的文件都會(huì)被選中履因。或者一個(gè)模型能夠控制自動(dòng)提供給用戶(hù)幫助和建議的數(shù)量盹愚。這個(gè)策略的一個(gè)特例是總能在用戶(hù)界面中找到用戶(hù)自定義栅迄,在該處用戶(hù)可以明確地修改系統(tǒng)的用戶(hù)模型。
- 維持系統(tǒng)模型杯拐。在這里霞篡,系統(tǒng)維持著自己明確的模型。這被用于確定期待的系統(tǒng)動(dòng)作端逼,從而能給用戶(hù)合適的反饋朗兵。系統(tǒng)模式的通常表現(xiàn)形式是預(yù)測(cè)完成當(dāng)前任務(wù)所需時(shí)間的進(jìn)度條。
圖11.3展示了實(shí)現(xiàn)易用性策略的摘要