這可能是你見過最好的工程師繪圖指北

今日長劍在握發表於2020-08-04

作為一名工程師,繪圖可以說是必備的技能。優秀的繪圖能力就像寫得一手好字,總能讓你在團隊或者客戶面前閃光,這也是你贏得團隊青睞和客戶讚揚的一個重要能力。

繪圖的過程其實是分解任務分離關注點的過程,它和程式設計的過程幾乎重疊,因此繪圖和程式設計是正向相互促進的。也就是說,你在繪圖的過程中發現的問題很有可能會在程式中出現,你在程式中要面對的問題很有可能在繪圖的過程中就發現了,早發現早處理。

為什麼別人畫的圖比我的好看?有什麼技巧嗎?畫圖醜是天生的嗎?我能不能通過短時間的學習繪製出逼格高的程式設計圖呢?

繪圖是點、線、面、光影和色彩的融合,想要設計出漂亮的圖,可以閱讀設計領域的相關知識,跨界是目前你跟同領域對手拉開差距的優選之一。今天我們就來學習如何畫得一手好圖,畫好圖有哪些技巧和策略,並手把手帶你繪製程式設計過程中常用的時序圖、流程圖、應用分層架構圖。

Processon

ProcessOn 是一個線上作圖的聚合平臺, 運營方是北京大麥地資訊科技有限公司。ProcessOn 的繪圖基於瀏覽器,因此它不受作業系統限制,可以跨平臺操作。ProcessOn 的畫布分為兩大類:思維導圖畫布和自由畫布。思維導圖畫布專注於節點屬性和關係的構建,圖 1 是思維導圖畫布的模板示例。

圖 1 思維導圖畫布的模板示例

自由畫布則給我們提供了盡情揮灑的空間,我們可以在自由畫布中繪製 UML 類圖、功能模組組合圖、事件流程圖和應用架構圖等,圖 2 是自由畫布的模板示例。

圖 2 自由畫布的模板示例

既然是公司運營,那麼肯定需要盈利點了,ProcessOn 產品的價格分為三個等級:免費版、個人版和團隊版。圖 3 展示了不同版本的價格與功能差異。

圖 3 ProcessOn 不同版本的價格與功能差異圖示

使用者註冊登入後就可以使用免費版,雖說它限制了單個賬戶檔案數量,但我們可以通過邀請好友來提升檔案數量上限。值得一提的是,一個檔案裡可以繪製多幅圖,這樣檔案上限的問題就緩解了。不過如果是團隊使用或者商用,建議購買個人版或者團隊版,一方面能夠支援開發團隊提供更穩定的服務和豐富的功能,另一方面也尊重原創勞動。

金山 WPS

WPS 是國內不可多得的優秀應用,與微軟 Office 辦公套件分庭抗禮且不落下風,實在令人佩服。WPS 近年來也大力發展除文件、表格和簡報外的附加功能,思維導圖和流程圖兩大模組爭相上線。圖 4 為 WPS 思維導圖佈局模板圖示。

圖 4 WPS 思維導圖佈局模板圖示

從檔案匯出的格式(.pos)來看,WPS 似乎是跟 ProcessOn 合作推出的思維導圖和流程圖模組。相對於 ProcessOn 免費版的檔案數上限,WPS 更有優勢,但是從 WPS 匯出圖片時會帶有水印。如果是團隊使用,ProcessOn 的多人協作看起來更好用。

Diagrams

diagrams 是一款免費開源且跨平臺的繪圖應用,支援離線繪圖線上繪圖。線上繪圖和 ProcessOn 一樣,在瀏覽器中操作即可。值得稱讚的是 diagrams 提供了 macOSLinux(deb/rpm/snap/AppImage)和 Window 等主流作業系統的桌面應用,這意味著我們可以離線繪圖。圖 5 是 diagrams 官網給出的繪製成果圖示。

圖 5 diagrams 官網給出的繪製成果圖示

