概述#
Usability(易用性) 關注的是系統使用者能否有效率地完成任務、從錯誤中恢復、以及對系統的整體滿意度。本章以 使用者主動(user initiative) 與 系統主動(system initiative) 的區分來組織戰術,說明架構師如何從架構層面支撐良好的使用者體驗。
在互動過程中,使用者與系統的主導權常會交替——例如使用者取消一個操作時(使用者主動),系統可能顯示進度指示器(系統主動),因此取消操作實際上可能包含 混合主動(mixed initiative)。
易用性與 可修改性(modifiability) 高度關聯。使用者介面設計本質上是反覆迭代的過程——你幾乎不可能一次就做對。因此架構應被設計為容易迭代 UI,使每次修改的成本盡可能低。這種連結催生了許多支援 UI 設計的標準模式。事實上,要達成良好易用性,你能做的最有幫助的事情之一就是不斷修改系統、從使用者身上學習、並發現改進之處。
易用性的通用情境(General Scenario)#
易用性情境描述了使用者與系統互動時可能出現的各種情況。與其他品質屬性一樣,通用情境提供了一個框架,讓架構師能夠撰寫具體的易用性需求。通用情境的六大要素如下:
| 要素 | 說明 |
|---|---|
| 來源(Source) | 終端使用者(可能擁有特定角色,如系統管理員);或系統接收到的外部事件 |
| 刺激(Stimulus) | 使用者希望:高效使用系統、學習使用方式、最小化錯誤影響、調適或設定系統 |
| 環境(Environment) | 執行期(runtime)或系統設定時(configuration time) |
| 製品(Artifact) | GUI、命令列介面、語音介面、觸控螢幕等 |
| 回應(Response) | 系統應提供所需功能、預測使用者需求、提供適當回饋 |
| 回應度量(Response Measure) | 任務完成時間、錯誤次數、學習時間、成功操作比率、使用者滿意度、錯誤發生時的資料損失量等 |
以下為一個具體情境範例:使用者下載新應用程式後,僅需 2 分鐘實驗即可熟練操作。

Figure 13.1: Sample usability scenario
易用性的戰術(Tactics for Usability)#
易用性戰術的整體目標:當使用者與系統互動時,確保使用者能獲得適當的回饋與協助。

Figure 13.2: The goal of usability tactics
支援使用者主動(Support User Initiative)#
系統執行後,透過回饋讓使用者了解系統正在做什麼,並允許使用者做出適當回應,可以提升易用性。以下戰術支援使用者糾正錯誤或提高效率:
- Cancel(取消):當使用者發出取消指令時,系統必須持續監聽此指令(不被正在執行的動作阻塞);被取消的活動必須終止;相關資源必須釋放;協作元件必須被通知以採取適當行動。
- Undo(復原):系統必須維護足夠的狀態資訊,以便在使用者要求時恢復到先前的狀態。這可以透過狀態快照(checkpoint)或可逆操作記錄來實現。需注意並非所有操作都能輕易逆轉——例如「將文件中所有 a 改為 b」無法簡單地透過「將所有 b 改回 a」來復原,因為部分 b 可能是原本就存在的。某些操作則完全不可逆(如已寄出的包裹、已發射的飛彈)。Undo 有不同層次:有些系統只允許單次復原(再次 undo 等於復原 undo 本身),有些系統則允許多次復原,逐步回到更早的狀態,可能有步數限制,也可能回溯到應用程式上次開啟時。
- Pause/Resume(暫停/繼續):對長時間執行的操作(如大檔案下載),提供暫停與繼續的能力。暫停可暫時釋放資源以供其他任務使用。
- Aggregate(聚合):當使用者對大量物件執行重複操作時,允許將低階物件聚合為群組並對群組套用操作,減少重複勞動與錯誤機率。例如選取投影片中所有物件,統一變更字型大小。
支援系統主動(Support System Initiative)#
當系統採取主動行為時,它依賴 使用者模型、任務模型 或 系統模型 來預測行為或意圖。封裝這些資訊能使其更容易裁切和修改——可以根據使用者過去行為動態調整,也可以在開發階段離線調整。
- Maintain Task Model(維護任務模型):用於判斷上下文,讓系統推測使用者正在嘗試做什麼並提供協助。例如搜尋引擎的 預測輸入(predictive type-ahead) 和郵件客戶端的 拼字校正,都基於任務模型。
- Maintain User Model(維護使用者模型):明確表徵使用者對系統的認知、預期回應時間等使用者特定面向。例如語言學習 App 持續監控使用者易犯錯的領域,並提供額外練習。使用者介面客製化是此戰術的常見特例——使用者可直接修改系統的使用者模型。
- Maintain System Model(維護系統模型):系統維護自身的明確模型,用以預測預期行為並提供適當回饋。最常見的表現形式是 進度條(progress bar),預測當前活動所需時間。

