下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【W(wǎng)ord版本下載可任意編輯】模塊化的嵌入式軟件設(shè)計分析一、嵌入式軟件編程語言
嵌入式軟件通常采用匯編、C語言、C++語言開展編寫。從三種語言執(zhí)行效率上開展比較則匯編、C語言次之、C++語言慢,從三種語言模塊化編程的難易程度上開展比較則C++語言、C語言次之、匯編差,在大多數(shù)情況下,嵌入式軟件多采用C語言開展編寫,原因如下:
1.C語言是面向過程的語言,代碼移植性和可讀性遠(yuǎn)高于匯編;2.大多數(shù)嵌入式軟件開發(fā)環(huán)境都提供匯編和C語言編譯器,而C++語言編譯器有可能不提供;3.三種語言相比C語言學(xué)習(xí)起來較容易。
由于嵌入式軟件多采用C語言編寫,因此本文著重講述如何用C語言開展模塊化編程。
二、軟件模塊化設(shè)計概述
面對越來越復(fù)雜的軟件開發(fā)任務(wù),人們提出了各種軟件設(shè)計的模型。從用戶需求和系統(tǒng)要實現(xiàn)的任務(wù)功能出發(fā),把大型的軟件劃分為相對較小的模塊。模塊化設(shè)計的是模塊的獨立性(即高內(nèi)聚,低偶合),主要包括功能獨立性和構(gòu)造獨立性,這使得軟件開發(fā)的分工易于實現(xiàn)。
模塊化設(shè)計有如下優(yōu)點:
1.提高代碼重復(fù)利用率;
2.方便修改和維護(hù);
3.便于調(diào)試排錯;
4.易于擴(kuò)展。
軟件設(shè)計的模塊化降低了設(shè)計開發(fā)的復(fù)雜度并使設(shè)計步驟清晰,也有利于提高軟件健壯性、靈活性、可復(fù)用性等。開展模塊化軟件設(shè)計時應(yīng)綜合考慮模塊的可分解性、可結(jié)合性、可理解性、連續(xù)性及模塊保護(hù)幾方面的要求。
模塊的可分解性要求把一個大的、復(fù)雜的問題分解為一些小的、簡單的問題,通過解決各個小問題來解決大問題;模塊的可結(jié)合性要求不同時期、不同項目、不同環(huán)境下設(shè)計的模塊應(yīng)能自由地結(jié)合在一起構(gòu)成新的系統(tǒng);模塊的可理解性要求通過某種方法設(shè)計的每個模塊不需要參考相鄰的模塊就能被人看懂;模塊的連續(xù)性要求通過某種方法設(shè)計出的模塊,在需求發(fā)生變化時只影響一個或少數(shù)幾個模塊;模塊保護(hù)則要求通過某種方法設(shè)計出的模塊,在運(yùn)行期間發(fā)生的錯誤被限制在這個模塊內(nèi)部或僅僅傳播到少數(shù)幾個摸塊。
模塊化設(shè)計時應(yīng)將上述要求有機(jī)地結(jié)合起來。在保證正確性和健壯性的根底上,應(yīng)盡可能提高軟件的可擴(kuò)大性和可復(fù)用性。
三、使用C語言開展模塊化代碼編寫
通過模塊化所實現(xiàn)的軟件是由被加工的對象及其在該對象上所實現(xiàn)的有關(guān)功能構(gòu)成。在開發(fā)軟件的過程中,一般采用兩種方法:其一是把重點放在功能的實現(xiàn)上,其二是把重點放在對象上?;诠δ艿能浖_發(fā)方法中,其功能實現(xiàn)中考慮的“過程”和“操作”是多變和不穩(wěn)定的,程序構(gòu)造圍繞事先確定好的功能,使得功能的擴(kuò)大、刪除及修改變得相當(dāng)困難。這樣的軟件構(gòu)造脆弱、功能集中、耦合度大,很難滿足可擴(kuò)大性、可維護(hù)性的要求,軟件的重用性也差。
面向?qū)ο蟮某绦蛟O(shè)計中考慮的“對象”和“數(shù)據(jù)構(gòu)造”是相對穩(wěn)定的。盡管功能是千變?nèi)f化的,但一個問題空間中的對象一般總能保持其相對穩(wěn)定不變性,這樣圍繞對象構(gòu)造的軟件系統(tǒng)也自然會有好的穩(wěn)定性。面向?qū)ο蠓椒ò褜傩院头?wù)封裝在對象中,當(dāng)外部功能發(fā)生變化時,這種封裝可以保持對象構(gòu)造的相對穩(wěn)定,使得改動僅局限在一個對象內(nèi)部,減小了因改動引起的系統(tǒng)波動效應(yīng),因此,面向?qū)ο蠓椒ㄩ_發(fā)的軟件具有易于擴(kuò)大、修改和維護(hù)的特性。另外,面向?qū)ο蠓椒ň哂械睦^承性和封裝性也支持軟件重用,并且易于擴(kuò)大,能較好地適應(yīng)復(fù)雜大系統(tǒng)不斷發(fā)展和變化的要求。
C++擁有面向?qū)ο蟮奶匦裕虼耸褂肅++語言可以方便、輕松的完成軟件模塊化設(shè)計。
C語言是面向過程的語言,不具備C++語言面向?qū)ο蟮膬?yōu)勢,模塊化編程不像C++實現(xiàn)起來那么容易,但是通過C語言的應(yīng)用還是可以實現(xiàn)的。使用C語言來實現(xiàn)C++語言面向?qū)ο筇卣?,通過舉例比照的方式描述具體實現(xiàn)過程,詳細(xì)如下:
C++定義一個對象是通過“類”,類封裝了一個對象所用到的數(shù)據(jù)和方法,C語言中沒有類但是有“構(gòu)造體”,C語言中可以使用一個“構(gòu)造體”來定義一個對象。例如實現(xiàn)一個一階數(shù)字低通濾波器模塊:
傳遞函數(shù)一階低通數(shù)字濾波器,下面分別使用C++語言和C語言分別編寫該軟件模塊,通過比照,可以看到C++語言和C語言實現(xiàn)模塊的一些共性,從而更容易理解C語言實現(xiàn)模塊化編程的原理。
使用C++語言可以如下編寫代碼(C++語言實現(xiàn)該模塊有很多中寫法,如下的代碼雖然不是C++語言的實現(xiàn)方式,但是更類C,更容易理解):
CLpf這個類定義了一個低通濾波器對象,CLpf類中包含了模塊數(shù)據(jù):模塊輸入m_Input、模塊輸出m_Output、模塊參數(shù)m_Tc、模塊參數(shù)m_Fc、模塊變量m_K、模塊變量m_OldOutput,CLpf類中還包含了對象的方法:模塊初始化Init()、模塊復(fù)位Reset()、模塊主要功能實現(xiàn)Calc(),上述類的定義部分是C++語言模塊化編程的步。
使用C語言建議如下編寫:
C語言通過構(gòu)造體定義了一個新的數(shù)據(jù)類型LPF,因為這種帶有數(shù)據(jù)和方法的數(shù)據(jù)類型已經(jīng)擁有了一些面向?qū)ο蟮奶卣饕部梢岳斫鉃橐粋€簡單對象,LPF包含了模塊輸入Input、模塊輸出Output、模塊參數(shù)Tc、模塊參數(shù)Fc、模塊變量K、模塊變量OldOutput,LPF中也同樣包含了對象的方法:模塊初始化Init()、模塊復(fù)位Reset()、模塊主要功能實現(xiàn)Calc()。上述構(gòu)造體定義是C語言模塊化編程的步,只是聲明了數(shù)據(jù)和方法的接口。
C++語言實現(xiàn)對象的方法,可以如下編寫:
C++語言只要再定義了方法實現(xiàn)部分就完成了完整的類,CLpf類已經(jīng)可以方便使用,因為可以如下定義CLpfm_Lpf,并且可以方便如下調(diào)用這個對象的幾個方法m_Lpf.Init()、m_Lpf.Reset()、m_Lpf.Calc()。
C語言實現(xiàn)對象的方法,可以如下編寫:
C語言定義的LPF數(shù)據(jù)類型,雖然可以如下定義LPFLpf,但是不能像C++一樣按照如下方法調(diào)用對象的如下幾個方法Lpf.
Init()、Lpf.Reset()、Lpf.Calc(),雖然編譯器通常不會報錯,但是執(zhí)行是錯誤的,因為有如下2點錯誤:
C語言中的方法調(diào)用是需要傳遞對象的指針;Lpf對象實例中的幾個方法的函數(shù)指針沒有初始化,這種方法不能正常執(zhí)行。
因此需要在聲明對象時將LPF構(gòu)造的數(shù)據(jù)和函數(shù)指針開展初始化,可以按照如下方法定義LPF默認(rèn)值,這是C語言模塊化編程不同于C++的重要一點,即C語言模塊化編程的第三步。
模塊默認(rèn)值宏定義如下:
C語言中使用LPF數(shù)據(jù)類型,則應(yīng)該在聲明對象實例的同時開展初始化,這點不同于C++,例如:LPFLpf=LPF_DEFAULTS,這樣聲明的Lpf對象實例,其方法指針指向了正確的方法實現(xiàn)函數(shù),并且數(shù)據(jù)有初值(C++語言可以通過構(gòu)造函數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度石油化工設(shè)備采購合同補(bǔ)充協(xié)議范本3篇
- 二零二五年度vi設(shè)計創(chuàng)意制作合同范本2篇
- 二零二五版環(huán)境安全風(fēng)險評估與治理合同3篇
- 合同管理在2025年度招投標(biāo)中的合規(guī)性分析3篇
- 二零二五版企業(yè)內(nèi)部技術(shù)人員掛靠合作合同范本3篇
- 二零二五年度高壓電氣設(shè)備采購及安裝合同2篇
- 二零二五版寶鋼集團(tuán)勞動合同員工加班費(fèi)及休息日工作安排3篇
- 二零二五年度車輛質(zhì)押擔(dān)保合同樣本2篇
- 二零二五版公路貨運(yùn)合同道路運(yùn)輸許可證管理與審查規(guī)范3篇
- 二零二五年度綠色環(huán)保房地產(chǎn)商品房買賣合同書3篇
- 洞悉現(xiàn)狀 明確方向-初三上期末家長會
- 質(zhì)控護(hù)理管理制度內(nèi)容
- 幼兒園幼教集團(tuán)2025學(xué)年第二學(xué)期工作計劃
- 2025版高考物理復(fù)習(xí)知識清單
- 2024年考研管理類綜合能力(199)真題及解析完整版
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 六年級下冊【默寫表】(牛津上海版、深圳版)(英譯漢)
- 2025年度安全檢查計劃
- 2024年度工作總結(jié)與計劃標(biāo)準(zhǔn)版本(2篇)
- 北京外企勞動合同范例
- 《護(hù)患溝通》課件
評論
0/150
提交評論