重點摘要#
- 軟體架構需要像製作法式清湯一樣,經過反覆精煉才能達到清澈透明
- 不斷過濾模糊和不精確的語言,直到只留下簡單且可驗證的真理
- 許多遺漏的需求和 bug 可以追溯到模糊的、籠統的語言
- 當你能「透過架構看到硬幣上的日期」時,架構就完成了
詳細內容#
法式清湯(Consomme)是一種極度澄清的高湯,被視為烹飪中最具挑戰性的菜餚之一。要獲得絕對的清澈,唯一的方法就是反覆、精細地過濾,一次又一次地去除雲狀的脂肪和固體。這個過程創造出一道風味濃郁的精華。
在美國的烹飪學校,有一個簡單的測試:老師將一枚硬幣放入你的清湯中,如果你能看到碗底硬幣上的日期,就通過;如果看不到,就不及格。
架構即精煉#
軟體架構需要持續的精煉思考——反覆過濾想法,直到確定系統中每個需求的本質:
- 它是什麼?
- 它有哪些屬性?
- 它的關係是什麼?
- 我們釐清概念,使架構中的關係可驗證地為真,並且內部一致
許多被遺漏的需求和軟體 bug 都可以追溯到模糊、籠統的語言。帶著外科手術般的精確度來處理需求中的語言,剔除模糊性、籠統性、未經驗證的假設和多餘的贅述。
精煉的方法#
像律師尋找不在場證明中的漏洞一樣,反覆詢問相同的問題:
- 向客戶、開發者、分析師和使用者反覆提出相同的問題,直到他們感到厭煩
- 然後換一種方式重新提問,試圖找出任何新的資訊、差異或矛盾
- 過濾、再過濾
測試陳述的方法#
用以下方式測試需求陳述:問自己「如果我在這個陳述後面加上『永遠且在任何情況下都是如此』,這句話是否仍然成立?」人們會抗拒承諾這種絕對的說法,這迫使他們精煉自己的表述。
持續這個過程,直到你只剩下一組簡單且可驗證的真實陳述,描述系統的本質。
當你能「透過」架構「看到硬幣上的日期」時,你就知道架構完成了。追求概念的清澈透明,而非堆積更多的細節。
— By Eben Hewitt