日韩欧美国产一区二区三区_五月天欧美精品_国产精品一区不卡_欧美精品乱码久久久久久

內(nèi)容字號(hào):默認(rèn)大號(hào)超大號(hào)

段落設(shè)置:段首縮進(jìn)取消段首縮進(jìn)

字體設(shè)置:切換到微軟雅黑切換到宋體






嵌入式DVR軟件中用結(jié)構(gòu)化語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì)思想

時(shí)間:2006-11-15 來(lái)源:文/深圳麗澤智能科技 作者:顧小軍 點(diǎn)擊:

    嵌入式DVR是一種高度集成、復(fù)雜的嵌入式設(shè)備,其軟件需要保證良好的可靠性、復(fù)用性、擴(kuò)展性及高效性。

    傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)方法,在其軟件設(shè)計(jì)中就有些“力不從心”,因?yàn)榻Y(jié)構(gòu)化的軟件要求軟件設(shè)計(jì)一開(kāi)始就假定軟件需求是很明確的,系統(tǒng)處理數(shù)據(jù)的模式和方法也是明確的。然而DVR的用戶是面向不同領(lǐng)域的,而每個(gè)客戶的要求都有所不同,如有的客戶可能需要用RS485總線來(lái)控制溫度采集器,有的則可能需要來(lái)控制云臺(tái),這在結(jié)構(gòu)化設(shè)計(jì)方面就需要用不同的數(shù)據(jù)結(jié)構(gòu)和方法來(lái)描述。因此,每當(dāng)針對(duì)不同客戶就需要專(zhuān)門(mén)定制不同的軟件版本,這無(wú)疑增加了軟件的維護(hù)和測(cè)試成本,這是DVR生產(chǎn)廠商所不愿意看到的。并且,面向?qū)ο蟮脑O(shè)計(jì)思想需要采用面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言,無(wú)疑是對(duì)嵌入式設(shè)備一個(gè)巨大的考驗(yàn)。當(dāng)然,現(xiàn)在不少嵌入式開(kāi)發(fā)工具,已經(jīng)支持C++、JAVA等面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言。但是這些面向?qū)ο蟮恼Z(yǔ)言需要很大的C++設(shè)計(jì)庫(kù),這會(huì)增加DVR對(duì)存儲(chǔ)設(shè)備容量的要求。而且面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言在執(zhí)行的時(shí)候會(huì)添加一些額外的代碼,如“析構(gòu)”、“構(gòu)造”函數(shù),會(huì)導(dǎo)致執(zhí)行效率比結(jié)構(gòu)化的設(shè)計(jì)語(yǔ)言要低。因此一些編譯器對(duì)面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言的支持遠(yuǎn)沒(méi)有對(duì)結(jié)構(gòu)化的設(shè)計(jì)語(yǔ)言高。如LINUX下的GCC編譯器附帶的調(diào)試工具,在調(diào)試C++程序中有時(shí)就無(wú)法打印堆棧和函數(shù)的調(diào)用關(guān)系。

新型軟件設(shè)計(jì)方法
    綜合以上幾個(gè)方面:必須找到一個(gè)結(jié)構(gòu)化設(shè)計(jì)語(yǔ)言和面向?qū)ο笤O(shè)計(jì)語(yǔ)言結(jié)合的平衡點(diǎn),才能夠更好地解決DVR軟件開(kāi)發(fā)中的設(shè)計(jì)問(wèn)題。由此,軟件設(shè)計(jì)人員采用了一種“用結(jié)構(gòu)化的語(yǔ)言實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì)思想”的軟件設(shè)計(jì)方法。

    這種設(shè)計(jì)方法的實(shí)質(zhì)是:用面向?qū)ο蟮脑O(shè)計(jì)思想去分析嵌入式DVR的需求;用面向?qū)ο蟮脑O(shè)計(jì)模式去設(shè)計(jì)DVR軟件構(gòu)架;用結(jié)構(gòu)化的語(yǔ)言去實(shí)現(xiàn)DVR系統(tǒng)功能。這樣一來(lái),就可以發(fā)揮面向?qū)ο笤O(shè)計(jì)思想在需求分析和建模方面的方便快捷直觀的優(yōu)點(diǎn),同時(shí)又能保證嵌入式軟件在執(zhí)行效率和存儲(chǔ)方面的要求。

    當(dāng)然,我們必須摒棄一些面向?qū)ο笤O(shè)計(jì)思想中需要依賴面向?qū)ο笤O(shè)計(jì)語(yǔ)言的一些特性,如運(yùn)行中的多態(tài),類(lèi)型識(shí)別等。這些行為也能夠在結(jié)構(gòu)化語(yǔ)言中實(shí)現(xiàn),只是有些特性對(duì)系統(tǒng)設(shè)計(jì)來(lái)說(shuō)就有點(diǎn)無(wú)關(guān)輕重了。如果把所有面向?qū)ο蟮奶匦远寄脕?lái)用,這就會(huì)導(dǎo)致設(shè)計(jì)走向另一個(gè)極端:在嵌入式開(kāi)發(fā)上使用面向?qū)ο蟮恼Z(yǔ)言來(lái)設(shè)計(jì)系統(tǒng)。特別值得指出的是,面向?qū)ο笳Z(yǔ)言中的內(nèi)存分配,如果在嵌入式軟件上設(shè)計(jì)使用,會(huì)導(dǎo)致頻繁的動(dòng)態(tài)分配不定大小的內(nèi)存,會(huì)引起系統(tǒng)堆棧破碎的風(fēng)險(xiǎn)。

