2024/09/22

軟體架構

軟體架構

  • 定義
    • 組成系統的組件、組件間的關係、以及治理其設計與使其能持續演進的原則及方針
    • 包含了有意義的決策(架構性決策)
      • 需求或環境等情境引發的難題,會驅動進行決策,決定哪種設計來克服此難題
      • 例如右邊房子的屋頂較左邊的更為直陡,其目的是當房子在雪地時,直陡屋頂的積雪會更容易因為重力影響而自動滑落,屋頂比較不會被壓垮。這就是架構性的決策


  • 沒有架構設計,一團大泥球也是一種架構
  • 架構沒有好壞之分,只有是否合適於目的
    • 架構主要在達成非功能性需求(non-functional requirements)
  • 必須要有基於明確理由而為的決策之紀錄
    • 就像是上圖,為何要採用較直陡的屋頂
    • 記錄下WHY
  • 架構師
    • 考量環境,並找出其中的限制條件與假設,是架構師的主要責任
    • 架構師的最重要工作,在於排除軟體設計中的不可逆性

沒有留言: