軟體架構-可視化
當我們在討論系統時,往往都會說這個系統的架構是什么樣的,在你口述的同時,如果能借助某些圖表,效果會更好,傳統的uml建模比較復雜,目前的軟體工程大家更關注效率(這里我不談敏捷開發),uml變得很不實用,那么探尋一種更簡潔有效的“架構描述”方式變得比較迫切,筆者基于這個需求結合c4模型,uml,和自己的從業經驗,總結了一套描述架構的方式.
1.系統背景關系/系統全景圖(System Context diagram)
2.系統應用程式架構圖(Container diagram)
3.系統組件圖(Component diagram)
4.組件明細圖(Component detail diagram)
>組件API(Component interface)
>組件涉及的資料存盤模型(data diagram)
>組件類圖(Class diagram)
>組件時序圖(sequence diagram)
5.系統物理部署(System deploy diagram)
上面我從人類比較習慣的認知事物的思維方式,自頂而下,層層推進的方式去描述我們的系統,每一層都從意圖,結構,受眾這3方面講述了改成架構圖的作用,
一.系統背景關系/系統全景圖(System Context diagram)
做為系統最高層次的抽象,不涉及細節,起到總攬大局的作用,
意圖
系統背景關系/系統全景圖回答了下面幾個問題:
-
我們構建的軟體系統是什么?
-
誰會用它?
-
如何和現有it系統融合?
結構
結構,描述的是畫系統背景關系應該包含哪些元素,一般包含待構建的系統,使用該系統的人員,現有的it系統,以及上面3者之間的互動,在這里細節不重要
因為你畫的是一個系統大局景觀的廣角視圖,關注的重點在人和系統上,而不再技術和協議,
系統使用人員
主要分為2大類:業務用戶和系統管理員,
關聯IT系統
現有存在的it系統,需要與待構建系統進行互動,
互動
系統人員和待構建系統,待構建系統和現有it系統之前的互動,簡單的鏈接線和簡短的標注描述關鍵用例,
受眾
直接的軟體開發團隊內部人員,外部技術人員和非技術人員,
示例

二.系統應用程式架構圖(C4中的容器圖)
應用程式架構圖也是對軟體系統較高層次的抽象,不過相對系統背景關系,它進一步的說明高層次的技術選擇,
意圖
應用程式架構圖,可以幫助你回復下面的問題:
- 構建系統的整體形態是什么樣的?
- 高層次的技術決策有哪些?
- 系統內各個職責的分布?
- 應用程式是怎么互動的?
結構
首先明白那些是我們所說的應用程式指的是組成軟體系統邏輯上可獨立執行和部署的檔案
web服務器:apache服務器, nigix服務器,微軟的iis等;
應用服務器:jboss,ibm websphere,weblogic等;
sql資料庫:mysql,db2等;
nosql資料庫:redis,mongodb,hbase等;
搜索引擎:solr,elasticsearch等;
檔案系統:oss,hdfs等;
定時器:corn等;
每個應用程式應用有自己的邏輯名稱(web服務器),技術選擇(nigix),應用程式的職責聲名(負責反向代理和負載均衡),
互動
應用程式之前的通信一般是行程間的通信,互動的標注需要關注如下資訊:
互動的目的:為了傳輸資料,存盤資料等
通信方法和協議: rpc呼叫,java訊息,http服務,soap服務
通信方式:同步,異步
受眾
直接的軟體開發團隊內部人員和外部技術人員;
示例

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/248578.html
標籤:其他
上一篇:Laravel日記
下一篇:長虹佳華-AWS云上遷移方法論
