1、架構設計的意義
(1)應用代碼邏輯清晰、避免代碼冗余;
(2)代碼通用,方便軟件移植;
(3)最大限度做到無需大量修改即可復用;
(4)各功能獨立,低耦合高內聚;
(5)利用架構及其規則進行開發,在開發時間、成本、生產率和產品質量方面具有極大的回報。
2、總體架構圖
3、結構層說明
3.1、硬件層
硬件層可分為硬件抽象層和硬件驅動層兩部分
(1)硬件抽象層主要是STM32片內的外設驅動,如 GPIO、RCC、ADC、SPI、I2C、USART等
(2)硬件驅動層主要指設備的外設驅動
3.2、功能模塊層
功能模塊層封裝實現具體功能的子模塊,如 :儲存讀寫模組、按鍵觸發模組、系統心跳模組、顯示操作模組、串口收發模組、數據采集模組等
3.3、應用接口層(該層根據情況而定)
應用接口層主要目的是提供應用程序與開發人員以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。提供API所定義的功能的軟件稱作此API的實現。API是一種接口,故而是一種抽象。
3.4、業務邏輯層
業務邏輯層 通過調用應用接口層API接口實現產品的各個業務功能,如:按鍵事件業務、用戶GUI業務、通信收發業務、線程守護業務、系統自檢業務;
3.5、應用層
應用層為程序的總體運行框架,組織、整合、調用業務邏輯,完成產品整體功能
4、遵循規則
4.1、命名
(1)文件名添加前綴:硬件抽象層( hal_ )、功能模塊層( fml_ )、應用接口層( api_ )、業務邏輯層( bll_ )、應用層( app_ );
(2)api接口命名規則:api_功能名稱;
4.2、調用
(1)同一級別的層相互獨立,互不影響、互不干擾、互不關聯,不能相互調用,只能調用下層接口;
(2)各個層之間不能跨層調用,如:在業務邏輯層不能直接調用功能模塊層的代碼 ,僅能調用應用接口層代碼;
4.3、增刪
(1)新增接口要求與整體規則統一,后續只能增加,不允許修改、不允許刪除;
(2)每次新增接口,需在文件頭備注 (作者、版本信息、狀態功能) ;
5、優劣評估
5.1、優勢
(1)底層驅動變動、更換平台,只需更改底層驅動,其他的層次結構不受影響、干擾,無需重新修改;
(2)功能模塊變動,只需單獨升級功能模塊,其他模塊不受影響,應用層也不受影響;
(3)架構設計完成后主要的工作區在業務邏輯層,應用層的作為整體架構的調度者、領導者,通過調用業務邏輯完成產品功能。
5.2、劣勢
(1)架構設計一般比較復雜,設計和實現一個好的架構需要相當的時間。所以,一般只有在架構可以被多次反復應用的時候,前期投入的時間成本會得到豐厚的回報;
(2)架構設計規定了一系列的接口和規則,這雖然簡化了二次開發工作,但同時也要求二次開發者必須記住很多規則,如果違反了這些規則,就不能工作。但是由於架構屏蔽了大量的領域細節,相對而言,其學習成本還是大大降低了;
(3)架構的升級對已有產品可能會造成嚴重的影響,導致需要完整的回歸測試。
6、實例