面向?qū)ο筌浖?/FONT>
    DVR軟件,可采用面向?qū)ο筌浖小懊艚蒈浖钡脑O(shè)計(jì)思想來(lái)進(jìn)行分析設(shè)計(jì)。在進(jìn)行需求分析的時(shí)候,在最初開(kāi)發(fā)周期中,首先確認(rèn)系統(tǒng)中最重要的10%的需求來(lái)確定系統(tǒng)架構(gòu)設(shè)計(jì),這點(diǎn)和結(jié)構(gòu)化的軟件設(shè)計(jì)是完全不一樣的。結(jié)構(gòu)化的語(yǔ)言假定系統(tǒng)的需求都明確了,根據(jù)這些需求進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì)。

    設(shè)計(jì)人員采用比較實(shí)用快捷面向?qū)ο蟮腗VC結(jié)構(gòu),即模型-視圖-控制器結(jié)構(gòu),把整個(gè)系統(tǒng)分成三個(gè)部分:一部分是底層的軟件部分,我們?cè)贒VR軟件稱為“微內(nèi)核”;一部分是人機(jī)交互部分,即界面部分;另一部分則是兩者之間的接口,我們稱之為適配器。在軟件架構(gòu)上也分為三個(gè)大的部分(或者說(shuō)三個(gè)軟件包):界面、“微內(nèi)核”、界面和“微內(nèi)核”之間的接口。

    這三個(gè)部分在迭代中最先完成的是“微內(nèi)核”部分。而“微內(nèi)核”設(shè)計(jì)中最關(guān)鍵的就是錄像部分,這需要考慮到各種不同的錄像種類(lèi)和各種錄像條件,而做好錄像部分的用例分析就可以設(shè)計(jì)出微內(nèi)核的基本架構(gòu),也就是整個(gè)軟件的“靈魂”。

    完成第一次迭代設(shè)計(jì)后,DVR軟件的其它需求的開(kāi)發(fā)就是一個(gè)“添枝加葉”的過(guò)程。根據(jù)面向?qū)ο笤O(shè)計(jì)“高內(nèi)聚、低耦合”的思想原則,每次迭代的過(guò)程我們都采用模塊化的設(shè)計(jì),。在添加每一個(gè)模塊時(shí),統(tǒng)一各個(gè)模塊的接口,采用“模塊名_domsg”做為對(duì)外接口。這樣一來(lái),就能很好地屏蔽掉各個(gè)模塊的內(nèi)部處理機(jī)制,減少軟件開(kāi)發(fā)的耦合程度。如“微內(nèi)核”中的錄像部分可能需要讀出硬盤(pán)模塊提供的分配目錄信息。,就可以通過(guò)“hdisk_domsg”來(lái)獲取。

各個(gè)模塊開(kāi)發(fā)
    在各個(gè)模塊開(kāi)發(fā)中,可以采用面向?qū)ο笳Z(yǔ)言的概念來(lái)設(shè)計(jì)。語(yǔ)言只是實(shí)現(xiàn)思想的一種方式,用結(jié)構(gòu)化的語(yǔ)言可以很好地實(shí)現(xiàn)一些面向?qū)ο蟮脑O(shè)計(jì)思想。如在考慮各個(gè)模塊設(shè)計(jì)的時(shí)候,采用“類(lèi)”(C++語(yǔ)言中的關(guān)鍵字為:class)來(lái)組織軟件模塊。當(dāng)然,在結(jié)構(gòu)化設(shè)計(jì)中沒(méi)有“類(lèi)”這種概念,于是我們用結(jié)構(gòu)體(C語(yǔ)言中的關(guān)鍵字為:struct)來(lái)替代。如,在每個(gè)模塊設(shè)計(jì)的時(shí)候,就繼承了系統(tǒng)中已經(jīng)設(shè)計(jì)好的“父類(lèi)”。父類(lèi)里面包括一些共有的屬性,如“模塊ID”,“模塊名稱”,還有一些共有的方法,如“讀取配置參數(shù)”,“存儲(chǔ)配置參數(shù)”等。在實(shí)際編寫(xiě)每個(gè)模塊的時(shí)候,首先從這個(gè)“父類(lèi)”繼承,這樣的設(shè)計(jì)能夠很好優(yōu)化程序結(jié)構(gòu),提高程序的可讀性和擴(kuò)展性,并且能夠很好地提高代碼的復(fù)用性。

