嵌入式系統開發4: 如何開始設計系統架構

閱讀時間約 3 分鐘

設計系統架構有兩種主要的方式:一種是從零開始構建,從一個想法或最終目標開始,逐步組織所有的要素,這稱為組合式設計(composition)。這種方法的挑戰在於,當你面對一張空白頁時,往往會感到迷茫,因為從無到有的創建過程可能顯得遙不可及。

另一種方法則是從現有的產品開始,通過反向工程(分解式設計,decomposition)來理解內部結構。這涉及將現有系統拆解成更小的部分,以便深入了解每個模塊的運作方式。當你加入一個開發團隊時,這通常是你面臨的現實情況——你可能會遇到緊迫的截止日期、大量的代碼和極少的文件紀錄,幾乎沒有時間進行額外的文檔撰寫。

不論採用哪種設計方式,**系統圖表**都是你理解系統的有力工具。透過圖表,你能看清整個系統的結構,這不僅能幫助你保持工作進度,還能保證你撰寫的代碼符合項目的質量標準並能如期交付。


如何利用系統圖表理清思路

在開始設計時,你可能需要準備兩種系統架構圖表:一種是與你正在開發的部分代碼有關的局部架構圖;另一種則是描述整個產品的全局架構圖,以便你理解你的工作如何與整體系統相互協作。

隨著你對系統理解的加深,這些圖表將逐漸變得更大更複雜。當圖表過於複雜時,建議你將某些模塊打包為一個整體,然後在另一個圖表中詳細展開這些模塊的內部結構。

系統圖表的設計不應該拘泥於一種形式,具體取決於最初架構師的設計思路。對於一些系統來說,一個簡單的圖表可能足以說明問題;而對於其他系統,則需要更加詳盡的圖表來描述其運作方式。


從頭開始構建系統圖表

在接下來的幾個部分,我將引導你從頭開始設計一個系統,並且避免過多地依賴現有的系統來進行設計(實際上,大多數成熟系統會比這裡展示的範例更為複雜)。這些圖表的目的不僅僅是為了記錄系統,而是幫助你從不同角度來思考系統的運作方式。

這些圖表更像是粗略的草圖,而不是正式的文檔。它們是用來幫助你理清思路、探索系統如何被設計和組織的工具。保留草圖的靈活性是關鍵,這樣即便需要重畫一遍,你也不會因為過於在意細節而感到氣餒。

使用繪圖工具是可以的,但我個人推薦紙和筆。這種方法能讓你專注於信息本身,而不是被繪圖的過程所干擾。


創建系統圖表的步驟

就像硬體設計師會創建電路圖一樣,軟體設計師也應該製作一系列圖表來顯示軟體各個部分之間的關係。這些圖表能讓你對整個系統有一個清晰的視角,幫助你識別潛在的相依性,並為新功能的設計提供靈感和洞見。

我建議製作四種主要的圖表:

  1. 上下文圖(Context Diagrams):描述系統與外部環境之間的互動,幫助你了解系統與其他系統或用戶之間的關係。
  2. 區塊圖(Block Diagrams):顯示系統內部的各個模塊及其交互方式,有助於識別系統的關鍵部分及其依賴性。
  3. 組織圖(Organigrams):展示系統中不同角色或模組之間的層級關係,適用於較大且具有層次性的系統。
  4. 層次圖(Layering Diagrams):將系統劃分為不同的層次,通常用於描述高階的系統架構,例如操作系統層、中間件層和應用層等。

透過這些圖表,嵌入式系統的設計將不再是看不見的迷宮,而是一個有章可循的過程。希望這些方法能夠幫助你更有效地管理項目中的複雜性,並提升系統的靈活性和可擴展性。

