軟體架構
- 定義
- 組成系統的組件、組件間的關係、以及治理其設計與使其能持續演進的原則及方針
- 包含了有意義的決策(架構性決策)
- 需求或環境等情境引發的難題,會驅動進行決策,決定哪種設計來克服此難題
- 例如右邊房子的屋頂較左邊的更為直陡,其目的是當房子在雪地時,直陡屋頂的積雪會更容易因為重力影響而自動滑落,屋頂比較不會被壓垮。這就是架構性的決策
- 沒有架構設計,一團大泥球也是一種架構
- 架構沒有好壞之分,只有是否合適於目的
- 架構主要在達成非功能性需求(non-functional requirements)
- 必須要有基於明確理由而為的決策之紀錄
- 就像是上圖,為何要採用較直陡的屋頂
- 記錄下WHY
- 架構師
- 考量環境,並找出其中的限制條件與假設,是架構師的主要責任
- 架構師的最重要工作,在於排除軟體設計中的不可逆性