對於「架構」這個詞你應該不會陌生,如果你在企業內部,那應該聽說過「組織架構」;而如果你從事軟體行業,那架構這個詞應該就再熟悉不過了,什麼「企業架構」、「業務架構」、「軟體架構」、「系統架構」、「資料架構」、「安全架構」等等等等。
那這些架構分別表示什麼意思呢?如果你去網上尋求答案,你會發現答案千差萬別。
本文將嘗試回答這個問題。
架構是特定約束下決策的結果,並且這是一個迴圈遞進的過程。
然後基於這個定義,分別對「約束」、「決策」和「結果」進行具象化:
約束功能性需求非功能性需求......決策技術選型規範系統切分元件之間的關係......結果滿足約束的軟體系統相關文件用例圖決策過程文件(各個方案優缺點,選擇該方案的原因)架構檢視......備選方案......我們得到了「軟體架構」的定義:「軟體架構定義了一組元件以及這些元件之間的通訊方式(決策結果),以完成目標功能(約束)。」
實際上,對「約束」、「決策」和「結果」的界定範圍的不同,我們就可以對上述的各種架構型別進行定義。
系統架構「系統」是個很抽象的詞,可大可小:
鉛筆是個系統人體是個系統公司是個系統地球是個系統宇宙是個系統......但是,無論是哪種系統,都是由一組單元(Unit)及其之間的關係組成,以完成特定的功能:
鉛筆由筆芯、筆桿組成,用於完成寫字、繪畫等功能人體由頭部、身體、四肢等組成,可以吃喝玩樂......公司由各個部門組成,可以從事商業活動地球由大氣層、地殼、地核等組成,提供可供人類、動植物生活的場所宇宙由行星、恆星、黑洞等組成,提供各種星球所能正常執行的空間......所以,「系統架構」可以這麼定義:「系統架構定義了一組單元/元素(Unit/Element)以及這些單元/元素之間的通訊方式(決策結果),以完成目標功能(約束)」。
其它架構型別上面我們從「軟體架構」的定義出發,向上抽象出了「系統架構」的定義,基於「系統架構」的定義,我們可以向下細化出其它架構的定義。
組織架構:定義了一系列的部門以及部門與部門之間的關係,以完成整個公司的運作企業架構:基於業務,定義了組成企業的所有不同要素,以及它們之間如何相互聯絡(如何作用)。一般企業架構又會拆分為業務架構、IT架構業務架構:定義了一系列的業務結構及其之間的關係,以提供業務能力完成對應的業務目標IT架構:定義了一系列的IT元件及其之間的關係,以完成業務功能應用架構:定義了一系列的系統、子系統、模組及其之間的關係,以完成業務功能資料架構:定義了一系列的資料結構及其之間的關係,對業務及應用系統提供資料支撐安全架構:定義了一系列的安全控制模組及其之間的關係,以對目標系統提供安全保障功能架構檢視架構檢視是對於從某一視角或某一點上看到的系統所做的簡化描述,描述中涵蓋了系統的某一特定方面,而省略了於此方面無關的實體。
架構模式:針對某個特定上下文的某類問題的解決方案架構風格:就是一個解決方案乍看之下區別不是很大,不過細究起來還是有比較大的差別的,架構模式有場景、有問題,而架構風格沒有。
而架構型別和架構檢視乍看之下區別也不大,實際細究起來,區別也不是很大。上面的各種架構型別實際都可以看成是真實系統的一個檢視:
組織架構:從組織視角來看系統企業架構:從企業視角來看系統業務架構:從業務視角來看系統IT架構:從軟體視角來看系統應用架構:從應用視角來看系統資料架構:從資料視角來看系統安全架構:從安全視角來看系統和上面的4+1檢視的區別主要就是視角上的差異,還有就是範圍上的差異。上述的各架構型別之間的關係大致如下圖所示:
系統架構是最抽象的一層,其中包含了組織架構、人體架構、地球架構、宇宙架構、企業架構等企業架構又可以拆分為業務架構、IT架構其中業務架構可以分為組織架構、業務策略和業務流程架構而IT架構又可以分為應用架構、技術架構、資料架構、安全架構等,上述架構均包含了軟體架構和硬體架構架構型別間的包含關係並不是完全如上圖所示的,也分場景。比如:資料架構可能並不一定是屬於IT架構的,可能是和企業架構、IT架構同級的,甚至是和企業架構同級的
總結本文是個人對架構型別和架構檢視的梳理和理解。總結一句話,萬物都有多面性,要多維度的觀察分析。
參考資料System Architecture(https://en.wikipedia.org/wiki/Systems_architecture)Applications architecture(https://en.wikipedia.org/wiki/Applications_architecture)