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

內容字號:默認大號超大號

段落設置:段首縮進取消段首縮進

字體設置:切換到微軟雅黑切換到宋體






嵌入式DVR軟件中用結構化語言實現面向對象的設計思想

時間:2006-11-15 來源:文/深圳麗澤智能科技 作者:顧小軍 點擊:

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

    傳統的結構化設計方法,在其軟件設計中就有些“力不從心”,因為結構化的軟件要求軟件設計一開始就假定軟件需求是很明確的,系統處理數據的模式和方法也是明確的。然而DVR的用戶是面向不同領域的,而每個客戶的要求都有所不同,如有的客戶可能需要用RS485總線來控制溫度采集器,有的則可能需要來控制云臺,這在結構化設計方面就需要用不同的數據結構和方法來描述。因此,每當針對不同客戶就需要專門定制不同的軟件版本,這無疑增加了軟件的維護和測試成本,這是DVR生產廠商所不愿意看到的。并且,面向對象的設計思想需要采用面向對象的設計語言,無疑是對嵌入式設備一個巨大的考驗。當然,現在不少嵌入式開發工具,已經支持C++、JAVA等面向對象的設計語言。但是這些面向對象的語言需要很大的C++設計庫,這會增加DVR對存儲設備容量的要求。而且面向對象的設計語言在執行的時候會添加一些額外的代碼,如“析構”、“構造”函數,會導致執行效率比結構化的設計語言要低。因此一些編譯器對面向對象的設計語言的支持遠沒有對結構化的設計語言高。如LINUX下的GCC編譯器附帶的調試工具,在調試C++程序中有時就無法打印堆棧和函數的調用關系。

新型軟件設計方法
    綜合以上幾個方面:必須找到一個結構化設計語言和面向對象設計語言結合的平衡點,才能夠更好地解決DVR軟件開發中的設計問題。由此,軟件設計人員采用了一種“用結構化的語言實現面向對象的設計思想”的軟件設計方法。

    這種設計方法的實質是:用面向對象的設計思想去分析嵌入式DVR的需求;用面向對象的設計模式去設計DVR軟件構架;用結構化的語言去實現DVR系統功能。這樣一來,就可以發揮面向對象設計思想在需求分析和建模方面的方便快捷直觀的優點,同時又能保證嵌入式軟件在執行效率和存儲方面的要求。

    當然,我們必須摒棄一些面向對象設計思想中需要依賴面向對象設計語言的一些特性,如運行中的多態,類型識別等。這些行為也能夠在結構化語言中實現,只是有些特性對系統設計來說就有點無關輕重了。如果把所有面向對象的特性都拿來用,這就會導致設計走向另一個極端:在嵌入式開發上使用面向對象的語言來設計系統。特別值得指出的是,面向對象語言中的內存分配,如果在嵌入式軟件上設計使用,會導致頻繁的動態分配不定大小的內存,會引起系統堆棧破碎的風險。

面向對象軟件
    DVR軟件,可采用面向對象軟件中“敏捷軟件”的設計思想來進行分析設計。在進行需求分析的時候,在最初開發周期中,首先確認系統中最重要的10%的需求來確定系統架構設計,這點和結構化的軟件設計是完全不一樣的。結構化的語言假定系統的需求都明確了,根據這些需求進行系統架構設計。

    設計人員采用比較實用快捷面向對象的MVC結構,即模型-視圖-控制器結構,把整個系統分成三個部分:一部分是底層的軟件部分,我們在DVR軟件稱為“微內核”;一部分是人機交互部分,即界面部分;另一部分則是兩者之間的接口,我們稱之為適配器。在軟件架構上也分為三個大的部分(或者說三個軟件包):界面、“微內核”、界面和“微內核”之間的接口。

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

    完成第一次迭代設計后,DVR軟件的其它需求的開發就是一個“添枝加葉”的過程。根據面向對象設計“高內聚、低耦合”的思想原則,每次迭代的過程我們都采用模塊化的設計,。在添加每一個模塊時,統一各個模塊的接口,采用“模塊名_domsg”做為對外接口。這樣一來,就能很好地屏蔽掉各個模塊的內部處理機制,減少軟件開發的耦合程度。如“微內核”中的錄像部分可能需要讀出硬盤模塊提供的分配目錄信息。,就可以通過“hdisk_domsg”來獲取。

各個模塊開發
    在各個模塊開發中,可以采用面向對象語言的概念來設計。語言只是實現思想的一種方式,用結構化的語言可以很好地實現一些面向對象的設計思想。如在考慮各個模塊設計的時候,采用“類”(C++語言中的關鍵字為:class)來組織軟件模塊。當然,在結構化設計中沒有“類”這種概念,于是我們用結構體(C語言中的關鍵字為:struct)來替代。如,在每個模塊設計的時候,就繼承了系統中已經設計好的“父類”。父類里面包括一些共有的屬性,如“模塊ID”,“模塊名稱”,還有一些共有的方法,如“讀取配置參數”,“存儲配置參數”等。在實際編寫每個模塊的時候,首先從這個“父類”繼承,這樣的設計能夠很好優化程序結構,提高程序的可讀性和擴展性,并且能夠很好地提高代碼的復用性。

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

    在模塊開發中,也可以采用面向對象的設計模式。設計人員在采用軟件設計的過程就采用了很多“四人幫”(即“GOF”,四個國外開發者,提出面向對象軟件開發中的常用設計模式)的設計模式。如在系統啟動后就采用創建式的單例模式分配系統內存,保證系統各個模塊在系統中唯一。又如報警模塊中采用了observer(觀察者)模式,其它模塊如果要獲取報警信息,可先向該模塊注冊需要的報警信息,當該報警模塊發現有改變報警端子有報警的時候,就會把報警信息逐個通知各個已經注冊的模塊。這些模式的采用能夠很好地提高代碼的健壯性。

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

本文標簽:

相關文章

中國集群通信網,國內首家集群通信專業網站。

Copyright © PttCn.Net, All Rights Reserved.   

聯系我們 聯系我們 中國集群通信網 對講機學堂 對講機世界

主站蜘蛛池模板: 91精品国产网站| 国产精品视频网站在线观看| 美女久久久久久久| 日本精品一区在线观看| 少妇人妻无码专区视频| 大波视频国产精品久久| 国产精品高潮呻吟久久av野狼| 日韩在线观看成人| 日韩中文字幕视频在线观看| 亚洲a级在线观看| 亚洲欧洲精品在线观看| 亚洲欧洲精品在线观看| 久久91亚洲精品中文字幕| 黄色三级中文字幕| 国产成人久久精品| 国产精品成人av性教育| 91九色视频在线观看| 亚洲v国产v在线观看| 欧美激情亚洲国产| 国产精品女视频| www.日韩系列| 欧美一区二视频在线免费观看| 色综合久久久久久久久五月| 欧洲精品在线一区| 国产精品一区在线播放| 亚洲精品欧洲精品| 久久久成人的性感天堂| 丁香六月激情婷婷| 日韩免费在线播放| 国产午夜精品一区| 日本一区二区三区视频免费看 | 久久九九国产视频| 国产精品偷伦免费视频观看的| 国产精品一区二区免费看| 人妻无码一区二区三区四区| 久久夜色撩人精品| julia一区二区中文久久94| 九九精品在线观看| 蜜桃麻豆91| 亚洲精品在线视频观看| 国产精品美女在线观看|