• 正文
    • 1、什么是嵌入式軟件架構(gòu)師?
    • 2、為什么嵌入式軟件要有架構(gòu)思維?
    • 3、嵌入式軟件工程師如何培養(yǎng)架構(gòu)思維?
    • 4、總結(jié)概括
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

嵌入式軟件開發(fā),為什么沒有架構(gòu)師這個(gè)崗位?

12小時(shí)前
305
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師關(guān)注我,一起變得更加優(yōu)秀!

互聯(lián)網(wǎng)純軟件技術(shù)領(lǐng)域,我們經(jīng)常會(huì)看到互聯(lián)網(wǎng)大廠設(shè)立“軟件架構(gòu)師”的崗位,負(fù)責(zé)系統(tǒng)設(shè)計(jì)、技術(shù)選型和性能優(yōu)化等工作,而且架構(gòu)師的崗位薪資通常也比較高。

然而,在嵌入式軟件技術(shù)領(lǐng)域,一般很少能見到企業(yè)招聘“嵌入式軟件架構(gòu)”這個(gè)崗位,是因?yàn)榍度胧杰浖恍枰M(jìn)行架構(gòu)設(shè)計(jì),所以不設(shè)立架構(gòu)相關(guān)的崗位嗎?

本文嘗試從以下三個(gè)維度展開進(jìn)行分析:

1、什么是嵌入式軟件架構(gòu)師?2、為什么嵌入式軟件要有架構(gòu)思維?3、嵌入式軟件工程師如何培養(yǎng)架構(gòu)思維?

希望能幫助嵌入式工程師理解軟件架構(gòu)思維的重要性,并能找到提升自身架構(gòu)能力的方法。

1、什么是嵌入式軟件架構(gòu)師?

架構(gòu)師,顧名思義,是指負(fù)責(zé)嵌入式軟件系統(tǒng)整體的架構(gòu)設(shè)計(jì)、技術(shù)選型和解決關(guān)鍵問題的崗位,通常扮演著高級(jí)技術(shù)專家的角色。

雖然大部分企業(yè)沒有明確設(shè)立嵌入式軟件架構(gòu)師這個(gè)崗位,但架構(gòu)設(shè)計(jì)的工作通常由資深的嵌入式軟件工程、技術(shù)負(fù)責(zé)人或者系統(tǒng)工程師承擔(dān)。

(1)嵌入式軟件架構(gòu)師的核心職責(zé)有哪些?

--系統(tǒng)級(jí)架構(gòu)設(shè)計(jì):根據(jù)硬件資源設(shè)計(jì)合理的軟件架構(gòu),確保系統(tǒng)能滿足實(shí)時(shí)性、低功耗、高可靠性等關(guān)鍵指標(biāo),制定模塊化和可擴(kuò)展的代碼結(jié)構(gòu),降低模塊間的耦合度。

--技術(shù)選型與標(biāo)準(zhǔn)化:選擇合適的RTOS或者裸機(jī)開發(fā)模式,制定通信協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)和接口,評(píng)估第三方庫的適用性和可移植性。

--性能優(yōu)化與可靠性保障:優(yōu)化內(nèi)存使用,調(diào)整堆棧管理和動(dòng)態(tài)內(nèi)存分配策略;設(shè)計(jì)看門狗機(jī)制和錯(cuò)誤恢復(fù)策略,提高系統(tǒng)的穩(wěn)定性;制定OTA升級(jí)方案以確保固件的可維護(hù)性。

(2)嵌入式軟件架構(gòu)師 VS 互聯(lián)網(wǎng)軟件架構(gòu)師

從以上對(duì)比可以看出,嵌入式軟件架構(gòu)師更加注重底層硬件的適配,通過軟件設(shè)計(jì)策略,讓硬件資源達(dá)到最優(yōu)的使用率。

2、為什么嵌入式軟件要有架構(gòu)思維?

雖然很多嵌入式軟件項(xiàng)目規(guī)模較小,但在平時(shí)的開發(fā)里面,架構(gòu)思維仍然至關(guān)重要,以下列舉幾個(gè)關(guān)鍵的原因。

(1)硬件資源受限,必須高效進(jìn)行利用

某些嵌入式設(shè)備采用低功耗的單片機(jī)芯片進(jìn)行設(shè)計(jì),內(nèi)存和計(jì)算資源通常比較受限,如果沒有良好的架構(gòu)設(shè)計(jì),其代碼可能會(huì)存在內(nèi)存泄漏、任務(wù)調(diào)度不合理、外設(shè)驅(qū)動(dòng)高度耦合的情況。

(2)系統(tǒng)復(fù)雜度越來越高