diagrams 沒有檔案數量限制,它適配了 Google 雲盤微軟 OneDriveAtlassianDropboxGitHubNextCloud蘋果的 iCloud 等雲端儲存,同時也支援將檔案匯出到本地,太棒了!

diagrams 支援自定義的匯出縮放,允許我們在匯出時配置圖片縮放比例,例如 75% 或 300%。匯出縮放能夠保證圖片的清晰度,是超清大圖的保證。如果你要印刷設計出來的圖,可以在匯出時設定 DPI 的值,具體操作會在後面介紹到。

無論是 ProcessOn 還是 WPS,匯出的圖片(PNG/JPG)都不夠清晰,WPS 甚至還帶有水印。如果想要將 ProcessOn 上的繪圖成果匯出為超清圖,那必須先匯出為 SVG 格式,在此基礎上通過其他應用轉換為 PNG 格式,要求在轉換時設定圖片縮放比例。在匯出圖片檔案的清晰度方面,diagrams 完勝。

我之前用過很長一段時間的 ProcessOn,《Python3 反爬蟲原理與繞過實戰》這本書創作的時候書中插圖都是用在 ProcessOn 繪製的。偶然看到了 diagrams,體驗過一次之後就全面轉到 diagrams 了。

本篇文章將基於 diagrams 的桌面應用,請各位讀者自行前往 diagrams 官網下載適合自己作業系統的桌面應用。

小知識:diagrams 還有另外一個域名,draw.io,當你看到其他地方介紹 draw 繪圖工具時,大概率指的就是 diagrams。

佈局概覽

開啟 diagrams 桌面應用,它會讓我們選擇建立新繪圖或者開啟現有繪圖,懸浮窗右下角可以選擇語言。

選擇建立新繪圖後跳轉到如下圖所示的畫布型別選擇介面,左側是不同分類的畫布模板選單欄,右側是對應分類的畫布模板。通常我們會選擇空白框圖模板,如果你目標就選擇自己喜歡的模板,點選右下角藍色的建立按鈕即可。

我選擇的是地圖分類裡面的 mind map 模板,點選建立按鈕後 diagrams 根據我的選擇為我開啟了如下圖所示的新畫布。

畫布分為 ABCDEF 幾個區域,它們對應的功能或者作用分別如下:

  • A - 選單欄,可對檔案或圖形進行操作;
  • B - 工具欄,可對畫布或者圖形進行操作;
  • C - 圖形欄,diagrams 為我們提供的基礎圖形元素和圖形元素擴充套件能力;
  • D - 分頁欄,可以在單個檔案裡新增多頁畫布;
  • E - 元素屬性欄,可調整圖形元素、畫布或文字元素的屬性,例如字型大小、圖形顏色、網格顯隱;
  • F - 畫布區,主區域;
⚠️ diagrams 不會自動儲存畫布原檔案,在建立檔案後按 Ctrl+S 並根據提示選擇儲存方式和儲存路徑。選擇好原檔案的儲存後,後續我們對畫布、圖形元素和文字元素的改動它才會自動儲存。

新增多個頁面

你可能會好奇,這個分頁欄的應用場景是什麼:

  • 每個圖一份檔案,太多了!
  • 一個功能模組(例如登入)對應的幾個圖(例如流程設計圖、原型草稿、登入時序圖),分開存放太難找!
  • 關聯功能互相比對,開啟多個視窗太煩人!

正好,D 區分頁欄就是為了這些需求量身定製的。你可通過點選 D 區分頁欄的 + 號來增加畫布,也可以通過點選 D 區左側的選單按鈕 + 插入頁面 來增加畫布。如果想要刪除畫布,那麼選單按鈕 + 刪除 就可以了。

你還可以為每頁畫布起名字,選單按鈕 + 重新命名。這樣在開啟 diagrams 的時候就知道哪頁畫布上面畫的是什麼,不用一個個點選去看了。

