對于開發人員來說,沒有什么比試圖維護和更新質量如此之差的代碼更糟糕得了。對于許多開發團隊來說,軟件代碼質量并不是必需的。為了提高代碼質量,這里有幾個嵌入式開發人員可以遵循的技巧,并集成到自己的流程中,這將有助于提高他們的代碼質量。
技巧1——遵循編碼標準
對提高代碼質量感興趣的開發人員應該從檢查行業標準開始。開發人員可以利用許多行業標準來改進他們編寫代碼的方式,包括:
l MISRA-C
l Cert-C
l IEC 12207
l IEC 62304
這些標準為開發高質量的軟件建立了框架。任何想提高軟件質量的人都應該回顧一下已經做了什么,并開始實施行業建議。
技巧 2——分析和維護軟件復雜性
已經多次證明,最小化軟件復雜性也可以最小化錯誤率。軟件越復雜,變化越大,不僅會有軟件bug,而且對系統進行維護也會增加bug。開發人員應該通過使用圈復雜度來監控他們的函數復雜度。
技巧 3——定期進行代碼評審
代碼審查已經被證明是減少軟件錯誤的最有效的方法。將同行評審整合到開發周期中對于確保軟件質量保持高水平是至關重要的。為了有一個有效的代碼審查過程,嵌入式開發人員應該遵循幾個關鍵因素:
將代碼審查限制在60個以內
每次評論不要超過400個LOC
至少每周安排一次代碼評審(如果您每周生成超過400個LOC,則更多)
技巧 4——需求必須是可追蹤的
如果一個需求不能以某種方式被測試和驗證,最好是自動化的,那么它就不是一個真正的需求。甚至在開發開始之前,需求就應該被分解成可追蹤的測試用例,這些用例可以在以后被用來驗證所有的需求已經被滿足。當然,需求會改變,會使用不同的設計方法,但是需要有一種方法來追蹤軟件特性和功能,追溯到產生它們的需求,并證明它們按預期工作。
技巧5——編譯沒有錯誤和警告
許多忽視編譯器警告的團隊和開發人員,有時只有一兩個警告需要開發人員深入挖掘,或者是微不足道的,所以它們被忽略了,只是掛在那里。如果編譯器不信任代碼并給出警告,那么開發人員應該將其視為編譯器錯誤并解決警告。警告是編譯器表示不喜歡某樣東西的方式。老實說,C編譯器喜歡任何東西,所以如果它對某些東西有問題,那么作為嵌入式開發人員我們也應該這樣。代碼質量意味著沒有錯誤和警告。
技巧 6–靜態分析
靜態代碼分析器是發現嵌入式軟件潛在問題的最快方法之一。靜態代碼分析器可以發現語法問題、潛在的小故障,并識別代碼中不可移植的結構,靜態分析器甚至可以檢查是否遵循了編碼標準,將靜態分析器集成到連續構建過程中是提高代碼質量和最小化軟件錯誤的一個好方法。
技巧7——所有代碼都必須經過全面測試
不少中小型企業在沒有完全測試軟件的情況下就發布產品。這些公司傾向于執行高水平的抽查,以查看系統是否按照他們期望的方式運行,然后將他們送到野外。當大多數讀者得知這些公司的產品在該領域遇到問題時,可能不會感到驚訝。作為嵌入式開發人員,我們不能僅僅因為我們沒有看到系統行為不當就認為我們的代碼工作正常。我們的代碼需要全面測試!全面測試意味著:
l 高水平的測試用例已經被驗證
l 單元測試已經執行
l 已執行集成測試
l 代碼覆蓋測試已經完成,以驗證每一行代碼都在測試期間執行
l 系統跟蹤分析,以驗證時間、性能和系統行為是正確的,而不僅僅是對用戶來說是正確的。
如果一行代碼在測試期間沒有被執行,就沒有辦法知道這一行代碼是否包含有一天當用戶使用系統時會出現的錯誤。
結論
提高代碼質量不一定是一項重大的、昂貴的任務。這些建議很容易實現,甚至可以在幾周或幾個月內完成。最終結果將是更高質量的軟件,提供更好的用戶體驗,同時降低嵌入式開發成本。