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

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

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

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

Processon

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

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

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

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

金山 WPS

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

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

Diagrams

diagrams 是一款免費開源且跨平臺的繪圖應用,支持 離線繪圖在線繪圖 。在線繪圖和 ProcessOn 一樣,在瀏覽器中操作即可。值得稱讚的是 diagrams 提供了 macOSLinux (deb/rpm/snap/AppImage)和 Window 等主流操作系統的 桌面應用 ,這意味着我們可以 離線繪圖 。圖 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 還有另外一個域名,draw.io,當你看到其他地方介紹 draw 繪圖工具時,大概率指的就是 diagrams。

佈局概覽

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

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

我選擇的是 地圖 分類裏面的 mind map 模板,點擊創建按鈕後 diagrams 根據我的選擇爲我打開了如下圖所示的新畫布。

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

  • A - 菜單欄,可對文件或圖形進行操作;
  • B - 工具欄,可對畫布或者圖形進行操作;
  • C - 圖形欄,diagrams 爲我們提供的基礎圖形元素和圖形元素擴展能力;
  • D - 分頁欄,可以在單個文件裏添加多頁畫布;
  • E - 元素屬性欄,可調整圖形元素、畫布或文本元素的屬性,例如字體大小、圖形顏色、網格顯隱;
  • F - 畫布區,主區域;

:warning: 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 區 更多圖形 處添加,上圖的手機圖形也是這樣添加進來的。

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

小結

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

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

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

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

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

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

相關文章