講題:The Art of Visualising Software Architecture
講者:Simon Brown (個人網站)
主辦:Agile Hong Kong
時間:2016/01/15 晚上
場地:Odd-e 在上環的新辦公室
上星期五晚出席了一個關於軟件架構視覺化的講座。講者Simon Brown 多年從事系統架構的顧問和培訓工作,也會到世界各地演講,著作有Software Architecture for Developers 和The 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 組成。