0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

軟件架構(gòu)搞好了,還用擔心代碼可讀性差?

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-06-14 08:10 ? 次閱讀

一、架構(gòu)的概念及由來

嵌入式軟件架構(gòu)是指在嵌入式系統(tǒng)中用于組織和管理軟件組件的結(jié)構(gòu)和設(shè)計。嵌入式軟件架構(gòu)的出現(xiàn)是為了解決嵌入式系統(tǒng)中軟件復(fù)雜度和系統(tǒng)要求不斷增加的挑戰(zhàn)。以下是嵌入式軟件架構(gòu)出現(xiàn)的原因:

硬件多樣性:嵌入式系統(tǒng)常常面臨不同硬件平臺和設(shè)備的多樣性,需要一個靈活的軟件架構(gòu)來適應(yīng)這些差異。

軟件復(fù)雜性:隨著嵌入式系統(tǒng)功能的不斷增加,軟件規(guī)模和復(fù)雜度也在增加,需要一種良好的架構(gòu)來管理和維護軟件。

實時性要求:許多嵌入式系統(tǒng)對實時性有嚴格要求,需要一個有效的軟件架構(gòu)來保證系統(tǒng)的實時性能。

可維護性和可擴展性:嵌入式系統(tǒng)的長期維護和升級需要一個清晰的架構(gòu)設(shè)計,以便快速定位和解決問題,并支持系統(tǒng)的擴展和升級。

軟件復(fù)用:通過良好的軟件架構(gòu)設(shè)計,可以促進軟件模塊的復(fù)用,提高開發(fā)效率和軟件質(zhì)量。

總的來說,嵌入式軟件架構(gòu)的出現(xiàn)是為了應(yīng)對嵌入式系統(tǒng)中軟件復(fù)雜度和系統(tǒng)需求的挑戰(zhàn),提高系統(tǒng)的可靠性、可維護性和可擴展性。

二、小系統(tǒng)也需要架構(gòu)思想

有相當多的嵌入式系統(tǒng)規(guī)模都較小,一般都是為了某些特定的目的而設(shè)計的。受工程師認識,客戶規(guī)模和項目進度等因素影響,經(jīng)常不做任何架構(gòu)設(shè)計,直接以實現(xiàn)功能為目標進行設(shè)計規(guī)劃。這種行為方式表面上看滿足了進度,成本,功能各方面的需求,但是從長遠來看,在擴展和維護上付出的成本,要遠遠高于最初節(jié)約的成本。如果系統(tǒng)的最初開發(fā)者繼續(xù)留在組織內(nèi)并負責這個項目,那么可能一切都會正常,一旦他離開,后續(xù)者因為對系統(tǒng)細節(jié)的理解不足,就可能引入更多的錯誤。要注意,嵌入式系統(tǒng)的變更成本要遠遠高于一般的軟件系統(tǒng)。好的軟件架構(gòu),可以從宏觀和微觀的不同層次上描述系統(tǒng),并將各個部分隔離,從而使新特性的添加和后續(xù)維護變得相對簡單。

三、實現(xiàn)架構(gòu)的思路

8d86c33a-29e2-11ef-a655-92fbcf53809c.png

在實現(xiàn)嵌入式軟件架構(gòu)時,需要考慮到硬件資源受限、實時性要求高、功耗低等特點,因此需要采用一些特定的思路和方法。

確定需求和約束:在設(shè)計嵌入式軟件架構(gòu)之前,首先需要明確嵌入式系統(tǒng)的需求和約束條件,例如系統(tǒng)的功能需求、實時性要求、功耗限制、硬件資源限制等。這些需求和約束將直接影響到軟件架構(gòu)的設(shè)計選擇。

模塊化設(shè)計:采用模塊化設(shè)計是非常重要的,通過將系統(tǒng)拆分成多個獨立的模塊,可以提高系統(tǒng)的可維護性和可擴展性。每個模塊可以負責特定的功能,模塊之間通過定義清晰的接口進行通信和協(xié)作。

