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的目的

2024/08/12

紅隊測試 (Red Team)

 紅隊測試 (Red Team)


這本書的副標 "How To Succeed By Thinking Like The Enemy" 就已經很清楚說出了Red Team的目的。

看完這本書的引言,就可以對紅隊的運作方式有七八成的概念了。

  • 緣起
    起源於十三世紀梵諦岡教廷的魔鬼代言人(Devil's Advocate),透過魔鬼代言人的檢驗,來省視封聖的過程
  • 角色
    提供決策參考資料
  • 核心主題
    你不能替自己的表現評分
    • 個人認知偏差
      • 鏡像效應
        假定對手面對相同類似情況時,想法會和自己相同
      • 定錨效應
        過度仰賴最初的資料或印象,以致難以顯著改變之後的判斷
      • 驗證偏差
        偏重支持自己想法的發現與證據
    • 組織偏差
      已成為組織文化的俘虜,難以擺脫慣常習性
  • 作業方式
    • 模擬
      針對預定事件或可能發生的情況,事先演練,藉以檢驗、改善策略、戰術與流程
    • 探查弱點
      扮演敵方角色,測試架構、機制的可靠性,進而強化弱點
    • 另類分析
      利用解放手段或結構化分析,對問題假設、人性、組織限制、作業流程等進行質疑,提出不同的思考
  • 成敗因素
    • 組織領袖之意願與接受度
    • 紅隊須在組織(策略、文化、結構、流程)的邊緣或外部,以發揮作用
    • 紅隊人員
      • 須充分了解組織(策略、文化、結構、流程),並是反向思考者
      • 成員需不拘泥於方法與技巧
      • 不斷精進自身能力、觀念、性格、心理素質的深度與廣度
      • 領導者必須有足夠的溝通與社交技巧
      • 須抱著「或許相反才對」的精神看待事物
    • 保護異議者的文化
      • 紅隊的誠實報告須有豁免權,不因牴觸組織領袖之決策與意志而受懲處
      • 紅隊須受制度保護,但不能被組織俘虜
        • 組織架構的位置
        • 活動範圍與自主性
        • 作業模式(如怎麼瞭解組織,以及報告對象、報告方式)
    • 紅隊作業心態
      • 紅隊也是組織的一分子,生存的目的是協助組織永續強固,而非將之擊倒
      • 紅隊亦需肩負教育組織之責
    • 紅隊測試週期
      • 太過頻繁容易打擊士氣
      • 頻率太低容易僵化自滿
      • 頻率須視領域變動的速度做調整
其他觀念
  • 1-2-4-Whloe
    針對問題,先各自思考策略與解決方案,接著兩人一組分享想法,然後四人一組,最後在全體一起討論
    • 在聽其他人發表意見前,選定自己的立場並寫下來
    • 先少數人討論,能有充分的陳述,透過說出想法的方式來讓自己的想法更完整
    • 避免社會從眾(social conformity),發揮思想警衛(mind gurads)與阻擋者(blockers)
    • 在每個人都講過話前,沒有人可以第二次發言
  • GICOT
    Good Idea Cut Off Time
  • 美軍對Red Team定義:
    由受過相關訓練和教育、並有經驗的專家構成,使聯合作戰指揮官得以獨立完成以下工作:
    • 針對特定議題做批判審查和分析
    • 探索各種計劃與行動
    • 從另類角度分析敵方能力
  • 紅隊大學課程四大支柱
    • 批判思考
    • 減輕團體盲思
    • 文化同理心
    • 自我察覺
  • Red Team Handbook
    https://usacac.army.mil/organizations/ufmcs-red-teaming/schedules-and-handbooks
  • 死前分析(Premortem Analysis)
    專案開始前的會議,團隊在會議中想像可能會發生什麼事導致專案失敗。然後逆向制定計劃,以幫助防止潛在的障礙並增加成功的機會。
    行為心理學家和神經科學家推薦該技術作為對抗認知偏差和降低專案風險的特別有效的方法。
  • 第十人理論
    如果有九人看過相同資料,得出相同結論,則第十人有責任提出反對意見。他必須假定前九人都錯了,開始思考其他的可能,無論這個結論多麼荒謬。
    抑制團體盲思