新增更多圖形

如果左側提供的基礎圖形無法滿足你的繪圖需求,或者你想要從 diagrams 提供的圖形中尋找靈感時,你可以點選 C 區底部的更多圖形選項,點選後彈出如下圖所示的圖形選擇介面。

diagrams 提供瞭如安卓元件圖形、伺服器元件圖形、雲原生圖形、電路圖形等數十類非常豐富的基礎圖形,找到喜歡的圖形類別後給它打上勾,接著點選右下角的應用按鈕即可。

繪圖基本操作實踐

要想使用 C 區的圖形,我們只需要點選並將其拖拽到 F 區的畫布上即可,想放到那個位置就在那個位置鬆開滑鼠。下圖是拖拽矩形到畫布的截圖,由於滑鼠未鬆開,畫布上只是顯示虛線的矩形,當滑鼠鬆開時顯示的就是我們拖拽的左上角那個實線矩形。

如果你想在畫布上再放置一個矩形,你可以再次拖拽,或者用快捷鍵 Ctrl+C 和 Ctrl+V 複製剛才那個矩形,並拖動到合適的位置。

如何表達流程

流程和方向在圖形中是一種重要的表達方式,例如一個圖形元素的箭頭指向另一個圖形元素。在 diagrams 中,我們只需要將滑鼠移動到圖形元素上,它就會出現如下圖所示的藍色錨點淺藍色四向箭頭

四向箭頭表示這個元素可以向四個方向移動,藍色的錨點則是此圖形元素與其他元素關聯時的起點或終點。在上圖淺綠色圓圈蓋住的藍色點處單擊滑鼠並向右拖動,即可在此錨點上生長出一個直線箭頭。將滑鼠的焦點移動到右側矩形上時,右側矩形也會出現藍色錨點和四向箭頭,將滑鼠焦點置於右側矩形左邊的錨點處釋放,此時畫布如下圖所示。

這樣我們就將兩個不相關的圖形元素關聯到一起了,由於箭頭的存在,這一組圖形元素看起來像是一個短的流程。

如果你點選一個圖形元素,它會在四周產生天藍色的圓點,點選並拖動遠點可改變圖形元素的形狀,例如矩形的寬和高。將滑鼠焦點移動到淺藍色四向箭頭上時,箭頭會變成藍色,點選箭頭便會複製一份相同的圖形元素且以箭頭進行關聯,具體效果如下圖所示。

NPC 提示:更多操作技巧和小知識可通過親自動手獲得哦。

文字與格式

文字描述本身就具備資訊傳遞的屬性,將它用在圖形中會大大增加資訊傳遞能力。以上圖為基礎,滑鼠雙擊矩形便可出現文字輸入框,在左邊的矩形中輸入客戶端、右邊的矩形中輸入服務端,然後將 C 區的 Text 元素拖動到直線箭頭上方並輸入請求,此時畫布如下圖所示。

明眼人一看就知道描述的是雙端網路互動的請求過程——客戶端向服務端發出網路請求。我們可以通過 E 區的文字皮膚調整文字格式,例如字型、加粗、斜體、文字位置、文字書寫方向、文字顏色、透明度等,還可以為文字加上背景色、設定邊框顏色、調整文字間距和字型大小。

元素樣式

文字有屬性,圖形元素也有屬性。選中圖形可通過 E 區的樣式皮膚和調整圖形皮膚更改圖形元素的屬性,例如調整圖形元素的顏色、更改線條風格型別、替換箭頭風格型別、為圖形元素設定陰影、圓角直角切換、手繪風格切換和圖形層級等。瞭解到這些知識後,我們可以繪製一個簡單的流程圖,通過 E 區的幾個屬性皮膚調整元素樣式,具體效果如下圖所示。

看上去是不是比之前的圖好看多了?

元素層級與圖層層級