選擇合適的架構(gòu)風格:嵌入式軟件架構(gòu)可以采用不同的架構(gòu)風格,例如分層架構(gòu)、客戶端-服務(wù)器架構(gòu)、事件驅(qū)動架構(gòu)等。選擇合適的架構(gòu)風格需要考慮到系統(tǒng)的需求和約束條件,以及開發(fā)人員的經(jīng)驗和技能。

優(yōu)化資源利用:在嵌入式系統(tǒng)中,硬件資源通常是受限的,因此需要對資源進行有效的利用和管理。這包括內(nèi)存管理、功耗優(yōu)化、任務(wù)調(diào)度等方面。例如,可以采用內(nèi)存池技術(shù)來管理內(nèi)存的分配和釋放,以減少內(nèi)存碎片化。

實時性考慮:對于需要滿足實時性要求的嵌入式系統(tǒng),需要特別考慮實時性能。這包括設(shè)計實時任務(wù)調(diào)度算法、采用實時操作系統(tǒng)(RTOS)、避免使用阻塞式的IO操作等。

安全性和可靠性:嵌入式系統(tǒng)通常應(yīng)用在一些對安全性和可靠性要求較高的領(lǐng)域,如醫(yī)療設(shè)備、汽車電子系統(tǒng)等。因此,在架構(gòu)設(shè)計中需要考慮系統(tǒng)的安全性和可靠性,包括數(shù)據(jù)加密、權(quán)限管理、錯誤處理機制等。

測試和驗證:在設(shè)計完成后,需要對嵌入式軟件架構(gòu)進行充分的測試和驗證,以確保系統(tǒng)能夠滿足設(shè)計要求。這包括單元測試、集成測試、系統(tǒng)測試等。

總的來說,實現(xiàn)嵌入式軟件架構(gòu)需要結(jié)合系統(tǒng)需求和約束條件,采用模塊化設(shè)計、優(yōu)化資源利用、考慮實時性、安全性和可靠性等方面的思路,以確保系統(tǒng)具有良好的性能和可維護性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    240

    瀏覽量

    26670
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4807

    瀏覽量

    68786
  • 軟件架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    10296
