[Meetup 筆記] 如何繪畫別人看得懂的軟件架構圖?──Simon Brown 的C4 Model

閱讀時間約 5 分鐘
作為軟件開發者,你試過看不懂別人的架構圖嗎?或是自己嘔心瀝血徹夜畫的架構圖,別人卻看不懂?
講題:The Art of Visualising Software Architecture
講者:Simon Brown (個人網站
時間:2016/01/15 晚上
場地:Odd-e 在上環的新辦公室
上星期五晚出席了一個關於軟件架構視覺化的講座。講者Simon Brown 多年從事系統架構的顧問和培訓工作,也會到世界各地演講,著作有Software Architecture for DevelopersThe Art of Visualising Software Architecture 。其題為”The Conflict Between Agile and Architecture — Myth or Reality?” 的演講在Software Engineering Institute 主辦的SATURN Conference 2013中,獲參予者票選為”Architecture in Practice” Presentation Award 得主。
軟件開發者常要畫架構圖,但沒人看得懂……
講者Simon 首先提到敏捷開發有賴良好溝通,但在他工作和開辦工作坊的經驗中,發覺很多開發者無法有效地講解自己的構想,想傳達的資訊往往像卡在他們的腦袋裡。雖然開發者常畫圖來幫助講解,而軟件工程界也制訂了諸如UML 的建模語言和製圖規範,不過事實上大部分人都覺得UML太複雜所以很少用,尤其是高階的架構設計圖。
於是很多開發者以自己的方式畫了令人不明所以的系統架構圖。有些圖使用了意味不明的顏色和圖形(這個粉紅色的虛線想表示什麼?),有些則過多實作細節(User → UI → Calculation Engine → Data Reader → ……),有些將架構(Architecture)、運行(Execution)、部署(Deployment)等不同面向的內容混在同一幅圖裡(Import Service, cron, UNIX VM instance, …… )。結果這些「設計圖」徒令本來要說明的構想更難理解。
C4 Model — 地圖的類比
針對上述情況,Simon 認為”A common set of abstractions is more important than a common notation.”,提倡C4 Model (Context, Container, Component, Class),將系統架構分成四個層級的抽象化。一個系統會有一個Context 以及各種使用者和其他外部系統,Context 由多個Container構成(例如web app, mobile client, database, etc.),每個Container 包括數個Component ,而Component 由class 組成。
Source: Simon Brown’s website
Simon 以地圖的縮放比例來類比架構圖的層級。地圖愈是放大,看到的地域愈小,但顯示的資訊愈詳細。同樣道理,低層的架構圖應顯示特定模組的細節,而高層的架構圖應隱藏細節,提供較宏觀的概覽。
Source: Simon Brown’s website
構圖原素方面,採用基本的方盒、箭頭線、標籤,再按實際需要自訂添加和附上圖例。Simon 認為毋須拘泥於一套行業通用的製圖規範,個別團隊只要有一套共識的規範即可。就像各式各樣的地形圖、街道圖、觀光圖,呈現資訊的方式並不統一,但只要附上圖例說明,一般人都能夠看得懂。
Simon 表示C4 Model 並非要完全摒棄UML,在描述系統採用的Design Pattern或模組的互動時,他仍然會使用Class Diagram、Sequence Diagram。
個人感想
驟眼看來,可能會覺得C4 Model 並沒有新穎獨到之處,其他建模系統例如UML 、RUP 等等早有目的類近的圖。這會不會是講者「因為現存的一百種繪圖系統不夠好,所以自己又提出第一百零一種」?
但回想UML 會少人用,就是因為規範了太多構圖細節,對高階設計圖來說太過繁瑣,不易記所以容易畫錯,而且繪圖費時,往往需要專門製圖軟件輔助。這其實是種資訊過載,構成受眾的認知負擔。
講者提倡的其實不是又一套製圖規範,而是不要倚賴規範去繪製架構圖,同時注意適當地將架構作不同層級的抽象化去分別製圖。按抽象化程度分別製圖,能配合受眾的需要隱藏不必要的資訊。不倚賴行業規範來繪製的設計圖,代表必須對設計圖能易於被理解有所自覺, 對技術背景深淺不一的團隊成員或客戶,都便於繪畫和閱讀。採用簡單的構圖原素,亦便於隨時在紙上或白板上繪畫,有利多人協作和溝通。
若想進一步了解C4 Model,可參看Simon 的演講投映片
Originally published at cyl-notes.blogspot.com on January 17, 2016.
為什麼會看到廣告
avatar-img
31會員
101內容數
射箭學習筆記,不定期分享弓箭射藝的小知識和學習心得。內容從射箭運動到傳統射藝,涵蓋技巧、科學、競技、歷史、文化等等射箭的不同層面。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在數位筆記管理中,標籤混亂是一個常見問題,尤其是當出現許多重複標籤時。例如,“#人力資源”和“#人力資源管理”,“#旅行”和“#旅遊”,“#啟發”和“#啟示”這些類似的標籤會導致分類繁複而臃腫,長期下來不僅無益反而有害。
Thumbnail
第一次看到有人可以把黃金葛用得這麼美,蓬鬆感加上點綴的黃葉,像是一叢美麗的果樹,加上門口可愛樸實的手寫字,看到這種店面,完全無法不進去阿阿阿。 結帳時,忍不住問了老闆娘,店面的植物究竟是如何打造的。 老闆娘說他們沒有刻意打造,那片美麗的黃金葛屋簷,是之前二樓房客種的,他們只是幫忙維護
Thumbnail
🚀前言: 彩蛋在最後,記得看到最後!!! 上週參加了在台北舉辦的 Gamma User Meetup,真的像是打開了一扇通往簡報藝術的新世界。 在這場活動中,講者和使用者分享了 Gamma 在不同領域的應用,而我個人覺得最讓人印象深刻的 3 個領域分別是「產品/專案成果展示」、「教育應用」以及
日更Day107/365 #自我覺察 因為想混一篇日更就直接開一篇了,順便寫一下相關的一些期待與展望XD 這次一開始的自我介紹,小金魚請大家複讀一次正在介紹的稱呼的環節真的很特別,讓人有一種很受歡迎的錯覺,所以才會有這個勇氣走到中間說話,這是個突破。 說起來,真的不太習慣
日更Day105/365 #自我覺察 一天下來好累,但果然就是要參加啊。 我想也不用說太多,因為這次人好多,一到我想,這人真的多,馬上想找舒適圈(訓練營小圈圈),但沒位子就算了。 看到熟悉的面孔感覺親切、看到新加入的人感覺有些不安但又有點期待。 回到一個常見的自我介紹。
从个人发展的角度来讲,我认为每个人都要有一点自己的长处,这个长处并不是人们常说的一些爱好之类的东西,而是个人身上那种相对稀缺的禀赋,或者是几种特质组合起来的独特性能。 这是任何时候都能保持一定竞争力的前提,也是一种不需要卷就能体现出来的个人优势。其实不需要对自己要求很高,只要在自己的领域高于平均,就
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在數位筆記管理中,標籤混亂是一個常見問題,尤其是當出現許多重複標籤時。例如,“#人力資源”和“#人力資源管理”,“#旅行”和“#旅遊”,“#啟發”和“#啟示”這些類似的標籤會導致分類繁複而臃腫,長期下來不僅無益反而有害。
Thumbnail
第一次看到有人可以把黃金葛用得這麼美,蓬鬆感加上點綴的黃葉,像是一叢美麗的果樹,加上門口可愛樸實的手寫字,看到這種店面,完全無法不進去阿阿阿。 結帳時,忍不住問了老闆娘,店面的植物究竟是如何打造的。 老闆娘說他們沒有刻意打造,那片美麗的黃金葛屋簷,是之前二樓房客種的,他們只是幫忙維護
Thumbnail
🚀前言: 彩蛋在最後,記得看到最後!!! 上週參加了在台北舉辦的 Gamma User Meetup,真的像是打開了一扇通往簡報藝術的新世界。 在這場活動中,講者和使用者分享了 Gamma 在不同領域的應用,而我個人覺得最讓人印象深刻的 3 個領域分別是「產品/專案成果展示」、「教育應用」以及
日更Day107/365 #自我覺察 因為想混一篇日更就直接開一篇了,順便寫一下相關的一些期待與展望XD 這次一開始的自我介紹,小金魚請大家複讀一次正在介紹的稱呼的環節真的很特別,讓人有一種很受歡迎的錯覺,所以才會有這個勇氣走到中間說話,這是個突破。 說起來,真的不太習慣
日更Day105/365 #自我覺察 一天下來好累,但果然就是要參加啊。 我想也不用說太多,因為這次人好多,一到我想,這人真的多,馬上想找舒適圈(訓練營小圈圈),但沒位子就算了。 看到熟悉的面孔感覺親切、看到新加入的人感覺有些不安但又有點期待。 回到一個常見的自我介紹。
从个人发展的角度来讲,我认为每个人都要有一点自己的长处,这个长处并不是人们常说的一些爱好之类的东西,而是个人身上那种相对稀缺的禀赋,或者是几种特质组合起来的独特性能。 这是任何时候都能保持一定竞争力的前提,也是一种不需要卷就能体现出来的个人优势。其实不需要对自己要求很高,只要在自己的领域高于平均,就