在實際操作中你會發現,當圖形元素重疊在一起的時候,先放置的圖形元素總是處在後放置的圖形元素下方,後放置的圖形元素會擋住先放置的圖形元素。

在同一個畫布當中,圖形元素是有層級的,跟 Photoshop 畫布的層級相似,也跟我們程式設計領域中的棧相似。

如上圖所示,淺藍色、淺紅色和淺綠色的圖形元素堆疊在同一個位置。由於淺藍色圖形元素先放置,所以它在最底層。第二個放置的是淺紅色的圖形元素,它在中間層。最後放置的是淺綠色的圖形元素,所以它在最上層。可以通過 E 區的調整圖形皮膚改變圖形元素的層級,或者直接在圖形元素上右鍵喚出選單欄,選擇移至最前或則移至最後即可。下圖描述了將淺綠色圖形元素設定移動至最後屬性的位置變化。

原來的淺綠色將處於最底層,中間層則是淺藍色,之前在中間層的淺紅色現在到了最上層。

diagrams 支援類似 Photoshop 的圖層,在同一個畫布當中可以有多個獨立的圖層。層與層之間有良好的隔離,我們可以將相關聯的元素放到同一層,這樣就可以得到像組合和鎖一樣的效果。我們可以在 B 區工具欄最左側開啟圖層,開啟後 F 區彈出圖層設定皮膚,點選 + 號即可新增圖層。下圖展示了圖層之間的關係和圖層設定皮膚的一些功能。

我們可以為圖層設定名稱,這有助於我們清晰地梳理自己的構思。從圖中可以看到正方體和矩形的位置是重疊的,但誰在上面誰在下面由圖層決定,而不是像之前一樣由拖放的先後順序或者通過調整元素層級決定,即圖層的層級優先順序高於我們設定的元素層級

如果你想刪除某個圖層,只需要選中它,然後點選圖層設定皮膚左下角的垃圾桶圖示即可。

看到圖層左側的鎖圖示了嗎?它為我們帶來圖層級別的鎖,只要上了鎖,我們就無法改變該圖層任何元素的屬性、樣式、排列等,這跟我們後面提到的元素鎖有很大的區別,圖層鎖的優先順序高於元素鎖

換個角度思考,層與層之間的隔離像是程式設計中類的單一原則,這樣我們就可以用物件導向的思想進行構圖設計。如果你有開發經驗你就可以將我們常常聽到的約定優於配置組合優於繼承等思想應用到繪圖這件事上。

匯入圖片

Photoshop 、WPS 流程圖和 ProcessOn 都有圖片匯入的功能,功能齊備的 diagrams 自然也不遜色。點選 A 區選單欄的調整圖形選單,在子皮膚中選擇插入,再在子皮膚中選擇圖片即可進入圖片選擇環節,確定選擇後圖片將會被匯入到 diagrams 畫布中。

匯入圖片後我們可以根據需求或者喜好將圖片與 diagrams 的元素結合起來。例如匯入一段程式碼圖示後,使用箭頭和文字為圖片中的程式碼新增註釋,匯出結果如下。

這樣看起來,是不是比在瀏覽器中直接看程式碼漂亮多了?邏輯也清晰多了?

如果要考慮移動端的讀者閱讀文章,那麼用圖片代替程式碼是優選方式。你想想微信公眾號推文場景,使用者看圖片程式碼會比看長串的程式碼舒服太多了。

檔案匯出

繪製完圖之後點選 A 區選單欄左上角的檔案,然後選擇子選單中的匯出為,再選擇子選單中的檔案格式即可。根據你的需求,你可以匯出 PNG 格式、SVG 格式、PDF 格式甚至是 XML 格式的檔案,具體介面如下圖所示。

當你選擇好格式後,它還會彈出一些選項讓你配置。例如選擇圖片格式時會彈出圖片對應的配置視窗,我們可以設定圖片縮放比例、圖片邊框寬度、是否將網格效果一併匯出、是否將陰影效果一併匯出匯出當前檔案的單頁或指定頁內容、是否採用透明背景等,具體介面如下圖所示。

