主要原則
如果你不懂得好的用戶界面的設(shè)計(jì),你不可能夠設(shè)計(jì)出更有用的程序。讓兩個(gè)程序員來(lái)考慮同樣的一個(gè)用戶界面,將會(huì)產(chǎn)生一場(chǎng)爭(zhēng)論。每一個(gè)人都會(huì)有自己的觀點(diǎn)和看法。但是真正的關(guān)鍵是什么在起作用。因?yàn)槿狈陀^的測(cè)試,我們不得不依賴于良好的人機(jī)對(duì)話的通用原則。Jacob Neilsen將其歸納為10條清晰顯著的啟發(fā)式。從我們以往與開(kāi)發(fā)者工作的經(jīng)驗(yàn)中我們發(fā)現(xiàn)以下的基本原則是易于學(xué)習(xí)和易于應(yīng)用到實(shí)際設(shè)計(jì)決策中的。其中有五項(xiàng)(原則)被非??鋸埖姆Q為可用性規(guī)則的指標(biāo);它們?yōu)楹玫挠脩艚缑嫣峁┝艘粋€(gè)框架以及通用的對(duì)象。其它六項(xiàng)(原則)則涵蓋了好的用戶界面的特殊方面的準(zhǔn)則。 牢記這些主要的準(zhǔn)則并不能保證一個(gè)好的用戶界面,但是在已發(fā)布的原則的基礎(chǔ)上作出的決策將提高這種可能性。一個(gè)觀念是:在一條或更多的已被驗(yàn)證的準(zhǔn)則上而不是在個(gè)人觀點(diǎn)和看法的基礎(chǔ)上謹(jǐn)慎且自覺(jué)的做出用戶界面設(shè)計(jì)決策。這當(dāng)然不可能涵蓋所有事情;甚至藝術(shù)和美學(xué)也沒(méi)有被提及。一個(gè)好的用戶界面常有圖形的優(yōu)美和可視化的要求。但換句話說(shuō),在將美學(xué)放在必要用途之前考慮是一種普遍的錯(cuò)誤,這將導(dǎo)致產(chǎn)生一個(gè)漂亮卻難以使用的用戶界面。 第一條準(zhǔn)則:可用:一個(gè)好的系統(tǒng)應(yīng)該不需要任何幫助和指導(dǎo),就能被那些具有系統(tǒng)所涉及領(lǐng)域的經(jīng)驗(yàn)和知識(shí)卻對(duì)該系統(tǒng)沒(méi)有經(jīng)驗(yàn)的用戶使用。 第二條準(zhǔn)則:效率:一個(gè)好的系統(tǒng)不會(huì)干預(yù)或中斷那些對(duì)系統(tǒng)有豐富經(jīng)驗(yàn)的熟練用戶的高效使用。 第三條準(zhǔn)則:漸進(jìn):一個(gè)好的系統(tǒng)在用戶漸漸獲取系統(tǒng)使用經(jīng)驗(yàn)的同時(shí),在知識(shí),技能,易用性以及適應(yīng)性上有相應(yīng)的持續(xù)改進(jìn)。 第四條準(zhǔn)則:支持:一個(gè)好的系統(tǒng)能設(shè)法幫助用戶輕松,簡(jiǎn)單,快速而且有趣味地完成任務(wù)。 第五條準(zhǔn)則:環(huán)境:一個(gè)好的系統(tǒng)可以適應(yīng)于實(shí)際配置的環(huán)境中的條件和情況。 結(jié)構(gòu)原則:使用有意義且有用的方法,在用戶所能清楚了解的簡(jiǎn)明一致的模型中,將有關(guān)聯(lián)的事物合并,把無(wú)關(guān)聯(lián)的事物分離,以此來(lái)有意識(shí)地組織用戶界面。 簡(jiǎn)單化原則:使簡(jiǎn)單通用的任務(wù)易于執(zhí)行, 用用戶自己的語(yǔ)言直接溝通,并為長(zhǎng)的操作過(guò)程提供好的快捷方式。 可視化原則:保持所有需要的選項(xiàng)和材料可視,并避免讓一些外部的或是多余的信息來(lái)分散用戶的注意力。和WYSIWYG(所見(jiàn)即所得)相比,我們提倡WYSIWYN:What-You-See-Is-What-You-Need. 復(fù)用原則:通過(guò)使用外部或內(nèi)部的組件或行為來(lái)減少用戶的再記憶或再思考,保持和目標(biāo)一致性更勝于僅僅武斷而得的一致。 反饋原則:使用對(duì)于用戶而言簡(jiǎn)明、清晰的語(yǔ)言及時(shí)向用戶告知:行動(dòng)和解釋、條件和狀態(tài)的改變以及錯(cuò)誤或例外。 容錯(cuò)原則:靈活和寬容。通過(guò)容許不同的輸入和順序,和合理地解釋清楚合理的行為,來(lái)避免可能的錯(cuò)誤;利用“重復(fù)”(redo)和撤銷(undo)來(lái)降低錯(cuò)誤或誤用的代價(jià)。 基本用例有點(diǎn)象場(chǎng)景,也許更像它們所基于的用例。最好是通過(guò)例子來(lái)區(qū)分場(chǎng)景、用例和基本用例。場(chǎng)景是對(duì)一次非常明確的交互的具體描述。例如,一個(gè)用戶撥打計(jì)算機(jī)控制的幫助熱線的場(chǎng)景: Ian Smith在凌晨4點(diǎn)撥通了TechnoTech的支持熱線,他聽(tīng)到了要求輸入用戶ID的提示。于是他在電話鍵盤上鍵入17682002,此后他聽(tīng)到了TechnoTech的產(chǎn)品線的菜單。 不會(huì)有人建議專門為一個(gè)通宵工作的名叫Ian Smith的人設(shè)計(jì)一個(gè)系統(tǒng),但是也很難判斷如何從這樣的場(chǎng)景中獲得通用的案例,以及這樣的一個(gè)具體例子當(dāng)中又包含有什么不必要的細(xì)節(jié)。 用例是一種通用的場(chǎng)景,它描述與特定用戶界面的一種類型的交互。TechnoTech的用例為: 用戶撥通支持熱線并聽(tīng)到登錄的提示。之后用戶鍵入用戶ID號(hào)聽(tīng)到菜單。 用例假定了一個(gè)特殊的用戶界面,在該事件中有一個(gè)供聲音輸出及數(shù)字鍵入的電話機(jī)。在這個(gè)用例中還隱含了一個(gè)用戶界面的假設(shè)。用戶通過(guò)在電話按鍵上鍵入的用戶ID號(hào)來(lái)鑒別他們的身份,選項(xiàng)被指定為聲音菜單。 基本用例是一種用于表示抽象交互的廣義的理想化的用例。在這個(gè)例子當(dāng)中它可以用以下的形式表示: 調(diào)用幫助熱線;鑒別自身;選擇幫助。 換句話說(shuō),場(chǎng)景、用例、基本用例表示了抽象、理想化、一般化的繼承關(guān)系?;居美缓?jiǎn)化到交互的最小化極點(diǎn)。如果我們仔細(xì)的設(shè)計(jì)一個(gè)用戶界面并使其最接近基本用例。我們會(huì)很幸運(yùn)的設(shè)計(jì)出最小而且最易于使用的系統(tǒng)。無(wú)論如何,我們要保證始終關(guān)注如何真正的滿足用戶的需求。 真正的應(yīng)用系統(tǒng)包含了很多相互關(guān)聯(lián)的基本用例。一個(gè)用例也許就是另一個(gè)用例的特例。例如,在遠(yuǎn)程銀行應(yīng)用系統(tǒng)中獲取存款余額(GettingSavingBalance)就是查詢帳戶(QueryingAccount)的特例或是子集。一些基本用戶案例也許作為附屬進(jìn)程依附于其他用戶案例。例如在一個(gè)制圖工具當(dāng)中,做標(biāo)記(Labeling)就作為一個(gè)設(shè)置員工職位(InsertingStaffPosition)的附屬進(jìn)程。另一個(gè)非常有用的關(guān)系就是由Jacobson提出的擴(kuò)展(extension)。擴(kuò)展是在其他用例進(jìn)行期間插入,用于表示一種選擇或是例外,或是變更交互的一種用例。在一個(gè)往文檔中插入特殊符號(hào)的工具中,瀏覽符號(hào)(BrowsingSymbols)可能是插入符號(hào)(InsertingSymbol)的一個(gè)擴(kuò)展。在用戶看不到他們需要的符號(hào)時(shí)將用到瀏覽符號(hào)(BrowsingSymbols)。擴(kuò)展,特殊化和次要性(?)使我們能夠更縝密的描述應(yīng)用程序的完整結(jié)構(gòu),因?yàn)槲覀儾恍枰貜?fù)的寫(xiě)入或者拷貝同樣的用例。它們還使我們明白用例之間如何關(guān)聯(lián),由此我們可以組織用戶界面的架構(gòu)。有時(shí)在一個(gè)項(xiàng)目開(kāi)始階段我們不能很好的了解特定用例之間的關(guān)系,但是我們可以認(rèn)為他們有著共同的一些特性。 Role me over 做筆記,這是一次測(cè)驗(yàn) 可用性測(cè)試是制作更好的軟件的重要部分。只有客觀的測(cè)試才能最終解決關(guān)于什么可以工作什么不能工作等并不清晰的問(wèn)題。精心構(gòu)造的測(cè)試也能夠揭露沒(méi)有設(shè)計(jì)方針可以覆蓋和沒(méi)有專家檢查能識(shí)別的可用性的問(wèn)題??捎眯詼y(cè)試有許多變體,但其主題是簡(jiǎn)單的:你使用戶或是有效的替身在一些版本的軟件前就坐并觀察他們?cè)囉谩D阕屗麄兂掷m(xù)去做,嘗試,然后通過(guò)你觀察分析所得到的就是什么會(huì)使系統(tǒng)更有趣,有時(shí),更昂貴。有效的做法就是建立一個(gè)可用性測(cè)試的實(shí)驗(yàn)室,用成排的計(jì)算機(jī)和聲視頻設(shè)備裝備起來(lái),再配備上心理學(xué)家,技術(shù)人員和人機(jī)交互專家。這將使你可以向用戶以及工業(yè)分析員指出可視化體系來(lái)證明你對(duì)于軟件的可用性的最高優(yōu)先權(quán)的承諾。 現(xiàn)場(chǎng)測(cè)試(Field testing)是可用性測(cè)試的貧窮的姊妹。它沒(méi)有明亮的實(shí)驗(yàn)室供相片成冊(cè),所有需要的設(shè)備僅是筆記本和鉛筆。從另一方面,低預(yù)算的現(xiàn)場(chǎng)測(cè)試也有一個(gè)優(yōu)點(diǎn),就是它著眼于人們?cè)谄胀ㄑb備的工作環(huán)境下進(jìn)行真實(shí)的操作時(shí)要做些什么。這并不令人驚奇,當(dāng)技術(shù)人員走出他們的辦公室進(jìn)入到實(shí)驗(yàn)室時(shí),傾向于以不同方式來(lái)思考和行動(dòng)。測(cè)試并不能解決軟件可用性的問(wèn)題,因?yàn)闇y(cè)試來(lái)得太晚。正如他們?cè)谡w質(zhì)量管理中提及的,你不能有測(cè)試質(zhì)量的方式。在促成錯(cuò)誤,然后發(fā)現(xiàn)它,之后設(shè)計(jì)補(bǔ)丁或是其它工作上已花費(fèi)了太多。一開(kāi)始就正確地設(shè)計(jì)和構(gòu)造它或很早就發(fā)現(xiàn)錯(cuò)誤將是更經(jīng)濟(jì)的。如果不是這樣,就算是擁有成千上萬(wàn)的beta測(cè)試員的大量的測(cè)試程序也不能發(fā)現(xiàn)足夠的錯(cuò)誤。通過(guò)測(cè)試得到的大量的模糊的不足將被不確定的終止,因?yàn)闆](méi)有人知道如何去修正他們或是問(wèn)題已經(jīng)深入以及密切的嵌到在軟件的體系結(jié)構(gòu)當(dāng)中。你可以利用可用性測(cè)試來(lái)協(xié)調(diào)好有爭(zhēng)議的特征,或者解決關(guān)于改變方法的途徑的爭(zhēng)論,備份大塊的硬數(shù)據(jù)或大膽的證明新的偏差是正確的,但是你別指望能測(cè)試出真正有用的軟件的方法。 通常基本用例可以由那些幫助我們將思考的焦點(diǎn)由用戶轉(zhuǎn)向使用的抽象模型中衍生而來(lái)。用戶通過(guò)不同的角色與系統(tǒng)交互。角色是一種用戶和系統(tǒng)間的抽象關(guān)系。正如軟件方法論學(xué)者Rebecca Wirfs-Brock所提出的,它是共同興趣、行為模式、和期望的集合。 再次思考在線電話目錄應(yīng)用程序。許多用戶僅用中等頻率訪問(wèn)這個(gè)系統(tǒng),通常是要尋找單個(gè)的電話號(hào)碼。這些用戶用我們稱之為偶然用戶(Casual Caller)的角色進(jìn)行交互。通常他們都確切的知道他們需要什么,但是偶爾也只是有一些模糊的、大概的想法或是部分的信息。另一類用戶則是大量地訪問(wèn)系統(tǒng),經(jīng)常要和在一個(gè)特定的集合或組里的一系列的人聯(lián)系。例如一個(gè)特殊職能的小組,或是所有的產(chǎn)品經(jīng)理。公關(guān)助理(Social Coordinator)角色可供秘書(shū)、委員會(huì)主席或是意圖組織一個(gè)排球隊(duì)的程序員使用。然而另外一個(gè)角色是目錄管理員(Directory Administrator),可以供那些有機(jī)會(huì)可能向系統(tǒng)加入條目、對(duì)系統(tǒng)進(jìn)行定義或?qū)M重新排列、更改電話號(hào)碼的人使用。不同的用例用于支持不同的用戶角色。例如,為了支持偶然用戶角色我們需要開(kāi)發(fā)一個(gè)用于查找一個(gè)名字或方位不確定的人的電話號(hào)碼的用例。我們把這個(gè)用例稱為尋找她(GettingWhatsHerFace): 用戶目的 系統(tǒng)反應(yīng) 這是我知道的 顯示找到的信息 『繼續(xù)直至滿意』 離開(kāi) “我知道的”可能包括姓的第一個(gè)字母加上部門名字,可能還是對(duì)姓的拼寫(xiě)的猜測(cè)或是電話號(hào)碼的區(qū)號(hào)。 這個(gè)用例可以被另一個(gè)可選用例撥號(hào)(DialingNumber)擴(kuò)展: 用戶目的 系統(tǒng)反應(yīng) 給我這個(gè) 撥號(hào)碼 將撥號(hào)作為一個(gè)擴(kuò)展分離出來(lái)的好處是可以把它作為其它用例的擴(kuò)展。當(dāng)以目錄管理員角色創(chuàng)建新的條目時(shí),撥打該號(hào)碼檢查是否有效,或者查找已知道確切名字的人時(shí),這個(gè)用例都是有用的。 在上下文中 用戶角色和基本用戶案例幫助我們了解用戶想做什么以及系統(tǒng)需要為用戶做到什么,但是并不能告訴我們用戶界面上應(yīng)該有什么以及如何組織。我們可能經(jīng)常直接從用戶案例中獲得用戶界面原型,但是通常需要跨越一個(gè)很大的鴻溝。 這有助于我們?cè)诓贿^(guò)多顧慮到外觀或者是UI小部件的準(zhǔn)確形狀或選擇的情況下考慮為了支持特定用例而必須放置在用戶界面上的部件。我們需要一個(gè)抽象模型以便更容易探索幾條不同途徑來(lái)使得在不必詳細(xì)構(gòu)造及設(shè)計(jì)的情況下就可以組織用戶界面架構(gòu),這就是內(nèi)容模型(content model)。(我們采用Contextual Inquiry中的工作環(huán)境模型的想法,Contextual Inquiry是由Karen Holtzblatt和Hugh Beyer開(kāi)發(fā)的定義需求的方法) 內(nèi)容模型是一種對(duì)工具和物品,控件和容器的抽象化表示,一個(gè)用戶界面需要根據(jù)不同的用戶角色來(lái)向用戶提供一種對(duì)一個(gè)或幾個(gè)用例的支持。我們需要一些簡(jiǎn)單的形狀――長(zhǎng)方形或橢圓形――來(lái)表示這些抽象工具。即時(shí)貼可以很好的滿足這個(gè)需要,因?yàn)樗鼈円子谝苿?dòng)并且有著普遍的外觀來(lái)使我們關(guān)注本質(zhì)而不是用戶界面小部件外觀或性能上的細(xì)節(jié)。 例如,為了支持基本用例尋找她(GettingWhatsHerFace)和撥號(hào)(DialingNumber),我們可能在一開(kāi)始就要定義一些我們認(rèn)為用戶在實(shí)施以下這些相關(guān)用例時(shí)所需要的工具和物品。 工具/控件 數(shù)字選擇器 撥號(hào)器 組選擇器 物品/容器 名字容器 找到的人信息的文件夾 這些最終可能會(huì)象圖2那樣排列。注意我們已經(jīng)開(kāi)始加入一些關(guān)于行為甚至是實(shí)現(xiàn)符號(hào)的想法。使用上下文模型有點(diǎn)象被我們說(shuō)的低保真模型。它不怎么象真的屏幕布局或是對(duì)話框設(shè)計(jì),但是它需要一些基本元素來(lái)支持基本用例。 深入研究 基本知識(shí) 如果你想要學(xué)習(xí)可以迎合你的用戶的基本需求的軟件工程知識(shí),看一看這些資料,首先從學(xué)習(xí)Larry的文章:“基本建模:用于用戶界面的用戶案例”(Essential Modeling: Use Cases for User Interface)( ACM Interaction April 1995)以及“圖形導(dǎo)航”(Graphical Navigation)(Windows Tech Journal ,August 1994)開(kāi)始。很多關(guān)于可用性的期刊包括在Constantine on Peopleware(Prentice Hall, 1995)和Jacob Nielson的Usability Engineering (Academic Press, 1993)中。更多關(guān)于用例的書(shū)籍,可以查閱Ivar Jacobson 的基于對(duì)象的軟件工程(Object-Oriented Software Engineering)(Addison-Wesley,1992)和lane Graham的遷移至對(duì)象技術(shù)(Migrating to Object Technology)(Addison-Wesley,1994)。關(guān)于基本建模的經(jīng)典資料依舊是Steve McMenamin和John Palmer的基本系統(tǒng)分析(Essential System Analysis)(Prentice Hall,1984)。 在更復(fù)雜的設(shè)計(jì)中,當(dāng)我們要實(shí)現(xiàn)不同的用例時(shí),需要仔細(xì)地考慮在對(duì)話框之間、屏幕之間的用戶導(dǎo)航。為此我們需要一張導(dǎo)航圖來(lái)在上下文交互中鏈接用戶導(dǎo)航到交互序列當(dāng)中。導(dǎo)航圖包括一些表示交互場(chǎng)景的標(biāo)記符號(hào),和連接他們的標(biāo)記有轉(zhuǎn)換狀態(tài)的線條。例如,在線電話目錄需要支持由用戶維護(hù)的個(gè)人列表以及集中的整體列表。如果一個(gè)用戶需要編輯整體數(shù)據(jù)庫(kù)中某個(gè)列表中的一個(gè)域,那么授權(quán)機(jī)制將檢驗(yàn)他的權(quán)限。這些我們可以在圖3的導(dǎo)航圖中看到。 從用戶到用戶界面 所有這些抽象建模的目的就是為了獲得密切接近用戶所試圖完成的工作的本質(zhì)的用戶界面架構(gòu)設(shè)計(jì)。詳細(xì)的模型和導(dǎo)航圖將作為用戶界面原型的粗略的向?qū)?。但是依然有很多工作要做,還有很大的空間留給有創(chuàng)意的圖形設(shè)計(jì)和明智的軟件工程。圖4給出了明顯未完工的在線電話目錄應(yīng)用的最初紙上原型。在這個(gè)版本中,通過(guò)微調(diào)基本用例來(lái)實(shí)現(xiàn)對(duì)FindingWhatherFace快速靈活的支持。隨著用戶的鍵入,系統(tǒng)的不斷進(jìn)行搜索,在下面的帶有可編輯區(qū)域的行的數(shù)據(jù)表格不斷挖掘。一旦根據(jù)用戶填入搜索域的數(shù)據(jù)使得搜索范圍有效的縮小,只要簡(jiǎn)單的雙擊所要的數(shù)字或者選擇了數(shù)字后再點(diǎn)擊撥號(hào)按鈕就可以進(jìn)行撥號(hào)。 焦點(diǎn)放在目標(biāo)和本質(zhì)上,以整個(gè)流程的使用為中心。如果不用這種方法,最終的屏幕草圖或是紙上原型看上去可能是有據(jù)可依的,但結(jié)果常常是令人驚奇的難以使用。如同圖5中的設(shè)計(jì),使用了常用的控件和重疊的對(duì)話框,這是一種典型的學(xué)生式解決方案,但甚至也出現(xiàn)在一些管理個(gè)人信息的商業(yè)產(chǎn)品當(dāng)中,直到你真正使用它時(shí)才能發(fā)現(xiàn)毛病。 盡管這些對(duì)于基本用例建模的概述使它看上去是象一個(gè)相當(dāng)線性和嚴(yán)格的過(guò)程,實(shí)踐中我們常常發(fā)現(xiàn)自己可以從柱子跳到即時(shí)貼。整個(gè)過(guò)程在圖6中進(jìn)行了描述。對(duì)于電話目錄應(yīng)用系統(tǒng),我們始于一個(gè)單一視圖的想法,把數(shù)據(jù)庫(kù)分成兩部分,個(gè)人列表存放在每臺(tái)PC上,整體列表放在服務(wù)器上。這確實(shí)是一個(gè)內(nèi)部應(yīng)用軟件的設(shè)計(jì)決策。我們可能會(huì)有一個(gè)極具靈感的用于撥號(hào)按鈕的圖標(biāo)的想法,一個(gè)真實(shí)的用戶界面原型的細(xì)節(jié)。在我們寫(xiě)出支持DirectoryAdministrator的基本用例之前,我們也許嘗試了所有的方式來(lái)產(chǎn)生用于FindingHerFace的上下文。只有這時(shí)我們才開(kāi)始完成導(dǎo)航圖。 換句話說(shuō),這個(gè)策略確實(shí)是一個(gè)靈活的并行建模過(guò)程。所有的基本建模和用戶界面原型對(duì)于交付使用都是極其重要的,但是他們不需要一個(gè)很嚴(yán)格的開(kāi)發(fā)順序。目標(biāo)是跟隨工作流程,以任何一種可以方便地構(gòu)筑出簡(jiǎn)明而有活力的用戶界面架構(gòu)的方式來(lái)工作。 |
|
來(lái)自: 蕭蕭北風(fēng) > 《可用性》