收藏 人收藏

    評論

    相關(guān)推薦

    Google軟件工程中主要的過程部分

    代碼風格指南只能解決一些很基本的可讀性問題,如代碼縮進、函數(shù)命名風格、代碼行數(shù)限制等。但代碼可讀性
    的頭像 發(fā)表于 09-23 11:50 ?1012次閱讀

    《圖解運算放大器電路》輔以大量插圖,有較強的可讀性...

    集成運算放大器構(gòu)成的電路實例以及集成運算放大器的電路構(gòu)成與原理及使用時的注意事項等。《運算放大器電路》內(nèi)容簡潔、重點突出、實用強,輔以大量插圖,有較強的可讀性及參考。   《運算放大器電路》既可供工科院校相關(guān)專業(yè)師生參考,亦
    發(fā)表于 08-10 10:05

    吐槽這本書的代碼實在晦澀難懂,代碼風格的可讀性也較差

    `不得不吐槽一下,這本書的代碼實在晦澀難懂,代碼風格的可讀性也較差`
    發(fā)表于 03-02 23:42

    keil搞好了,mcuisp下載時出了問題,麻煩大家看看

    本人是個菜鳥啊,剛剛接觸stm32f103ret7,keil搞好了,可是用mcuisp下載時出了問題。電腦系統(tǒng)是win8,找了一個ch340的驅(qū)動,結(jié)果是“無法打開串口Com0. No This comport Or In using!”。還請各位為支支招啊,非常感謝!
    發(fā)表于 09-21 19:15

    嵌入式開發(fā)程序的架構(gòu)和命名規(guī)范

    總是因人而異。很多較大型的代碼寫到最后總是捂不住各種冒出來的bug,其實最大的問題是根基沒有打牢。當然,主要是程序架構(gòu)的問題,架構(gòu)的清晰,程序的
    發(fā)表于 11-05 08:22

    嵌入式軟件開發(fā)過程之程序代碼分層

    在嵌入式軟件開發(fā)過程中,在程序架構(gòu)的搭建完成之后,為了提高項目代碼可讀性和可維護等,應(yīng)對程序代碼
    發(fā)表于 12-21 06:13

    ModBus主機底層的分層和軟件層面的任務(wù)調(diào)度

    開始本篇之前我想先談一下為什么要把一個ModBus主機分成4篇來寫,一是代碼的分層理念,隨著工作時間的增長以及工作的深入你會發(fā)現(xiàn)分層是那么的至關(guān)重要不僅僅是代碼可讀性更重要的是更方便的維護。初期寫
    發(fā)表于 03-01 07:29

    Verilog代碼書寫規(guī)范

    Verilog代碼書寫規(guī)范 本規(guī)范的目的是提高書寫代碼可讀性、可修改性、可重用,優(yōu)化代碼綜合和仿真的結(jié)果,指導設(shè)計工程師使用
    發(fā)表于 04-15 09:47 ?106次下載

    優(yōu)先提高代碼可讀性的必要

    難懂, 代碼難以跟蹤。 代碼艱澀難懂 遺憾的是,人們并不能像軟件解釋器那樣,可以不必理會將兩個數(shù)相加并調(diào)用一個函數(shù)這部分代碼的功能(機械式的編譯)。 為了查找
    發(fā)表于 09-26 14:55 ?0次下載

    如何編寫可讀性代碼

    編寫可讀性代碼作者:極鏈科技 湯紅燕什么叫可讀性代碼?簡單來說,就是易于理解、耗腦時間少、可維護較高的
    的頭像 發(fā)表于 08-16 18:13 ?1266次閱讀
    如何編寫<b class='flag-5'>可讀性</b><b class='flag-5'>代碼</b>

    現(xiàn)代編譯器的可讀性勝過調(diào)試

    軟件開發(fā)過程中,想要對編譯器“隱藏”部分代碼——將其關(guān)閉——并不少見。執(zhí)行此操作的傳統(tǒng)方法是“注釋掉”——在代碼前加/* ,在后加*/。雖然做起來很快,但它很容易失效,因為編譯器不一定支持注釋嵌套。
    的頭像 發(fā)表于 07-01 09:10 ?683次閱讀

    科普一下Verilog代碼命名規(guī)范

    命名規(guī)范包括模塊命名規(guī)范和代碼命名規(guī)范,代碼命名需要有確定的含義,提高代碼可讀性和可維護
    的頭像 發(fā)表于 11-17 09:54 ?3912次閱讀

    公司這套架構(gòu)統(tǒng)一處理try...catch真香!

    有大量的冗余代碼,而且還影響代碼可讀性。這樣就需要定義個全局統(tǒng)一異常處理器,以便業(yè)務(wù)層再也不必處理異常。
    的頭像 發(fā)表于 02-27 10:47 ?496次閱讀

    如何提升嵌入式C語言代碼可讀性

    接口是面向?qū)ο笳Z言中的一個比較重要的概念,接口只對外部承諾實現(xiàn)該接口的實體可以完成什么樣的功能,但是不暴露實現(xiàn)的方式。這樣的好處是,實現(xiàn)者可以在不接觸接口使用者的代碼的情況下,對實現(xiàn)進行調(diào)整。
    發(fā)表于 04-11 11:30 ?369次閱讀
    如何提升嵌入式C語言<b class='flag-5'>代碼</b><b class='flag-5'>可讀性</b>

    深入淺出系列之代碼可讀性

    ”,這是對我最大的鼓勵。 一、老生常談,到底啥是可讀性 一句話:見名知其義。有人說好的代碼必然有清晰完整的注釋,我不否認;也有人說代碼即注釋,是代碼簡潔之道的最高境界,我也不否認。但我
    的頭像 發(fā)表于 08-09 16:00 ?278次閱讀