建模(Modeling)和抽象(Abstracting),是架構師(Architect)最核心的能力。在軟體開發領域,當一個號稱架構師的人,只懂各種流行的伺服器,但卻沒有良好的建模和抽象的能力,這在我看來是沒有資格稱為架構師的。這篇文章先講述建模的部分,後續文章再講抽象。

模型(Model)的第一個價值:作為溝通的工具。不管是實際的事物,或者你腦海中的想法,通常都非常複雜或模糊,難以讓其他人理解。這個時候,透過模型,或許就可以解決這個問題。地球儀是很有效的模型,幫助我們理解各國疆域和地理位置。建築藍圖也是很有效的模型,幫助建築工人建設房屋。

對於軟體開發來說,模型就是你對於軟體專案的設計(包括系統設計和架構設計),就像建築藍圖、城市規畫一樣。對於企業組織來說,模型就是你對於公司的設計(包括組織結構和流程設計)。

模型的第二個價值:有助於設計、實驗、觀察、改進變化過程。實物的變化,成本非常高,模型的變化,容易多了。透過模型的調整,我們可以推演出適合的變化軌跡,並應用到真實的世界上。

對於軟體開發來說,模型的變化,就是你對於軟體的重整(重新工程化)的設計。對於企業組織變革來說,模型的變化,就是你對於企業架構和業務調整過程的設計。

總之,善於利用模型,你的思維會更清晰,因為模型可以去蕪存菁地描述一件事物,這使得我們可以傳遞想法、研究過程。

「建立模型」簡稱「建模」。模型具體的呈現方式,可以是數學式子、畫圖、表格、粘土作品、木頭雕刻 … 。我們也可以規範出一套模型的通用基礎成分和規範(例如圓形代表什麼意思、箭頭代表什麼意思),這就是建模語言(Modeling Language)。UML 就是一種很廣泛使用的建模語言。不幸的是,我發現很多人會被建模語言給限制住了,變得很僵化。語言(不管是人類的語言或建模語言)是活的,清楚地表達思想才是運用語言的重點。

建模時,一定要時時刻刻知道目的是什麼,這是建模成功的關鍵。在目的不明確的情況下建模,最後的模型會被很多沒有價值的訊息污染,但關鍵的訊息可能卻付之闕如。良好的建模能力,重點在於「去蕪存菁」。去蕪存菁的關鍵在於兩點:1. 記錄和目的相關的要點 2. 只記錄有差異的點。

記錄和目的相關的要點。例如:你要為你自己建模,目的是為未來的就業做準備,那麼,你的體型、外貌、性別、家庭背景、興趣、特長、年齡…這些訊息就是模型內需要記錄的。但是如果你為你自己建模,目的是為了健康,那麼,你不需要記錄外貌、家庭背景、興趣、特長,但要記錄身高、體重、血壓、心率、體脂率。從這兩個例子可見,目的對於模型的影響有多大。

只記錄有差異的點。例如:你為你自己建模的時候,不管是基於什麼目的,你都不需要記錄你有兩個眼睛、一個嘴巴、一個胃。因為所有的「人」都一樣的屬性,把這些大家都一樣的訊息記錄下來是沒有價值的,反而會導致資訊超負荷(Information Overload)。只記錄差異的點,才能精簡。這就牽涉到「抽象」的問題了,「人」是抽象的結果。在下次的文章,我會詳細解釋「抽象」的一切。

總之,架構師最重要的能力是1.建模、2.抽象。建模的兩個價值是作為1.溝通工具、2.轉換設計工具。良好建模的重點在於1.記錄目的相關的要點、2.記錄有差異的點。

祝願你早日培養出架構師建模和抽象的能力。而如果你持續把這個能力再往上抽象一層,進入另一個維度,你將會發現你的能力不只可以用在軟體開發領域,還可以廣泛地用在許多地方,例如生活上和商業上。維度越高,適用性越廣。

作者簡介


Advertisement

更多 iThome相關內容