規格是什麼?#
要寫好規格文件,首先要區分兩種截然不同的規格類型,並掌握規格文件的關鍵組成元素。
功能規格 vs. 技術規格#
- 功能規格(Functional Spec):從使用者的角度描述產品的行為——功能、畫面、選單、操作流程。關注的是「產品做什麼」
- 技術規格(Technical Spec):描述內部實作細節——資料結構、演算法、API 介面。關注的是「產品怎麼做」
本章聚焦於功能規格,因為它是驅動產品設計的核心文件。
規格文件的組成元素#
概述#
以一個虛構的產品 WhatTimeIsIt.com 為範例,說明功能規格應包含的內容。概述讓讀者在幾秒鐘內就能理解這個產品是什麼、要解決什麼問題。
情境與虛構使用者#
使用虛構的使用者角色(如 Mike 和 Cindy)來描述真實的使用情境。這比抽象地列出功能清單更具說服力,也更容易讓讀者理解功能的實際用途。
非目標清單(Nongoals)#
明確列出本版本不打算實作的功能,與目標清單同樣重要。它能防止範圍蔓延(Scope Creep),讓團隊聚焦在真正重要的事情上。
流程圖與畫面描述#
- 使用流程圖呈現使用者在產品中的操作路徑
- 針對每個畫面撰寫詳細的描述,包括每個元素的行為、狀態與邊界條件
畫面描述應該詳細到開發者讀完就能實作,而不需要再回來問問題。描述每個按鈕按下去後會發生什麼、每個輸入欄位的驗證規則、每個錯誤狀態的處理方式。
撰寫規格的指導原則#
- 單一作者:每份規格文件應由一個人負責撰寫,以維持語調與邏輯的一致性
- 加入免責聲明:標明規格可能變更,降低讀者對文件的抗拒感
- 使用情境驅動:以使用者故事帶出功能,而非條列式地描述每個欄位
- 列出非目標:明確說明不做什麼,避免期望落差
開放議題與旁註#
- 開放議題(Open Issues):尚未定案的設計決策,標示為待討論事項
- 旁註(Side Notes):補充說明或技術備註,不影響主要閱讀流程
設計應從使用者體驗出發,而非從技術架構出發。先想像使用者會怎麼操作,再決定背後要怎麼實作。這個順序很重要——顛倒過來會產出對使用者不友善的產品。