1. 程式人生 > >軟件、軟件工程與維度

軟件、軟件工程與維度

初步 處理 架構模式 低耦合 我們 通用 數學 問題 有用

軟件和軟件工程都是復雜的東西;

針對復雜性的處理方案是分而治之;

需要把復雜的問題分解成幾個維度來考察。

https://www.ibm.com/developerworks/cn/rational/1312_wanggb_arch/index.html

架構分解的原則

德國哲學家、數學家萊布尼茲一針見血地指出:“不講分解技巧,分而治之就不大有用。無經驗者對問題分解不當,反而會增加困難“。為了正確的進行分解,需要遵循一些分解原則:

  • 低耦合、高內聚:萊布尼茲指出:“分解的主要難點在於怎麽分。分解策略之一是按容易求解的方式來分,之二是在弱耦合處下手,切斷聯系”。在弱耦合處下手,切斷聯系。太精辟了!高內聚、低耦合也是軟件設計的基本原則,軟件設計中的很多設計原則其實都可以認為它的派生或具體化,如單一職責原則、依賴倒置原則、模塊化封裝原則,這些原則在架構分解中也是適用的。
  • 層次性:分解通常是先業務後技術,循序漸進,先邏輯後物理,從上到下逐級進行分解展開:系統->子系統->模塊->組件->類。
  • 正交原則:和物理學中的正交分解類似,架構分解出的架構元素應是相互獨立的,在職責上沒有重疊。
  • 抽象原則:架構元素識別,在較大程度上是架構師抽象思維的結果,架構師應該具備在抽象概念層面進行架構構思和架構分解的能力。
  • 穩定性原則:將穩定部分和易變部分分解為不同的架構元素,穩定部分不應依賴易變部分。根據穩定性原則,將通用部分和專用部分分解為不同的元素;將動態部分和靜態部分分解為不同的元素;將機制和策略分離為不同的元素;將應用和服務分離。
  • 復用性原則:就是對知識的重用.重用類似系統已有的架構設計、設計經驗、成熟的架構模式或參考模型、設計模式、領域模型、架構思想等,因為它們已經在不同的層次上分解識別出了許多架構元素,或者指出了一些分解方向,對我們的架構分解具有借鑒和指導作用。例如 IBM SOA 解決方案參考模型對 SOA 服務化具有重要的指導意義,我們可以參照它對系統進行初步的架構分解。

軟件、軟件工程與維度