讀古今文學網 > 程序員必讀之軟件架構 > 軟件架構提供了TDD、BDD、DDD、RDD和代碼整潔的分界線 >

軟件架構提供了TDD、BDD、DDD、RDD和代碼整潔的分界線

每當我和團隊談起軟件架構,都有一個被反覆問到的問題,TDD2 、BDD3 、DDD4 、RDD5 等技術跟架構的關係如何?這個問題其實是問xDD是否是「軟件架構」的替代,特別是在「敏捷環境」中。簡短的回答是否定的。稍長的回答是,思考軟件架構的過程其實是確定範圍,在範圍之內你可以用任何一種xDD和你喜歡的敏捷實踐來構建軟件。

2 測試驅動開發,http://en.wikipedia.org/wiki/Test-driven_development 。

3 行為驅動開發,http://en.wikipedia.org/wiki/Behavior-driven_development 。

4 領域驅動設計,http://en.wikipedia.org/wiki/Domain-driven_design 。

5 責任驅動設計,http://en.wikipedia.org/wiki/Responsibility-driven_design 。

對我來說,原因很簡單:你需要思考架構的驅動力 (影響最終軟件架構的重要事情),包括下面這些。

  • 功能需求 :需求驅動架構。不管怎麼捕捉和記錄需求(比如,用戶故事、用例、需求規格書、驗收測試等),你都要大概知道你在構建什麼。
  • 質量屬性 :非功能需求(比如,性能、可擴展性、安全等)通常是技術方面的,也很難改造。理論上,這些都需要體現在初始的設計中,忽視這些屬性會導致軟件系統要麼做得不夠,要麼做得太過。
  • 約束 :約束普遍存在於現實世界,包括批准的技術清單、規定的集成標準、目標部署環境、團隊規模等。再說一次,不考慮這些會導致你交付的軟件系統與環境不匹配,增加不必要的摩擦。
  • 原則 :是在試圖為軟件提供一致性和清晰度時你想要採用的東西。從設計的角度來看,這包括你的分解策略(比如,層、組件和微服務的對比)、關注點分離、架構模式等。明確概述一套初始的原則至關重要,這樣構建軟件的團隊才會朝著同一方向出發。