5會員
240內容數
歡迎來到「Will 進步本」!我們將探索計算機科學、商用英文和生成式AI。從基礎到前沿,共同學習和交流,拓展知識視野,啟發創新思維
留言0
查看全部
發表第一個留言支持創作者!
Will 進步本 的其他內容
系統設計的挑戰 嵌入式系統的設計猶如解開一個拼圖,即使是小型的系統也充滿了細節,讓人眼花繚亂。作為開發者,你需要具備全局視野,才能辨識哪些部分的問題能夠用簡單的方法解決,哪些部分則潛藏著複雜的相依性。這時,設計的關鍵在於:不要追求一開始就完美,而是從一個「還可以」的設計開始,然後逐步改進。
面對嵌入式系統挑戰的原則 嵌入式系統開發過程常被比喻為拼圖,一個個相互契合的組件形成完整系統。有時,你可能會強行將不匹配的組件拼在一起,但結果卻與預期的圖像不符。我們應該拋棄將開發最終結果視為單一版本程式碼的想法,嵌入式系統的開發更像是隨著時間變化的拼圖,涵蓋了概念、原型設計、硬體啟動、除錯、測試
資源限制 嵌入式系統的設計是為了完成特定任務,因此會刪減不必要的資源來達成目標。
系統設計的挑戰 嵌入式系統的設計猶如解開一個拼圖,即使是小型的系統也充滿了細節,讓人眼花繚亂。作為開發者,你需要具備全局視野,才能辨識哪些部分的問題能夠用簡單的方法解決,哪些部分則潛藏著複雜的相依性。這時,設計的關鍵在於:不要追求一開始就完美,而是從一個「還可以」的設計開始,然後逐步改進。
面對嵌入式系統挑戰的原則 嵌入式系統開發過程常被比喻為拼圖,一個個相互契合的組件形成完整系統。有時,你可能會強行將不匹配的組件拼在一起,但結果卻與預期的圖像不符。我們應該拋棄將開發最終結果視為單一版本程式碼的想法,嵌入式系統的開發更像是隨著時間變化的拼圖,涵蓋了概念、原型設計、硬體啟動、除錯、測試
資源限制 嵌入式系統的設計是為了完成特定任務,因此會刪減不必要的資源來達成目標。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
不論是平面設計、介面設計,都能見排版這一詞。而排版的作用,即在明確的設計目標中,將所有元素做有組織的安排,精確地傳達訊息。
Thumbnail
組織架構的整合與建立是一個變化與多層面的過程,結合觀點戰略規劃、資源分配和持續改進。以下是一些關鍵步驟和方法。首先需要明確組織的使命、願景和戰略目標。對現有的組織架構進行全面分析,瞭解其優勢和不足之處。識別組織運營中最關鍵的職能和流程,確保這些核心要素在新的架構中得到充分支持和優化。
Thumbnail
在課程設計上,我往往會以客層設計教學的系統。但我逐漸發現只同一個用系統,除了貼近我自己的成長進程,更方便學習者記得。沒有一個系統是不會隨著人的成長和狀態一起演化的。我在設計新的系統時將以往常用的「四層系統」以及「3+1系統」重新簡單在課程設計筆記中介紹。
Thumbnail
資訊架構就像是網站的地圖,讓用戶快速找到所需的資訊。好的資訊架構可提升使用者滿意度、強化 SEO、增進擴充性、達成商業目標。資訊架構可透過使用者訪談、卡片分析、競品分析、使用者測試等方法設計。在設計資訊架構時,需考量用戶的認知方式、目標客群、資訊分類等因素。定期檢驗資訊架構,才能確保用戶體驗。
※ 生產者和消費者模式 定義: 生產者和消費者在同一時間內共同存取某一個資料空間。生產者負責生成數據並將其放入共享空間,消費者負責從共享空間中取走數據進行處理。兩者之間互不相干,也不須互相知道對方的存在。 共同存取資料空間:生產者和消費者共享同一個資料空間。這個空間通常是緩衝區或隊列,用於在它
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
不論是平面設計、介面設計,都能見排版這一詞。而排版的作用,即在明確的設計目標中,將所有元素做有組織的安排,精確地傳達訊息。
Thumbnail
組織架構的整合與建立是一個變化與多層面的過程,結合觀點戰略規劃、資源分配和持續改進。以下是一些關鍵步驟和方法。首先需要明確組織的使命、願景和戰略目標。對現有的組織架構進行全面分析,瞭解其優勢和不足之處。識別組織運營中最關鍵的職能和流程,確保這些核心要素在新的架構中得到充分支持和優化。
Thumbnail
在課程設計上,我往往會以客層設計教學的系統。但我逐漸發現只同一個用系統,除了貼近我自己的成長進程,更方便學習者記得。沒有一個系統是不會隨著人的成長和狀態一起演化的。我在設計新的系統時將以往常用的「四層系統」以及「3+1系統」重新簡單在課程設計筆記中介紹。
Thumbnail
資訊架構就像是網站的地圖,讓用戶快速找到所需的資訊。好的資訊架構可提升使用者滿意度、強化 SEO、增進擴充性、達成商業目標。資訊架構可透過使用者訪談、卡片分析、競品分析、使用者測試等方法設計。在設計資訊架構時,需考量用戶的認知方式、目標客群、資訊分類等因素。定期檢驗資訊架構,才能確保用戶體驗。
※ 生產者和消費者模式 定義: 生產者和消費者在同一時間內共同存取某一個資料空間。生產者負責生成數據並將其放入共享空間,消費者負責從共享空間中取走數據進行處理。兩者之間互不相干,也不須互相知道對方的存在。 共同存取資料空間:生產者和消費者共享同一個資料空間。這個空間通常是緩衝區或隊列,用於在它
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護