重點摘要#
- 記錄架構決策背後的**理由(rationale)**是最值得投資的文件類型之一
- 文件應回答「我們做了什麼決定?」和「為什麼這樣決定?」
- 這類文件不會隨程式碼改變而過時,且所需的努力極小
- 記錄過程迫使你驗證自己推理的嚴謹性
詳細內容#
軟體開發社群對文件的價值爭論不休,尤其是關於「大型前期設計」的價值和維護設計文件與不斷變化的程式碼同步的困難。
為什麼要記錄決策理由#
軟體架構的本質就是在各種品質屬性、成本、時間等因素之間做權衡取捨。應該清楚地讓你的管理者、開發者和其他利害關係人知道:
- 為什麼選擇了某個方案而非其他方案
- 做了什麼取捨(例如:犧牲水平擴展性以降低硬體和授權成本?為了資料加密而接受整體回應時間增加?)
文件格式#
格式可以根據專案需求靈活調整,從快速筆記、wiki、部落格到更正式的範本都可以。無論選擇什麼格式,文件應該:
- 回答「我們做了什麼決定?」
- 回答「為什麼這樣決定?」
- 記錄「考慮了哪些替代方案?為什麼被否決?」
- 具備可搜尋性,以便需要時能輕鬆找到
文件的用途#
- 作為向開發者溝通重要架構原則的手段
- 當開發者質疑架構邏輯時,幫助團隊達成共識
- 向管理者和利害關係人解釋軟體為何如此建構
- 在專案交接時提供脈絡(你有多少次繼承了一個系統卻完全不理解設計者的想法?)
記錄理由最重要的好處是:它迫使你明確地表達推理過程,以驗證你的基礎是否穩固;同時它可以作為重新評估決策的起點,當影響最終決定的條件發生變化時。
— By Timothy High