配置之豐富令人滿意。另外,如果你繪製的圖用於印刷,那麼它也能滿足你對高 DPI 的需求。匯出時再子選單中選擇高階選項會彈出入下圖所示的配置介面。

在這裡我們就可以設定想要的 DPI 了。海報、宣傳單和圖書印刷的 DPI 值通常是 300,如果你追求更好的效果,它也允許你設定更大的值。

填寫好配置後點選右下角的匯出按鈕,按照指引選擇檔案存放位置即可。值得一提的是,匯出速度相當快,正常大小的圖匯出速度在 1 秒內,圖形元素較多的圖或者 DPI 值較大的圖匯出速度可能會超過 1 秒,但也慢不到哪裡去。

繪圖操作進階

經過上面的學習,你已經掌握了 diagrams 桌面應用的基本操作,還懂得為元素設定屬性和不同的樣式。但要想輕鬆完成繪圖且繪製出更好看的圖,還需要學習一些操作技巧。

多元素自動對齊

畫布沒有自動定位和元素對齊功能,在放置多個元素後,我們很有可能需要將它們對齊,以保持美觀和專業。常用的對齊有向上對齊、向下對齊、垂直居中、左對齊、右對齊和水平居中等。

見名知意,向上對齊、向下對齊和垂直居中指的是多個元素對齊時所有元素參照最上、最下或者中間元素的位置對齊,而左對齊、右對齊和水平居中則是所有元素參照最左、最右或者中間元素的位置對齊。下圖描述了多個高度不一致的元素採用向上對齊的前後對比。

可以看到,對齊後的所有元素參照的是對齊前最上的位置。如果你對它的對齊邏輯還是不太理解,建議你親自動手操作一下,聰明的你在幾分鐘就能夠掌握對齊規則。

多元素等距排列

很多時候我們需要在水平方向或者垂直方向放置多個元素,本著專業且美觀的出發點,我們會要求元素們等距排列。這樣的需求通常有兩種辦法:

1、藉助頁面網格可以做到視覺上的等距,例如元素之間間隔 1 個網格;

2、藉助選單欄中的等距分佈選項;

在多個元素相同且大小一致的時候,採用第 1 種方法也是很直接有效的,但如果元素大小不一或者形狀各不相同,那就不太好操作了。第 2 種方法是藉助 diagrams 專門為使用者提供的等距排列工具,只需要選中想要排列的多個元素,然後點選選單欄中的調整圖形並在子選單中選擇等距分佈,然後按需選擇水平方向或者垂直方向即可。第 2 種方法可以忽略元素大小和形狀,達到等距排列的目的。多元素水平方向等距排列的具體操作和排列結果如下圖所示。

要注意的是,等距分佈功能選擇的間隔距離是以多個元素佔用的總距離進行平均劃分的,並不是根據兩個元素之間的最小距離或者最大距離進行劃分。

多元素組合

在畫布中,可操作的最小單位是 1 個元素。如果我們想要操作多個元素,那麼就需要選中它們,再執行例如拖拽、改變大小、改變屬性等操作。但是在元素繁多且結構複雜的畫布中,當你需要將相關聯的多個元素拖動到另一個位置的時候,很容易誤選其他元素或者漏掉某個元素,這給我們造成了一些小麻煩。

選中想要組合的元素後點選選單欄的調整圖形選項,在彈出的子選單中選擇組合即可。上圖給出了組合前後的對比,可以看出組合前的可操作單位是單個元素,組合後可操作單位變成了一組元素。如果你想解散某個組合,那麼選擇組合後通過選單欄中的調整圖形>取消組合就可以將它們打散。

看到子選單中的移除組合了嗎?動手試試,看看它有什麼作用。

多元素旋轉

