作為一名架構師,你設計的架構其實是要給很多人看的,包括公司領導、產品、開發、測試和運維,那么你該如何把你設計的架構展示給別人呢? 這就是Relax今天想跟大家聊的內容。大家還是不妨先花個兩三分鐘好好想一想這個問題。
前言:
設計軟件架構圖并非一件輕而易舉的事情,即使是很簡單的一個架構圖也可能會出錯。有意義且具備一致性的架構圖有助于為不同的利益相關者澄清事實,并達成共識。
在大多數情況下,問題的根源并不在于是否使用了一門有效的架構描述語言(比如 UML),而在于低估了架構圖的重要性,轉而依賴不恰當或不具備一致性的指導性原則,或者缺乏架構思維。
在創建架構圖的過程中,試著混合使用自動生成的圖元和手動創建的圖元,這樣可以減少工作量,并且可以表達出各方面的關注點,覆蓋到系統的各個層面。
系統不斷地發生演化,要維護更新架構圖需要花費額外的精力。我們需要知道如何有效地應對這種情況,同時能夠保持架構圖的一致性和健壯性。
現代的軟件架構帶來了更多的復雜性,這些都反映在了架構圖上。
相信很多小伙伴都已經知道了,答案就是圖。所以今天Relax其實聊的主要就是架構設計中的那些圖。
架構設計理論上一般劃分五種視圖,即邏輯架構視圖、開發架構視圖、運行架構視圖、物理架構視圖和運行架構視圖。5種架構視圖的內容和關系可以看下面兩張圖:
從圖中可以看到,五種視圖涵蓋了邏輯層次劃分、接口定義、開發代碼組織結構、運行性能設計、運維部署以及數據存儲等方方面面。
在Relax的實際架構設計工作中,邏輯架構視圖和物理架構視圖考慮得最多,開發架構視圖中的代碼組織結構,運行架構視圖的多線程高并發以及數據架構視圖中的數據持久化和存儲,主要是作為關鍵技術點進行分析的,這一點其實是跟所處行業有關。
除了上面的五種視圖以外,Relax還想跟大家聊一下另外一種圖,就是UML圖,UML包含很多種圖,Relax就不在這里一一介紹了,Relax只談一下自己實際工作中經常用到的五種UML圖—類圖、構件圖、部署圖、用例圖和序列圖。
類圖主要是描述一個類的結構,類是面向對象一個概念,在C語言這種面向過程的語言中,其實也可以按模塊的不同功能使用類圖來描述這個模塊的.c文件和.h文件。
構件圖也可以叫組件圖,個人覺得跟上面5圖中的邏輯架構視圖有點像,主要就是描述系統可以劃分的邏輯層次,每個層次包含哪些組件以及子系統包含哪些邏輯層次等等這些內容。
部署圖其實跟上面5圖中的物理架構視圖有點像,描述的是系統的位置跟硬件形態。
用例圖描述的是系統的輸入活動以及系統的自身任務,比如用戶會對系統進行什么樣的配置操作等等。
序列圖其實就是針對用例圖的輸入活動,系統中的各個組件針對這個輸入如何協同工作,相關組件的一個處理流程的描述。
軟件架構設計中的那些圖,Relax今天就聊到這兒,由于都是理論知識,所以可能不是很好理解,不過不要著急,理論是用于指導具體實踐的。