行為與架構 | Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇 閱讀筆記
27 Jan 2020本文為「Clean Architecture 無瑕的程式碼:整潔的軟體設計與架構篇」第 2 章「兩種價值觀的故事」的閱讀筆記。
每個軟體系統都可提供給利益相關者兩種價值-行為(behavior)和架構(structure)。
行為
行為又稱「功能」。軟體在「功能」方面的價值是指軟體的功能能為使用者創造或節省資金;而工程師透過協助制定規格、開發與維護系統以滿足需求來為軟體提升功能上的價值。
架構
軟體在「架構」方面的價值是指當需求變更時是否能輕易改變。若架構很有彈性的話,需求變更時便能很輕易的做修改。因此,一個擁有好的架構的軟體,要變更功能是容易的;但若軟體的架構毫無彈性可言,難以修改,就算現在功能運作正常、創造良好收益,當未來有需求變更時,也會難以調整而完全失去價值。
軟體架構師通常會較重視架構而非功能,架構師建立的架構必須要能讓功能易於開發、修改並能輕鬆擴張。
Eisenhower 矩陣
重要性與緊急性的矩陣。
將這四個面向做排列,優先順序如下…
- 重要且緊急
- 重要但不緊急
- 緊急但不重要
- 不緊急又不重要
將功能與架構放到矩陣上衡量,會得到…
- 軟體的第一價值-功能,是緊急的,但不一定很重要(可能位於第一名或第三名)。
- 軟體的第二價值-架構,是重要的,但不一定很緊急(可能位於第一名或第二名)。
因此,若將位於第三名「緊急但不重要」的功能常常誤判為第一名「重要且緊急」,就會讓系統終將因缺乏彈性的架構,導致難以調整而完全失去價值。
好的軟體工程師必須為架構而戰,而非屈服於業務單位而以功能為優先目標。