Figure 13.3: Usability tactics
戰術導向問卷(Tactics-Based Questionnaire)#
基於上述戰術,可建立一組檢核問題來快速了解架構對易用性的支援現狀。分析師逐一提問並記錄答案,這些答案可作為後續活動的焦點:文件調查、程式碼分析、逆向工程等。
支援使用者主動:
- 系統是否能監聽並回應 取消 指令?
- 是否可以 復原 最近一次或多次操作?
- 長時間執行的操作是否支援 暫停與繼續?
- 是否可以將 UI 物件 聚合為群組 並對群組執行操作?
支援系統主動:
- 系統是否維護 任務模型?
- 系統是否維護 使用者模型?
- 系統是否維護 自身模型?
這些問題的答案應記錄其支援與否、風險等級、設計決策位置、以及理由與假設,作為後續深入分析(文件調查、程式碼分析、逆向工程等)的起點。
易用性的設計模式(Patterns for Usability)#
本章介紹三個主要模式:Model-View-Controller(MVC)、Observer、Memento。它們主要透過 關注點分離(separation of concerns) 來促進 UI 的反覆設計迭代。除了這些架構模式之外,還有許多 UI 設計層面的模式(如麵包屑導覽、購物車、漸進式揭示),但本章不討論這些。
Model-View-Controller(MVC)#
MVC 是最廣為人知的易用性模式,其變體包括 MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)、MVA(Model-View-Adapter)等。核心思想是將 Model(商業邏輯)與一個或多個 View(UI 呈現)分離。在原始 MVC 中:
- Model 將更新發送給 View
- 使用者在 View 上的互動傳遞給 Controller
- Controller 將互動解讀為對 Model 的操作
- Model 變更狀態後,更新再回傳給 View
若 MVC 在單一程序中,更新透過 Observer 模式 傳遞;若跨程序(甚至跨網路),則常用 Publish-Subscribe 模式。
優點:
- 變更 UI 佈局(View)通常不影響 Model 或 Controller
- 開發者可對 Model、View、Controller 平行獨立開發與測試
- 同一 Model 可搭配不同 View,反之亦然
取捨:
- 對複雜 UI 而言,MVC 可能造成資訊散落在多個元件中,增加維護負擔
- 對簡單 UI 而言,MVC 增加的前期複雜度可能不值得
- MVC 為使用者互動增加少量延遲,對極低延遲要求的應用可能有影響
Observer(觀察者模式)#
Observer 模式將功能與其呈現方式解耦。Subject(被觀察者)的狀態變更時,所有已註冊的 Observer 都會收到通知。此模式常用於實作 MVC 中 Model 對 View 的通知。
優點:
- 分離底層功能與呈現方式的關注點
- 可在執行期動態變更 Subject 與 Observer 之間的綁定
取捨:
- 若不需要多重 View,Observer 模式便是 過度設計
- Observer 必須正確地 註冊與解除註冊;若忘記解除註冊,等同 記憶體洩漏,且會持續被呼叫影響效能
- 當 Subject 狀態變更的粒度與 Observer 呈現粒度不匹配(阻抗不匹配)時,可能浪費大量處理資源
Memento(備忘錄模式)#
Memento 模式是實作 Undo 戰術 的常見方式,由三個角色組成:
- Originator(發起者):處理事件流並變更自身狀態
- Caretaker(照顧者):在變更 Originator 狀態前,請求一個 Memento(狀態快照)
- Memento(備忘錄):封裝 Originator 在某一時刻的狀態
Caretaker 不需要了解狀態如何管理——Memento 只是一個不透明的抽象。需要復原時,將 Memento 傳回 Originator 即可恢復先前狀態。
優點:
- 將複雜的 undo 實作與狀態管理邏輯委託給最了解這些狀態的類別,維持抽象邊界
取捨:
- 根據被保存狀態的性質,Memento 可能消耗 大量記憶體,進而影響效能(試想在大型文件中反覆剪貼再全部復原,文字處理器很可能明顯變慢)
- 在某些程式語言中,難以將 Memento 強制為不透明的抽象
模式之間的關聯:MVC 促進 UI 與商業邏輯的分離;Observer 常被用來實作 MVC 內部的通知機制;Memento 則實作 Undo 戰術。這三個模式經常在同一系統中協同運作。
延伸閱讀重點#
- Claire Marie Karat 研究了易用性與商業優勢之間的關係
- Jakob Nielsen 廣泛撰寫相關主題,包括易用性的 ROI 計算
- Bonnie John 與 Len Bass 研究了易用性與軟體架構的關係,列舉約二十多個具架構影響的易用性情境及相應模式
- Greg Hartman 定義了 attentiveness(注意力) 概念:系統支援使用者主動行為並允許取消或暫停/繼續的能力
本章重點回顧#
- 易用性不僅是 UI 美觀,更是 架構層級 的品質屬性——需要架構師在設計階段就予以考量
- 易用性戰術分為兩大類:
- 使用者主動(Cancel、Undo、Pause/Resume、Aggregate)——讓使用者能掌控互動流程
- 系統主動(Task Model、User Model、System Model)——讓系統能預測需求並主動提供協助
- MVC 及其變體是支撐 UI 可迭代設計的核心架構模式;Observer 模式提供通知機制;Memento 模式實作 Undo 功能
- 易用性與可修改性密切相關:能輕鬆修改 UI 的架構,才能真正實現良好的易用性
- 架構師應設計系統使其具備持續監聽使用者指令的能力,而非讓長時間操作阻塞使用者的控制權