核心概念#

許多產業使用原型來試驗特定的想法——製作原型比大規模生產便宜得多。汽車製造商可能建造許多不同的原型來測試汽車設計的特定面向:空氣動力學、造型、結構特性等。

我們以同樣的方式建造軟體原型,出於同樣的原因——分析和暴露風險,以大幅降低的成本提供修正機會。

原型不一定要是基於程式碼的。我們可以用不同材料來建造原型:便利貼很適合製作工作流程和應用邏輯的原型;使用者介面可以在白板上畫草圖或用介面建構工具。

原型的價值#

原型是一種學習體驗。它的價值不在於產生的程式碼,而在於學到的教訓。

Tip 21 - Prototype to Learn(用原型來學習)

如何使用原型#

建造原型時,你可以忽略哪些細節?

可忽略的面向說明
正確性可以適當地使用假資料
完整性原型可能只在非常有限的意義上運作
健壯性錯誤檢查可能不完整或完全缺失
風格原型程式碼不需要太多註解或文件

如果你發現自己處於一個無法放棄細節的環境中,那你需要問自己是否真的在建造原型。也許曳光彈式開發更適合。

適合用原型探索的事物#

任何有風險的東西、任何未曾嘗試過的東西、任何對最終系統至關重要的東西:

  • 架構
  • 現有系統中的新功能
  • 外部資料的結構或內容
  • 第三方工具或元件
  • 效能議題
  • 使用者介面設計

原型架構#

許多原型是為了模擬正在考慮的整個系統。與曳光彈不同,原型系統中的個別模組不需要特別能運作——你在乎的是系統整體如何組合在一起。在架構原型中你可能想要關注的面向:

  • 主要區域的職責是否明確定義且合適?
  • 主要元件之間的協作是否明確定義?
  • 耦合是否最小化?
  • 你能識別潛在的重複來源嗎?
  • 介面定義和約束是否可接受?
  • 每個模組是否能取得執行時需要的資料?是否在需要時能取得?

如何使用原型#

在進行任何基於程式碼的原型設計之前,確保每個人都理解你正在寫的是用完即丟的程式碼。原型對不知道它們只是原型的人來說可能極具欺騙性。

如果你的環境或文化中原型程式碼的目的可能被誤解,你可能更適合使用曳光彈方法。你最終會得到一個堅實的框架來作為未來開發的基礎。

正確使用的原型可以節省你大量的時間、金錢和痛苦——在開發週期早期識別和修正潛在問題,那時修復錯誤既便宜又容易。

相關章節#

  • Topic 12,曳光彈
  • Topic 14,領域語言
  • Topic 17,Shell 遊戲
  • Topic 27,不要超越你的車頭燈
  • Topic 37,傾聽你的蜥蜴腦
  • Topic 45,需求之坑
  • Topic 52,取悅你的使用者