單個元素的旋轉很簡單,選中元素後元素的右上角會出現一個可旋轉的圖示,滑鼠懸停在旋轉圖示後按下並調整角度便可實現元素的旋轉。多個元素的旋轉有兩種辦法:

1、元素組合,將多個元素變成一個可操作單位,此時一組元素和單個元素的旋轉操作相同;

2、選中多個元素,通過調整圖形>方向>旋轉調整角度,可輸入準確的旋轉角度值;

兩種方法的應用場景各不相同,大家使用的時候根據需求選擇即可。下圖描述了第 2 種方法的具體操作和旋轉結果。

旋轉選項在 A 區選單欄的調整圖形>方向選單中。

元素鎖

鎖在程式設計中有很多應用場景,在 diagrams 中我們可以藉助鎖這個工具保護元素或組合,避免在誤操作等場景改變原有的元素或組合的內容、排列方式和所在畫布的位置等。元素的上鎖解鎖在 A 區選單欄的編輯選單下,鎖定和解鎖處於同一個選項。下圖描述了元素上鎖前後的差異。

鎖定前元素具備可操作屬性,選中後可以改變其樣式、大小等。鎖定後元素不具備可操作屬性,我們無法調整內容、排列方式和所在畫布的位置,也沒法刪除這個元素或者組合。要注意的是,上鎖後仍然可以改變單個元素的樣式,例如顏色和線條型別。

在畫布中查詢

在一個原檔案中可能有多個元素或者多組元素,查詢功能可以幫助我們快速定位到指定的元素或組合。查詢的物件只能是文字元素,無法查詢圖形元素。查詢功能在 A 區的編輯選單下,選擇查詢功能後會在 F 區彈出一個查詢選項視窗,我們可以根據自己的需求設定查詢條件。值得一提的是,它支援所有頁面的查詢,這簡直太棒了!下圖描述了查詢功能的使用和查詢結果的展示。

查詢到相關文字後會定位到該元素或組合,無需我們手動定位。在有多個符合條件的場景中,可以通過查詢按鈕在多個相關結果之間跳轉。

配色和風格讓圖形更具表現力

人靠衣裝馬靠鞍,優秀的配色和風格選擇不僅能增加圖的表現力,還能讓你和你的團隊看起來更專業。逼格高對於業務發展和團隊形象也是很有幫助的,如果你畫的圖一團糟,而競爭對手畫的圖卻顯得很專業,別人能比你多收幾萬塊不是沒有道理的。

能改變映像的手繪風格

相比於工具自帶的那些直來直去的圖形元素來說,手繪風格給人一種親近、舒適、用心的感覺,從下面這張圖裡感受一下。不得不說,手繪風格配網格底紋就像火鍋配牛肚,舒坦!

由於它具備這些貼近閱讀者的屬性,所以手繪風格成為了現在 IT 領域知識付費專欄或者教學素材中常用的風格之一,在極客時間專欄中得以大量應用,在 IT 類的書籍中也頻頻登場。

在 diagrams 實現手繪風格很簡單,選中元素後在右側 E 區的樣式皮膚中勾選手繪即可。要注意的是,有一部分基礎圖形是不支援手繪風格的,所以在繪圖時要選擇支援手繪風格的圖形元素,這樣就能夠保持整體風格統一。

能增強效果的陰影

陰影一直都是影像設計中重要的一種效果增強方。我不是專業的設計人員,因此無法給出專業的建議或者看法,但我可以從視覺的角度描述陰影的作用和它所呈現出來的效果。

上圖由一列手機圖形元素和一個顯示器圖形元素構成,左側 5 部手機圖形和第 6 部帶有陰影和配色的手機看起來是不是完全不一樣,有沒有一種躍然於紙上的感覺?這很像現代 IPS 硬屏顯示器和前些年普通顯示器的差距,你感覺它浮在上面,離你很近。

最右側的顯示器圖形也設定了陰影,這讓它看上去更立體,像不像是 2.5D 的圖形?

