核心概念#
許多產業使用原型來試驗特定的想法——製作原型比大規模生產便宜得多。汽車製造商可能建造許多不同的原型來測試汽車設計的特定面向:空氣動力學、造型、結構特性等。
我們以同樣的方式建造軟體原型,出於同樣的原因——分析和暴露風險,以大幅降低的成本提供修正機會。
原型不一定要是基於程式碼的。我們可以用不同材料來建造原型:便利貼很適合製作工作流程和應用邏輯的原型;使用者介面可以在白板上畫草圖或用介面建構工具。
原型的價值#
原型是一種學習體驗。它的價值不在於產生的程式碼,而在於學到的教訓。
Tip 21 - Prototype to Learn(用原型來學習)
如何使用原型#
建造原型時,你可以忽略哪些細節?
| 可忽略的面向 | 說明 |
|---|---|
| 正確性 | 可以適當地使用假資料 |
| 完整性 | 原型可能只在非常有限的意義上運作 |
| 健壯性 | 錯誤檢查可能不完整或完全缺失 |
| 風格 | 原型程式碼不需要太多註解或文件 |
如果你發現自己處於一個無法放棄細節的環境中,那你需要問自己是否真的在建造原型。也許曳光彈式開發更適合。
適合用原型探索的事物#
任何有風險的東西、任何未曾嘗試過的東西、任何對最終系統至關重要的東西:
- 架構
- 現有系統中的新功能
- 外部資料的結構或內容
- 第三方工具或元件
- 效能議題
- 使用者介面設計
原型架構#
許多原型是為了模擬正在考慮的整個系統。與曳光彈不同,原型系統中的個別模組不需要特別能運作——你在乎的是系統整體如何組合在一起。在架構原型中你可能想要關注的面向:
- 主要區域的職責是否明確定義且合適?
- 主要元件之間的協作是否明確定義?
- 耦合是否最小化?
- 你能識別潛在的重複來源嗎?
- 介面定義和約束是否可接受?
- 每個模組是否能取得執行時需要的資料?是否在需要時能取得?
如何不使用原型#
在進行任何基於程式碼的原型設計之前,確保每個人都理解你正在寫的是用完即丟的程式碼。原型對不知道它們只是原型的人來說可能極具欺騙性。
如果你的環境或文化中原型程式碼的目的可能被誤解,你可能更適合使用曳光彈方法。你最終會得到一個堅實的框架來作為未來開發的基礎。
正確使用的原型可以節省你大量的時間、金錢和痛苦——在開發週期早期識別和修正潛在問題,那時修復錯誤既便宜又容易。
相關章節#
- Topic 12,曳光彈
- Topic 14,領域語言
- Topic 17,Shell 遊戲
- Topic 27,不要超越你的車頭燈
- Topic 37,傾聽你的蜥蜴腦
- Topic 45,需求之坑
- Topic 52,取悅你的使用者