struct Module_Obj
{
int Id;//模塊編號(hào),供調(diào)試使用
char Name[20];//模塊名
......
int(*load_param)(void *param);//啟動(dòng)時(shí)候裝載模塊參數(shù)
int(*save_param)(void *param));//保存模塊參數(shù)
......
};

    在模塊開(kāi)發(fā)中,也可以采用面向?qū)ο蟮脑O(shè)計(jì)模式。設(shè)計(jì)人員在采用軟件設(shè)計(jì)的過(guò)程就采用了很多“四人幫”(即“GOF”,四個(gè)國(guó)外開(kāi)發(fā)者,提出面向?qū)ο筌浖_(kāi)發(fā)中的常用設(shè)計(jì)模式)的設(shè)計(jì)模式。如在系統(tǒng)啟動(dòng)后就采用創(chuàng)建式的單例模式分配系統(tǒng)內(nèi)存,保證系統(tǒng)各個(gè)模塊在系統(tǒng)中唯一。又如報(bào)警模塊中采用了observer(觀察者)模式,其它模塊如果要獲取報(bào)警信息,可先向該模塊注冊(cè)需要的報(bào)警信息,當(dāng)該報(bào)警模塊發(fā)現(xiàn)有改變報(bào)警端子有報(bào)警的時(shí)候,就會(huì)把報(bào)警信息逐個(gè)通知各個(gè)已經(jīng)注冊(cè)的模塊。這些模式的采用能夠很好地提高代碼的健壯性。

界面
    界面方面設(shè)計(jì)人員采用了名為NeatechGui的系統(tǒng),這套GUI系統(tǒng)包括兩個(gè)部分:一部分是在WINDOWS界面下的自動(dòng)化工具,這套工具負(fù)責(zé)設(shè)計(jì)界面菜單,并自動(dòng)生成C代碼提供給界面部分調(diào)度;另一部分則是DVR GUI部分,這部分是基于不同的分割芯片上的圖形系統(tǒng),這部分作為一個(gè)模塊提供給“微內(nèi)核”調(diào)用,它會(huì)在系統(tǒng)啟動(dòng)時(shí)初始各種分隔芯片,并提供一個(gè)供界面部分調(diào)用的菜單接口。
(中國(guó)集群通信網(wǎng) | 責(zé)任編輯:陳曉亮)

中國(guó)集群通信網(wǎng),國(guó)內(nèi)首家集群通信專(zhuān)業(yè)網(wǎng)站。

Copyright © PttCn.Net, All Rights Reserved.   

聯(lián)系我們 聯(lián)系我們 中國(guó)集群通信網(wǎng) 對(duì)講機(jī)學(xué)堂 對(duì)講機(jī)世界

主站蜘蛛池模板: 激情五月综合色婷婷一区二区| 日韩精品视频在线观看视频| 精品视频导航| 国产精品444| 国产乱子伦精品| 精品久久精品久久| 丝袜亚洲欧美日韩综合| 日本不卡在线观看| 欧美精品尤物在线| 国产女人精品视频| 91久久精品www人人做人人爽| 精品久久久91| 欧美精品在线一区| 日本一欧美一欧美一亚洲视频| 久久精品国产sm调教网站演员| 午夜精品一区二区三区在线播放| 人人妻人人澡人人爽精品欧美一区 | 国产精品自产拍在线观看| 91久久久久久久久久久| 日本精品一区二区三区在线播放视频 | 精品亚洲欧美日韩| 美女精品视频一区| 免费观看国产精品视频| 国产精品一区二区三区观看| 久久99影院| 国产二区视频在线播放| 国产999在线观看| 久久久综合免费视频| www.日韩免费| 国产成人a亚洲精品| 日韩精品视频在线观看视频| 国产精品久久久久久久av大片| 国产精品毛片va一区二区三区| 国产精品流白浆视频| 精品久久久久亚洲| 一区中文字幕在线观看| 亚洲自拍欧美另类| 久久免费福利视频| 午夜精品一区二区三区在线| 欧美国产综合在线V| 国产成人精品在线播放|