光和影在設計領域一直都是相當重要的,利用好光和影能夠讓事物更有活力、更形象、更立體。上面的顯示器圖形只是光和影運用中最簡單的一種,我們拋開開發者的身份,欣賞一下設計師們的作品。

雖然這些都是平面設計,但在視覺上它們卻是立體的,而且還具備很強的空間感。這是一種普通開發者難以描述的美感,真的很好看,不是嗎?

配色知識

說到圖,那就一定得聊聊配色。我覺得色彩是人類感知世界多元化的一種途徑,好的色彩搭配會讓我們覺得心曠神怡,但糟糕的配色會引起我們的反感。下面兩幅圖,一副用了整體色調相近的淺色,一副用了整體色調差異較大的深淺混搭,你覺得哪幅圖看著舒服一些?

雖然這會受到個人傾向和風格影響,但我覺得大部分讀者會認為第一幅圖看上去更清爽舒服,第二幅圖濃墨重彩不太搭。跟上面聊陰影是一樣的,我不是專業的設計師,無法給出專業的建議和看法,但這裡準備了一些設計網站上關於配色的文章,大家可作為參考:

漲姿勢!為什麼有的顏色看起來非常高檔?

設計師的讀書筆記!帶你重新全面認識色彩系列之紅色篇

所謂配色達人,就是一次出48個方案

那些用色高手,都做過這些訓練!

你的配色看起來總是不舒服?用這個策略性配色法則

裡面提到了很多關於色彩搭配的技巧和策略,大家不妨去學習學習,這樣你就能繪製出更美的圖,而且對自己的審美提升也會有很大幫助哦。文章中提到的一些配色和策略截圖如下,具體還需你親自去閱讀哦。

配色工具

相信你從上面推薦的配色文章中收穫了不少知識,在實際應用中我們還需要一些輔助工具來提升設計效率或者進行一些配色測試、配色比對。你看看人家設計的圖,和你設計的是不是有很大差異?

如果是的話,趕緊去學習吧!我的建議還是向專業人士看齊

講真,這可能是目前最全的線上配色工具合集了

業界良心!2015年最優秀的20款網站配色方案(附配色工具)

第一波!2020年3月超實用設計工具大合集

16款激發靈感的配色神器,讓你的創意更出彩!

9款關於配色、PS和網站風格的設計工具,超級實用

繪圖實戰

能看到這裡的讀者,我想肯定是希望能夠切實提高自己的繪圖水平的,並不是走馬觀花的泛泛之輩。接下來我將以演進的方式手把手帶你繪製開發過程中常用的那些圖,如果你想深入學習 UML 圖的繪製,可以訪問我的個人站點——夜幕鎮嶽劍韋世東的技術日誌,上面還有很多免費公開優秀技術專欄呢。

繪製汽車解鎖時序圖

時序圖是我們在程式設計階段常用的一種 UML 互動圖,它通過描述物件之間傳送訊息的時間順序顯示多個物件之間的動態協作。它可以表示用例的行為順序,當執行一個用例行為時,其中的每條訊息對應一個類操作或狀態機中引起轉換的觸發事件。

這裡以汽車鑰匙的上鎖和解鎖過程為例,繪製一幅時序圖。首先捋清楚參與其中的幾個角色:鑰匙擁有者、鑰匙、車,由此我們可以畫出如下圖所示的基本結構。

然後我們捋一捋上鎖和解鎖的過程,鑰匙擁有者按下鑰匙上的按鍵,車鑰匙通過訊號將鎖訊號傳遞給汽車,汽車根據鎖的原狀態作對應狀態切換,從而實現上鎖和解鎖的目的。下圖描述了從鑰匙擁有者按下鎖按鍵到汽車改變鎖狀態的時序。