早期的嵌入式設(shè)備功能相對(duì)比較單一,但現(xiàn)代的嵌入式系統(tǒng)功能已經(jīng)越來越復(fù)雜,通常需要RTOS進(jìn)行多任務(wù)調(diào)度,網(wǎng)絡(luò)協(xié)議通信,AI推理等等,如果沒有清晰的模塊化架構(gòu)設(shè)計(jì),代碼將會(huì)變得越來越臃腫,以至于難以維護(hù)。

(3)可維護(hù)性決定產(chǎn)品生命周期

嵌入式設(shè)備的生命周期通常比較長,工業(yè)設(shè)備可達(dá)10年以上,如果代碼架構(gòu)混亂,將會(huì)導(dǎo)致后續(xù)功能迭代困難,Bug難以定位和修復(fù),新成員接手代碼的成本非常高。

(4)軟件定義硬件,成為行業(yè)趨勢。

過去的嵌入式軟件開發(fā)是以硬件設(shè)計(jì)作為主導(dǎo)的,軟件設(shè)計(jì)只是輔助。但現(xiàn)在越來越多的智能硬件產(chǎn)品,依賴軟件實(shí)現(xiàn)差異化競爭,因此,良好的軟件架構(gòu)能提高開發(fā)效率,降低硬件依賴,并且支持更快的產(chǎn)品迭代。

3、嵌入式軟件工程師如何培養(yǎng)架構(gòu)思維?

(1)注重模塊化編程設(shè)計(jì)

遵循高內(nèi)聚低耦合的設(shè)計(jì)原則,每個(gè)模塊只負(fù)責(zé)單一的功能;使用頭文件進(jìn)行接口封裝,隱藏源代碼的實(shí)現(xiàn)細(xì)節(jié),采用面向?qū)ο蟮乃枷?,提高代碼的可復(fù)用性,如以下示例代碼。

// 代碼模塊化設(shè)計(jì)UART驅(qū)動(dòng)接口 ?typedef?struct?{ ?? ??void?(*init)(uint32_t?baudrate); ?? ??void?(*send)(uint8_t?*data,?uint16_t?len); ?? ??void?(*receive)(uint8_t?*buffer,?uint16_t?len); ?} uart_driver;??// 使用接口,而不是直接操作寄存器 ?uart_driver uart1 = { ?? ? .init = uart1_init, ?? ? .send = uart1_send, ?? ? .receive = uart1_receive ?}; ?

(2)學(xué)習(xí)優(yōu)秀的開源代碼架構(gòu)

至少學(xué)習(xí)一款RTOS的使用,比如FreeRTOS,學(xué)習(xí)任務(wù)調(diào)度,內(nèi)存管理,IPC機(jī)制,研究設(shè)備樹和驅(qū)動(dòng)模型,理解platform_device和platform_driver等Linux驅(qū)動(dòng)框架的設(shè)計(jì)思想。

(3)掌握架構(gòu)設(shè)計(jì)工具

善于運(yùn)用架構(gòu)設(shè)計(jì)工具,如使用UML描繪狀態(tài)圖,用以描述系統(tǒng)行為;使用PlantUML繪制架構(gòu)演進(jìn)路線,使用PC-Lint或Cppcheck等靜態(tài)分析工具,發(fā)現(xiàn)潛在的軟件架構(gòu)問題。

(4)參與完整項(xiàng)目,積累設(shè)計(jì)經(jīng)驗(yàn)

從小型的MCU裸機(jī)開發(fā),逐步過渡到中小型的RTOS項(xiàng)目,嘗試根據(jù)具體的業(yè)務(wù)邏輯來重構(gòu)舊代碼,優(yōu)化現(xiàn)有的代碼架構(gòu)設(shè)計(jì),關(guān)注熱門行業(yè)領(lǐng)域的嵌入式技術(shù)動(dòng)態(tài)和架構(gòu)趨勢。

4、總結(jié)概括

嵌入式軟件架構(gòu)師的崗位職責(zé)并不是不存在,而是由于這個(gè)技術(shù)領(lǐng)域和相關(guān)行業(yè)特點(diǎn),這一角色通常是由經(jīng)驗(yàn)比較豐富的開發(fā)者兼任,隨著現(xiàn)代的嵌入式系統(tǒng)功能越來越復(fù)雜,架構(gòu)思維將會(huì)成為嵌入式軟件工程師的核心競爭力之一。

對(duì)于嵌入式軟件工程師來說,與其等待企業(yè)設(shè)立架構(gòu)師崗位,不如在實(shí)際項(xiàng)目里面,主動(dòng)培養(yǎng)整體的系統(tǒng)架構(gòu)思維。

嵌入式軟件的整體發(fā)展方向,一定是更高效率、更低功耗、更強(qiáng)可維護(hù)性、更高可擴(kuò)展性,而良好的架構(gòu)設(shè)計(jì)正是實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵!

相關(guān)推薦