成功開發(fā)和推出嵌入式系統(tǒng)需要各種工程學(xué)科的廣泛技能。每個嵌入式系統(tǒng)開發(fā)團(tuán)隊都需要八個不同的軟件開發(fā)領(lǐng)域的知識。開發(fā)人員對嵌入式軟件這八個支柱的掌握程度將直接影響開發(fā)成本、代碼可擴(kuò)展性和系統(tǒng)穩(wěn)健性等關(guān)鍵開發(fā)指標(biāo)。
讓我們來看看每個支柱及其在嵌入式軟件開發(fā)中的作用。
支柱 #1 –架構(gòu)
軟件架構(gòu)是應(yīng)用程序的藍(lán)圖。經(jīng)過深思熟慮的藍(lán)圖可以讓開發(fā)人員對主要軟件組件、它們之間如何交互以及它們的環(huán)境有重要的了解。該架構(gòu)應(yīng)該提供可擴(kuò)展性,并使團(tuán)隊成員了解正在構(gòu)建的系統(tǒng)。
缺乏軟件架構(gòu)就像建造一座建筑物,但事先不知道它有多高、有多少層,甚至不知道建筑物將占用的總體面積。正如人們所想象的那樣,建造這樣一座建筑在開始之前就注定會失敗?,F(xiàn)在已經(jīng)進(jìn)入二十一世紀(jì)的第二個十年了,我仍然遇到太多的團(tuán)隊不了解軟件架構(gòu)基礎(chǔ)知識,甚至不使用它們的用途。
支柱 #2 –代碼分析
開發(fā)嵌入式系統(tǒng)不僅僅是盡快編寫代碼。許多系統(tǒng)需要健壯,并且必須在用戶看來沒有錯誤(即使實際上不存在無錯誤的系統(tǒng))。為了在開發(fā)中實現(xiàn)這些屬性,系統(tǒng)開發(fā)人員需要了解現(xiàn)代代碼分析技術(shù)。靜態(tài)、動態(tài)和最壞情況堆棧分析等技術(shù)只是有用技術(shù)的幾個示例,但只是分析的冰山一角。團(tuán)隊分析代碼、發(fā)現(xiàn)缺陷和錯誤以及揭露不合規(guī)之處的能力可以幫助確保用戶安全并影響公司品牌。
支柱 #3 –調(diào)試
當(dāng)今嵌入式軟件團(tuán)隊面臨的最大挑戰(zhàn)是調(diào)試他們的系統(tǒng)。嵌入式系統(tǒng)每年都變得越來越復(fù)雜,系統(tǒng)越復(fù)雜,調(diào)試就越困難、耗時且昂貴。為了最大限度地減少調(diào)試,開發(fā)人員需要精通實時跟蹤等現(xiàn)代調(diào)試技術(shù)。更少的調(diào)試時間意味著有更多的時間來添加創(chuàng)新的產(chǎn)品功能。
支柱 #4 –文檔
開發(fā)嵌入式系統(tǒng)時,文檔是不可避免的禍害。如果沒有一些描述正在構(gòu)建的內(nèi)容的基本需求定義,就無法構(gòu)建系統(tǒng)。同樣,如果沒有詳細(xì)記錄的代碼庫,開發(fā)人員就無法正確維護(hù)代碼。如果回歸測試沒有測試有效的產(chǎn)品功能,那么它們就毫無用處。如果團(tuán)隊不具備該領(lǐng)域的專業(yè)知識,那么文檔的開發(fā)成本可能會很高,并且需要花費(fèi)寶貴的時間,因此掌握文檔可以幫助降低項目的總擁有成本。
支柱 #5 –編程語言技能
并非所有編程語言都是平等的。不止一種語言可以完成這項工作,例如 C、C++、Python、Ada 或其他語言,因此如果不深入了解一種語言的優(yōu)點和缺點,開發(fā)人員可能會遇到麻煩。例如,某些 C 編程語言區(qū)域具有不明確的定義,使用兩個不同的編譯器進(jìn)行編譯可能會導(dǎo)致兩個不同的結(jié)果。同樣,某些結(jié)構(gòu)快速且高效,而另一些結(jié)構(gòu)則使代碼變得臃腫并減慢速度。如果開發(fā)人員不了解這些問題領(lǐng)域,那么糟糕的事情注定會發(fā)生。
支柱 #6 –標(biāo)準(zhǔn)
行業(yè)標(biāo)準(zhǔn)是開發(fā)人員應(yīng)認(rèn)真遵循的關(guān)鍵支柱。標(biāo)準(zhǔn)通常包含開發(fā)人員的見解和最佳實踐,而這些只能通過反復(fù)試驗來學(xué)習(xí)。 MISRA、CERT 和 IEC 61508 等行業(yè)標(biāo)準(zhǔn)及其行業(yè)衍生品充滿了優(yōu)秀的工程實踐。開發(fā)周期中開發(fā)人員重新發(fā)明這些輪子的時間太少了。
支柱 #7 –測試
即使通過回歸測試來正確測試和驗證軟件的能力對于開發(fā)團(tuán)隊來說也是至關(guān)重要的。最近修復(fù)錯誤的更改是否破壞了其他任何內(nèi)容?系統(tǒng)是否滿足要求?通過測試每個代碼分支是否都正確執(zhí)行?測試為開發(fā)人員提供了顯著的舒適度,即系統(tǒng)在受控條件下按預(yù)期運(yùn)行。
支柱 #8 –工具
專業(yè)的嵌入式軟件開發(fā)人員需要訪問并應(yīng)該知道如何使用他們的行業(yè)工具。了解他們的工具和生態(tài)系統(tǒng)可以區(qū)分強(qiáng)大而完善的系統(tǒng)和不穩(wěn)定的業(yè)余產(chǎn)品。許多團(tuán)隊放棄了行業(yè)工具,聲稱數(shù)千美元的投資不在預(yù)算之內(nèi)。然而,針對正確的工作使用正確的工具,可以通過節(jié)省勞動力十倍地支付該工具的費(fèi)用,并對上市時間產(chǎn)生巨大影響。
結(jié)論
掌握嵌入式軟件的這八個支柱的團(tuán)隊將在堅實的基礎(chǔ)上構(gòu)建他們的軟件。我看到的大多數(shù)失敗的團(tuán)隊至少缺乏這些支柱之一的專業(yè)知識。為了確保成功,團(tuán)隊需要在每個 支柱上擁有專業(yè)知識,并使用嚴(yán)格的設(shè)計方法。