2024/09/22

軟體架構

軟體架構

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


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

2024/09/16

領域故事化 (Domain Storytelling)

 領域故事化 (Domain Storytelling)

WHY:

  • 化解軟體開發人員與商業(business)部門的認知落差
  • 理解領域
  • 釐清軟體需求


WHAT:

提供口語化與視覺化的建模工具與方法


WHO:

  • 領域專家
  • 軟體開發人員
  • UX設計師
  • PM
  • 商業分析師

WHEN:

  • business modeling
  • system modeling


HOW:

透過下列建構元件來組成視覺化模型:

  • Actor
  • Work Object
  • Activity
  • Sequence Number
  • Anotation (optional)
  • Group (optional)


範例

下圖描述電影觀眾購票的流程



個人理解:

  • 這樣的建模方式,涵蓋了UML中的use case diagram, activity diagram, sequence
  • Agile時代,將多個圖融合為一,更符合敏捷之精神
  • Actor, Work Object, Activity其實便隱含了glossary的目的