在實際生活中,我們知道汽車鎖狀態改變時會發出訊號以表示這次操作成功了,類似於 TCP 協議中的 ACK。汽車發出的訊號通常是燈光或聲音,訊號的實際接收者是按下鎖按鍵的鑰匙擁有者,由此我們可以再完善一下這幅時序圖。

上圖就是完整的汽車上鎖和解鎖時序圖,你學會了嗎?

小提示:在表達時序圖角色時,冒號左邊描述的是角色名稱、右側描述的是角色,如果冒號左邊沒有內容則代表這是一個匿名角色。如果想要更具體一些,可以改為“韋世東:鑰匙擁有者”、“賓士:汽車”。

繪製流式處理流程圖

配色知識那個小節中用到的圖示描述的就是流式處理,在 Kafka 流式處理的思想中(我沒看過 Spark 和 Flink 的模型),流式處理是一端作為起始輸入、一端作為最終輸出、中間可以有多個處理環節的一種組合。由此我們可以畫出如下圖所示的基本結構。

然後在中間放置多個處理環節,這些處理環節實際上就是一個個程式,它們從 Kafka 中獲取資料,處理完成後又放回去。

上圖就是完整的流式處理流程圖,你學會了嗎?

繪製移動端應用分層架構圖

相對於單個模組的時序圖和簡單環節的流程圖而言,Web 應用分層架構更復雜,需要的圖形也更多。假設我們要用圖表達一款移動端應用的架構圖,要清晰有條理地展現出整個系統的最大執行單元之間的關係,你會怎麼做呢?

在已知需求和功能模組的情況下,我們要做的第一件事就是分層。分層不僅能在繪圖中發揮重要作用,在軟體開發和設計中也是十分重要的,它能夠讓執行單元之間的責任更清晰明確。我們先來簡單粗略的劃分一下:

  1. 能為使用者提供服務的視為應用層;
  2. 負責儲存應用資料的視為儲存層;

由此我們可以畫出如下圖所示的基本結構。

再來看看實際開發中是否需要加入其他元件,例如提高查詢效能的快取削峰填谷的訊息佇列、負責請求轉發的閘道器等,加上這些元件後圖就變成了下面這樣。

這裡你不必深究每個層級的具體劃分和層級名稱,我們先把結構畫出來。想一想,好像還需要加上監控。監控對整個工程鏈路負責,它是一套單獨的元件,不參與分層,放到側面表示會更合適。後端的整個結構就出來了,這裡我們順便把使用者端也補上。

接下來我們將具體的應用補充進來,讓整個程式看起來更豐滿、更完整。

接著讓我們表達出更貼近真實場景的效果,假設服務基於 Kubernetes、Redis 採用叢集和、MySQL 也採用叢集,那麼我們可以為它們加上貼切的圖示。

一些漂亮的圖形可以在 C 區更多圖形處新增,上圖的手機圖形也是這樣新增進來的。

這樣看上去清晰多了,當然,我們還可以為這些層級或者元件設定底色,用配色增強它們的表現力。

小結

看完這篇文章,想必你已經清晰地瞭解到繪圖這件事在程式設計你的工程師職業生涯中能發揮出的作用有多重要了。

我們現在再回顧一下前面所學到的知識:

在學習完繪圖基本操作之後,你學了自動排列、多元素組合、自動對齊和元素鎖等知識,現在你的繪圖效率比之前高很多。

接著,你又瞭解到了風格對讀者的影響,並學會了使用手繪風格。在配色方面,你去閱讀了設計領域的一些專業文章,瞭解到不同場景、不同配色帶來的視覺差異,這直接提升了你繪圖的逼格。

最後,你跟著實際需求的分析和假設,動手實踐繪製了汽車解鎖時序圖、流式處理流程圖和移動端應用分層架構圖。

現在你已經擁有了自己的繪圖思想,並掌握了繪圖操作。接下來只需要多加練習,將這些技能融入到日常工作當中,相信你一定能夠取得更好的成績,設計出更貼近業務、更美觀的圖。


相關文章