2.2.1 必須熟悉業務
軟件是為業務服務的,業務才是“目的”,軟件系統是為了達成業務系統目標的手段和方法。適應當前的業務需求是基礎,充分考慮和預測未來的業務擴展,根據業務的擴展性來設計軟件的擴展性。如果可預見未來沒有擴展重大新業務的需求,那么相應的軟件架構就沒有必要采用高擴展的軟件架構。比如嵌入式的傳感器數據采集小設備,就沒有必要把云計算等,業務范圍不沾邊的技術點放到其中。軟件架構必須以服務業務為核心思想,不熟悉當前軟件業務、和未來業務的擴展的架構師是很難設計出好的軟件架構。
2.2.1 借鑒業內成熟的架構
不照搬,并不意味著不要借鑒。借鑒業內成熟的軟、硬件架構是相對穩妥、高效的做法。以業內的架構為基礎,根據自身業務的特點,進行適配、裁剪和增加新的功能。熟悉業內常規的、成熟的、最新的軟件架構是架構師的一項基本功。但熟悉并不是意味著必須立即在目標系統中實施這些軟件架構。
2.2.3 采用設計模塊
設計模式(Design pattern)代表了最佳實踐,設計模式是軟件開發人員在開發過程中對一般問題的解決方案;是一套被反復使用的、多數人知曉的代碼設計經驗的總結,經過相當長的一段時間的試驗和錯誤總結出來的。
使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性,合理地運用設計模式可以完美地解決很多問題。每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。
用設計模式構建一個新的軟件模塊時,短期會讓人感覺有多此一舉的味道;但中長期來看,設計模式能夠克服“壞”架構的特征。學習這些模式有助于經驗不足的開發人員通過一種簡單快捷的方式來學習軟件設計。盡管設計模塊通常被有經驗的面向對象的軟件開發人員所采用,但是嵌入式軟件C語言也可以借鑒,參考《嵌入式軟件的設計模式(上)》,《嵌入式軟件的設計模式(下)》。
2.2.4 合理的橫向和縱向切分
橫向切分 :從硬件、驅動、組件到業務層,軟件分層隔離。如數據通信:PHY/MAC/IP/TCP/應用層
縱向切分 :根據業務處理流程的環節縱向切分,不同的環節為不同的模塊,不同的業務功能為不同的模塊,如socket網絡、GNSS衛星定位。
2.2.5 按樹形結構組織
按照樹形結構的方式組織軟件系統,不同的大功能拆分為小功能,文件夾內套文件夾的實現形式,命名上統一,方便按功能快速找到對應的源碼。
2.2.6 降低模塊之間的耦合度
耦合性是一種軟件度量,是指一程序中模塊及模塊之間信息或參數依賴的程度;內聚性是一個和耦合性相對的概念,一般而言低耦合性代表高內聚性,反之亦然。
2.2.7 降低模塊與模塊之間通信
一個軟件內模塊與模塊之間的通信,構成了一個內部的通信網,避免內部模塊的通信采用網狀結構,這種解決方案是設計模式中的中介者模式。
-
嵌入式
+關注
關注
5082文章
19111瀏覽量
304847 -
C語言
+關注
關注
180文章
7604瀏覽量
136710 -
嵌入式軟件
+關注
關注
4文章
240瀏覽量
26642 -
架構
+關注
關注
1文章
513瀏覽量
25468
發布評論請先 登錄
相關推薦
評論