一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng)及設(shè)計(jì)方法
【專利摘要】本發(fā)明提供了一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng)及設(shè)計(jì)方法,所描述的體系結(jié)構(gòu)設(shè)計(jì)模式將一個軟件系統(tǒng)分為主調(diào)函數(shù)構(gòu)件、被調(diào)函數(shù)構(gòu)件、控制器構(gòu)件、事件構(gòu)件和數(shù)據(jù)構(gòu)件五個模塊。在程序的所有數(shù)據(jù)交互之間增加控制器構(gòu)件,實(shí)現(xiàn)對事件及模塊之間數(shù)據(jù)交互的全局管理??刂破鳂?gòu)件內(nèi)部包括計(jì)時器組件、函數(shù)處理組件和函數(shù)注冊組件,用于控制模塊之間數(shù)據(jù)交互的時間。若在規(guī)定時間內(nèi)數(shù)據(jù)未正常返回,則由函數(shù)處理組件強(qiáng)制返回一個錯誤數(shù)據(jù)并結(jié)束故障函數(shù)調(diào)用進(jìn)程。本發(fā)明的優(yōu)點(diǎn)包括構(gòu)件復(fù)用、循序漸進(jìn)的原型設(shè)計(jì)、構(gòu)件可以并行開發(fā)且互不影響,最重要的是解決了潛通路問題,提高了軟件的穩(wěn)定性和健壯性。
【專利說明】一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng)及設(shè)計(jì)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種DEPC(數(shù)據(jù)Data、事件Event、加工Process、控制器Controller四個英文單詞的縮寫)體系結(jié)構(gòu)管理系統(tǒng)及實(shí)現(xiàn)方法,具體來講是一種對程序各模塊之間的數(shù)據(jù)交互進(jìn)行全局管理的軟件體系結(jié)構(gòu)系統(tǒng)及設(shè)計(jì)方法,該軟件體系結(jié)構(gòu)獨(dú)立于硬件單元功能的實(shí)際實(shí)現(xiàn)進(jìn)行控制;屬于計(jì)算機(jī)【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]起初,人們把軟件設(shè)計(jì)的重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)和算法的選擇上,隨著軟件系統(tǒng)規(guī)模越來越大,越來越復(fù)雜,整個系統(tǒng)的結(jié)構(gòu)和規(guī)格說明顯得越來越重要。對于大規(guī)模的復(fù)雜軟件系統(tǒng)來說,總體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和規(guī)格說明比起對計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已經(jīng)明顯變得重要得多。自從軟件系統(tǒng)首次被分成許多模塊,模塊之間又相互作用,組合起來有整體的屬性,就具有了體系結(jié)構(gòu)。
[0003]20世紀(jì)70年代之前,軟件開發(fā)以匯編程序設(shè)計(jì)為主。由于當(dāng)時的系統(tǒng)規(guī)模較小,所以基本上沒有軟件系統(tǒng)結(jié)構(gòu)的概念。20世紀(jì)80年代至90年代中期,面向?qū)ο蟮拈_發(fā)方法開始興起且逐步成熟。20世紀(jì)90年代以后,則進(jìn)入到基于構(gòu)件的軟件開發(fā)階段,該階段以過程為中心,強(qiáng)調(diào)軟件開發(fā)采用構(gòu)件化技術(shù)和體系結(jié)構(gòu)技術(shù),要求開發(fā)出的軟件具備很強(qiáng)的自適應(yīng)性、互操作性、可拓展性和可重用性。軟件體系結(jié)構(gòu)的出現(xiàn),使得軟件各個層次分工明確,互不干涉。某個層次的需求發(fā)生了變化,就只需要更改相應(yīng)層中的代碼,不會影響到其它層中代碼。
[0004]然而實(shí)時軟件常用的體系結(jié)構(gòu)模式主要有傳統(tǒng)的輪詢體系結(jié)構(gòu)、函數(shù)隊(duì)列體系結(jié)構(gòu)、前后臺(中斷)體系結(jié)構(gòu)以及基于操作系統(tǒng)的分層體系結(jié)構(gòu)。目前在個人計(jì)算機(jī)及服務(wù)器上運(yùn)行的應(yīng)用軟件所采用的MVC、SOA等體系結(jié)構(gòu)不適合實(shí)時軟件。大多數(shù)實(shí)時軟件只有較少的人機(jī)交互,甚至沒有人機(jī)交互,可以將人機(jī)交互看作是事件。實(shí)時軟件中有大量的事件,這些事件不一定是人機(jī)交互產(chǎn)生的事件,所有這些事件會控制程序的流轉(zhuǎn),比如中斷,而許多事件往往是隨機(jī)發(fā)生的,這種事件很容易造成程序潛通路。
[0005]早在20世紀(jì)80年代,人們已經(jīng)開始著手對軟件潛通路的分析研究。潛通路指的是在軟件系統(tǒng)中某些潛在的路徑,它們屬于不在計(jì)劃中的路徑,是人們不希望出現(xiàn)的。潛通路總是存在,因?yàn)樽酉到y(tǒng)設(shè)計(jì)人員缺乏整體系統(tǒng)的全局觀念或者是某些疏忽的行為,有一些則是軟件設(shè)計(jì)時的邏輯問題,還有一些數(shù)據(jù)交互很難被提前預(yù)測,甚至還有一些潛通路是由于電磁干擾或者其它因素造成的。
[0006]造成軟件潛通路的因素有很多,這里可以舉一個可能會產(chǎn)生軟件潛通路的例子。目前在實(shí)時軟件設(shè)計(jì)中,對中斷的處理通常是依據(jù)其優(yōu)先級,優(yōu)先級高的中斷可以搶占系統(tǒng)資源,這是應(yīng)該對被搶占的處理過程的狀態(tài)進(jìn)行保存,在中斷處理完成后繼續(xù)完成被掛起的處理過程。但是,這些都需要開發(fā)人員一個個去處理,很多時候可能出現(xiàn)未保存被搶占處理過程的狀態(tài)或保存不完整。如圖1所示是一個由于中斷產(chǎn)生的潛通路,如果設(shè)計(jì)時未考慮到這種情況,很可能程序調(diào)用沒有返回。潛通路問題的出現(xiàn)會給程序執(zhí)行帶來諸多不可預(yù)見和不可控制的因素。若在程序運(yùn)行中不對潛通路做必要的處理,將會給整體的軟件項(xiàng)目工程帶來巨大的風(fēng)險。
[0007]如果在所有可能產(chǎn)生數(shù)據(jù)交互的構(gòu)件之間添加一層控制構(gòu)件層,進(jìn)行全局監(jiān)管,用來避免上述情況的發(fā)生,則能夠有效的對程序執(zhí)行中出現(xiàn)的潛通路問題進(jìn)行處理,同時在控制器構(gòu)件中添加計(jì)時器功能,則能夠避免程序執(zhí)行出現(xiàn)無限等待的情況,也能在實(shí)時軟件中約束程序執(zhí)行的時間。
[0008]目前國內(nèi)外尚未有解決程序運(yùn)行過程中出現(xiàn)的潛通路問題的相關(guān)文獻(xiàn)報道。
【發(fā)明內(nèi)容】
[0009]本發(fā)明技術(shù)解決方案:克服現(xiàn)有技術(shù)的不足,提供一種DEPC體系結(jié)構(gòu)管理系統(tǒng)及實(shí)現(xiàn)方法,解決程序運(yùn)行過程中出現(xiàn)的潛通路問題;可以應(yīng)用在實(shí)時軟件和非實(shí)時軟件中;不受限于開發(fā)程序時所使用的編程語言;能夠展現(xiàn)系統(tǒng)公共的高層次的抽象;有助于循序漸進(jìn)的原型設(shè)計(jì);支持構(gòu)件并行開發(fā),且互不影響。
[0010]本發(fā)明技術(shù)解決方案:1、一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng),其特征在于在軟件開發(fā)時,將軟件分為主調(diào)函數(shù)構(gòu)件、被調(diào)函數(shù)構(gòu)件、事件構(gòu)件、數(shù)據(jù)構(gòu)件和控制器構(gòu)件五部分;其中:
[0011]主調(diào)函數(shù)構(gòu)件,實(shí)現(xiàn)調(diào)用用戶定義的功能函數(shù),將需要調(diào)用的函數(shù)信息交給控制器構(gòu)件進(jìn)行處理;
[0012]被調(diào)函數(shù)構(gòu)件,實(shí)現(xiàn)處理對應(yīng)系統(tǒng)具體的數(shù)據(jù)加工和處理,被控制器構(gòu)件所調(diào)用,然后將結(jié)果返回給控制器構(gòu)件;
[0013]事件構(gòu)件,實(shí)現(xiàn)處理對應(yīng)系統(tǒng)中可能出現(xiàn)的所有事件,如中斷或連接網(wǎng)絡(luò)等,被控制器構(gòu)件所調(diào)用,然后將結(jié)果返回給控制器構(gòu)件;
[0014]控制器構(gòu)件,實(shí)現(xiàn)對程序中可能出現(xiàn)的數(shù)據(jù)交互進(jìn)行管理和控制,主調(diào)函數(shù)將要調(diào)用的組件信息交給控制器構(gòu)件,控制器構(gòu)件在調(diào)用具體的被調(diào)函數(shù)時,利用計(jì)時器對被調(diào)函數(shù)的執(zhí)行過程進(jìn)行計(jì)時,如果程序在預(yù)期的時間內(nèi)沒有正常返回,則強(qiáng)制切斷執(zhí)行進(jìn)程,返回一個異常數(shù)據(jù);控制器構(gòu)件的另外一個功能是將需要控制器進(jìn)行控制的函數(shù)注冊入函數(shù)信息列表;
[0015]數(shù)據(jù)構(gòu)件,提供訪問數(shù)據(jù)結(jié)構(gòu)、文件、數(shù)據(jù)庫定義和存儲數(shù)據(jù)接口的構(gòu)件。
[0016]將一個軟件系統(tǒng)劃分為數(shù)據(jù)(Data)、事件(Event)、加工(Process)、控制器(Controller)四個部分,其中加工分為主調(diào)加工和被調(diào)加工兩種情況。
[0017]潛通路指的是在軟件系統(tǒng)中某些潛在的路徑,它們屬于不在計(jì)劃中的路徑,是不希望出現(xiàn)的。潛通路問題的出現(xiàn)會給程序執(zhí)行帶來諸多不可預(yù)見和不可控制的因素。若在程序運(yùn)行中不對潛通路做必要的處理,將會給整體的軟件項(xiàng)目工程帶來巨大的風(fēng)險。
[0018]由于多方面的原因,潛通路總是存在于軟件系統(tǒng)數(shù)據(jù)交互中。添加一層控制器構(gòu)件層,進(jìn)行全局監(jiān)管,用來避免上述情況的發(fā)生,則能夠有效的對程序執(zhí)行中出現(xiàn)的潛通路問題進(jìn)行處理,同時在控制器構(gòu)件中添加計(jì)時器功能,則能夠有效避免程序執(zhí)行中出現(xiàn)無限等待的情況,也能在實(shí)時軟件中約束程序執(zhí)行的時間。
[0019]控制器構(gòu)件是DEPC體系結(jié)構(gòu)模式中的核心構(gòu)件,它對當(dāng)前事件、狀態(tài)、數(shù)據(jù)進(jìn)行監(jiān)聽,提供相應(yīng)機(jī)制協(xié)調(diào)事件相應(yīng)、狀態(tài)掛起、數(shù)據(jù)保存,保存正確通路執(zhí)行,并阻斷潛通路的執(zhí)行。
[0020]所述的主調(diào)函數(shù)構(gòu)件需要包含程序主函數(shù),也就是程序的入口函數(shù),以及其它用戶自己定義的功能函數(shù)。
[0021]所述的控制器構(gòu)件需要包含函數(shù)處理組件、計(jì)時器組件和注冊組件。其中注冊組件用于存放需要函數(shù)處理組件進(jìn)行處理的函數(shù)信息(包括函數(shù)名稱、函數(shù)參數(shù)列表、函數(shù)返回類型);計(jì)時器組件根據(jù)程序所應(yīng)用系統(tǒng)平臺的時鐘,對某個線程運(yùn)行的時間進(jìn)行計(jì)時;函數(shù)處理組件將根據(jù)主調(diào)函數(shù)傳入的函數(shù)信息,從函數(shù)列表中尋找被調(diào)函數(shù)信息,然后建立兩個線程,一個線程用于執(zhí)行被調(diào)函數(shù),另一個線程用于對執(zhí)行的被調(diào)函數(shù)運(yùn)行時間進(jìn)行計(jì)時。
[0022]一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)設(shè)計(jì)方法,實(shí)現(xiàn)步驟如下:
[0023](I)程序開發(fā)人員在建立項(xiàng)目工程時,項(xiàng)目目錄下建立控制器(Cont1ller)、數(shù)據(jù)處理(DataProcessing)、事件處理(DataProcessing)、功能函數(shù)(Funct1ns)四個文件夾或包;
[0024](2)在功能函數(shù)包中編寫主函數(shù)以及其他的主被調(diào)函數(shù);
[0025](3)在數(shù)據(jù)處理包中編寫用于訪問數(shù)據(jù)庫、對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行操作的相關(guān)函數(shù);
[0026](4)事件處理包中編寫用于實(shí)現(xiàn)中斷操作、網(wǎng)絡(luò)數(shù)據(jù)通信操作等一切程序中可能出現(xiàn)的事件函數(shù);
[0027](5)在控制器包中,需要編寫計(jì)時器函數(shù)、函數(shù)處理函數(shù)和函數(shù)注冊函數(shù),編寫計(jì)時器函數(shù)時需要根據(jù)所應(yīng)用系統(tǒng)的時鐘模塊進(jìn)行編寫,當(dāng)計(jì)時器開始工作時首先讀取系統(tǒng)當(dāng)前的時間,程序運(yùn)行時不停獲取最新的系統(tǒng)時間,與開始時間進(jìn)行相減即可得到程序已經(jīng)運(yùn)行的時間,若超出預(yù)定時間將強(qiáng)制結(jié)束被調(diào)函數(shù)進(jìn)程,并返回錯誤數(shù)值;函數(shù)注冊函數(shù)需要構(gòu)造一個用于存放函數(shù)信息的存儲空間,可以是一個文件、一個數(shù)據(jù)結(jié)構(gòu)或一個表等,存放的函數(shù)信息包括函數(shù)名、函數(shù)返回值、函數(shù)參數(shù)列表;函數(shù)處理函數(shù)需要實(shí)現(xiàn)從函數(shù)列表中查找被調(diào)函數(shù)的功能,查到函數(shù)信息后,能夠建立兩個進(jìn)程,一個進(jìn)程用于執(zhí)行被調(diào)函數(shù),一個進(jìn)程用于執(zhí)行計(jì)時器對被調(diào)函數(shù)運(yùn)行的時間進(jìn)行計(jì)時;
[0028](6)可以在控制器、事件處理、數(shù)據(jù)處理、功能函數(shù)同一級目錄下,建立資源和頭文件目錄,用于存放圖片、音視頻資源和函數(shù)的頭文件信息。
[0029]本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0030](I)本發(fā)明提供一種最基本的DEPC體系結(jié)構(gòu)框架,用于程序員對其進(jìn)行更好的理解和應(yīng)用,更重要的是程序員在開發(fā)軟件時,能夠運(yùn)用DEPC體系結(jié)構(gòu)的整體設(shè)計(jì)思想。對于不同的應(yīng)用場景,DEPC體系結(jié)構(gòu)可以進(jìn)行適當(dāng)?shù)耐卣购驼{(diào)整。
[0031](2)本發(fā)明的應(yīng)用范圍較廣,不受限于開發(fā)程序時所使用的編程語言,且可以應(yīng)用在實(shí)時軟件和非實(shí)時軟件中??刂破鳂?gòu)件主要有兩個作用,一是對構(gòu)件之間的數(shù)據(jù)進(jìn)行全局管理,二是對程序的運(yùn)行時間進(jìn)行有效控制。本發(fā)明還提供一種基本的控制器構(gòu)件實(shí)現(xiàn)方式。由于在不同的應(yīng)用場景中,軟件對控制器的具體要求也不盡相同。比如不同的軟件工程對其各個任務(wù)進(jìn)程可容忍的運(yùn)行時間和運(yùn)行要求是不同的;在非實(shí)時軟件中,不是每個任務(wù)都需要通過控制器構(gòu)件進(jìn)行處理,只要注冊需要控制的任務(wù)函數(shù)即可等等。所以,控制器構(gòu)件也是需要根據(jù)不同的情況進(jìn)行相對修改和調(diào)整的。
[0032](3)本發(fā)明能夠有效的解決軟件運(yùn)行過程中出現(xiàn)的潛通路問題。在目前的軟件開發(fā)中,還沒有一種針對軟件潛通路的有效解決方案,DEPC的設(shè)計(jì)可以說是彌補(bǔ)了這項(xiàng)空白。運(yùn)用DEPC軟件體系結(jié)構(gòu)來設(shè)計(jì)軟件能夠有效對軟件運(yùn)行過程中出現(xiàn)的潛通路進(jìn)行處理,這樣能夠極大的提高軟件整體的安全性和可靠性。
[0033](4)本發(fā)明提供一種有助于循序漸進(jìn)原型設(shè)計(jì)的軟件體系結(jié)構(gòu)。在軟件開發(fā)時,分層設(shè)計(jì)可以對項(xiàng)目進(jìn)行分析,并將項(xiàng)目按可執(zhí)行模型來構(gòu)造原型。從兩個方面有助于開發(fā)活動的順利進(jìn)行,一是可以在軟件生命周期的早期階段明確潛在的系統(tǒng)性能問題;二是在軟件生命周期的早期階段就能得到一個可執(zhí)行的系統(tǒng)。這兩個方面都將減少項(xiàng)目開發(fā)的潛在風(fēng)險。
[0034](5)本發(fā)明能夠展現(xiàn)系統(tǒng)公共的高層次的抽象。系統(tǒng)的大部分相關(guān)人員能夠把它作為建立一個互相理解的基礎(chǔ),形成統(tǒng)一認(rèn)識,相互交流。DEPC軟件體系結(jié)構(gòu)明確了對系統(tǒng)實(shí)現(xiàn)的約束條件,將符合體系結(jié)構(gòu)所描述的結(jié)構(gòu)性設(shè)計(jì)決策分割成規(guī)定的構(gòu)件,按規(guī)定方式交互。這樣一來DEPC軟件結(jié)構(gòu)的設(shè)計(jì)者不需要是算法設(shè)計(jì)者或者精通編程語言,只需要重點(diǎn)考慮系統(tǒng)的總體權(quán)衡問題;而構(gòu)件的開發(fā)人員在體系結(jié)構(gòu)給定的約束下進(jìn)行開發(fā)。這樣的設(shè)計(jì),使得主調(diào)構(gòu)件、被調(diào)構(gòu)件、控制構(gòu)件、事件構(gòu)件和數(shù)據(jù)構(gòu)件在邏輯上保持相對獨(dú)立性,從而使整個系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能夠提高系統(tǒng)和軟件的可維護(hù)性和可拓展性。
【專利附圖】
【附圖說明】
[0035]圖1為中斷產(chǎn)生潛通路的情況;
[0036]圖2為本發(fā)明的DEPC體系結(jié)構(gòu)管理系統(tǒng)結(jié)構(gòu)圖,反映了各個構(gòu)件之間進(jìn)行數(shù)據(jù)交互的方式;
[0037]圖3為本發(fā)明中控制器構(gòu)件中的計(jì)時器組件、處理函數(shù)組件、注冊函數(shù)組件與主調(diào)函數(shù)組件和被調(diào)用函數(shù)組件之間的關(guān)系。箭頭方向表示可能存在的數(shù)據(jù)交互方向,函數(shù)注冊列表則表示儲存函數(shù)信息的文件或者數(shù)據(jù)結(jié)構(gòu);
[0038]圖4為本發(fā)明中控制器構(gòu)件中的注冊組件工作流程,當(dāng)一個函數(shù)實(shí)現(xiàn)后,如果需要對其進(jìn)行全局的控制,則需要利用注冊函數(shù)對其進(jìn)行注冊,然后注冊函數(shù)將注冊的函數(shù)信息(函數(shù)名稱、函數(shù)參數(shù)、函數(shù)返回值)存入函數(shù)列表中;
[0039]圖5為本發(fā)明中控制器構(gòu)件中的處理組件工作流程,當(dāng)主調(diào)函數(shù)調(diào)用被調(diào)用函數(shù)時,處理組件會從注冊函數(shù)列表中查找函數(shù),然后創(chuàng)建兩個進(jìn)程,一個用于執(zhí)行被調(diào)函數(shù),而另一個用于調(diào)用計(jì)時器計(jì)時,判斷被調(diào)用函數(shù)的執(zhí)行是否超出預(yù)期時間,最終將結(jié)果返回;
[0040]圖6示出了控制器構(gòu)件中的計(jì)時器組件工作流程。計(jì)時組件收到函數(shù)處理組件計(jì)時的命令后開始計(jì)時,同時判斷程序運(yùn)行時間是否超出了預(yù)先規(guī)定時間,如果超出時間,將強(qiáng)制返回一個錯誤數(shù)據(jù);
[0041]圖7示出了在基于3G網(wǎng)絡(luò)的人臉識別系統(tǒng)中圖像采集子系統(tǒng)的工作流程圖;
[0042]圖8示出了在基于3G網(wǎng)絡(luò)的人臉識別系統(tǒng)中識別子系統(tǒng)的工作流程圖。
【具體實(shí)施方式】
[0043]以下包括術(shù)語、首字母縮寫詞和縮寫的簡單詞匯,將有助于理解下面的實(shí)施例的詳細(xì)描述,但是這些細(xì)節(jié)并不是為了限制本發(fā)明。本領(lǐng)域的技術(shù)人員顯然可以在偏離這些具體細(xì)節(jié)的其它實(shí)施方案中實(shí)踐本發(fā)明。例如,盡管是以基于3G網(wǎng)絡(luò)的人臉識別系統(tǒng)的實(shí)施方案來描述本發(fā)明,但本發(fā)明也可以應(yīng)用在任意包括實(shí)時軟件和非實(shí)時軟件中。
[0044]術(shù)語“包含”和“包括”及其派生詞表示非限制性包括;術(shù)語“或”是包含性的,意味著和/或;短語“與……相關(guān)聯(lián)”和“與之相關(guān)聯(lián)”及其派生詞可表示包括、被包括、與之互連、包含、被包含、與之連接、與之耦合、可與之通信、與之協(xié)作、交織、并列、接近、限于、具有、具有其性質(zhì)等;“構(gòu)件”是面向軟件體系架構(gòu)的可復(fù)用軟件模塊。構(gòu)件(component)是可復(fù)用的軟件組成成份,可被用來構(gòu)造其他軟件,在本發(fā)明中構(gòu)件通常指的是被封裝的對象類、類樹和一些功能模塊;“組件”指的是對數(shù)據(jù)和方法的簡單封裝;“DEPC”指的是數(shù)據(jù)(Data)、事件(Event)、加工(Process)、控制器(Controller)四個英文單詞的縮寫?!?G網(wǎng)絡(luò)”是指使用支持高速數(shù)據(jù)傳輸?shù)姆涓C移動通訊技術(shù)的第三代移動通信技術(shù)的線路和設(shè)備鋪設(shè)而成的通信網(wǎng)絡(luò)。
[0045]為了驗(yàn)證DEPC體系結(jié)構(gòu)設(shè)計(jì)模式的有效性,我們采用了運(yùn)用本發(fā)明和不用本發(fā)明兩種方式來實(shí)現(xiàn)一款基于3G網(wǎng)絡(luò)的人臉識別系統(tǒng)。如圖7和圖8所示,從上至下反映了基于3G網(wǎng)絡(luò)的人臉識別系統(tǒng)的主要流程,該系統(tǒng)由圖像采集系統(tǒng)和識別系統(tǒng)兩個子系統(tǒng)構(gòu)成。圖像采集系統(tǒng)只負(fù)責(zé)采集人臉數(shù)據(jù),然后將采集到的人臉數(shù)據(jù)通過3G網(wǎng)絡(luò)傳輸給識別系統(tǒng)。識別系統(tǒng)接收到原始圖像信息后,對圖像信息進(jìn)行分析處理,提取出人的臉、眼睛、鼻子、嘴、眉毛等特征后,跟數(shù)據(jù)庫中的圖像進(jìn)行比對,判斷是否存在對應(yīng)的人臉信息,最后將結(jié)果信息再次通過3G網(wǎng)絡(luò)發(fā)送回圖像采集端。圖像采集端接收到返回信息后通過顯示屏將結(jié)果顯示出來。
[0046]在這個系統(tǒng)中,一共有四個關(guān)鍵節(jié)點(diǎn)。分別是圖像采集系統(tǒng)中的判斷是否開始圖像采集和等待接收反饋信息,人臉識別系統(tǒng)中的等待接收采集到的圖像數(shù)據(jù)和從人臉數(shù)據(jù)庫中匹配人臉特征數(shù)據(jù)。
[0047]當(dāng)用戶開始進(jìn)行圖像采集時,需要手動觸發(fā)中斷(如按按鈕),告訴圖像采集系統(tǒng)開始采集圖像數(shù)據(jù)。數(shù)據(jù)采集完畢后,通過移動互聯(lián)網(wǎng)將信息傳遞給人臉識別系統(tǒng)。人臉識別系統(tǒng)需要不停的等待接收圖像數(shù)據(jù)。當(dāng)有新的圖像數(shù)據(jù)需要識別系統(tǒng)接收時,也是通過觸發(fā)中斷的方式,告訴識別系統(tǒng)開始接收數(shù)據(jù)。我們可以看到,在這個系統(tǒng)中存在著很多的不穩(wěn)定因素。用普通的非DEPC軟件體系結(jié)構(gòu)實(shí)現(xiàn)這個系統(tǒng)后,當(dāng)用戶快速連續(xù)的觸發(fā)采集圖像中斷時,程序有時會出現(xiàn)死機(jī)的情況,表明程序進(jìn)入了潛通路。當(dāng)3G信號不穩(wěn)定時,也會造成系統(tǒng)等待時間過長的問題。
[0048]采用DEPC體系結(jié)構(gòu)來設(shè)計(jì)這個系統(tǒng)時,我們將用戶觸發(fā)中斷的事件劃分為事件構(gòu)件,將要訪問的人臉數(shù)據(jù)庫劃分為數(shù)據(jù)構(gòu)件,其他函數(shù)調(diào)用依次為主調(diào)構(gòu)件和被調(diào)構(gòu)件,最后還在這些構(gòu)件之間增添了控制構(gòu)件用于全局控制。這樣,用戶每次觸發(fā)中斷,都會由控制構(gòu)件來進(jìn)行處理,這樣的設(shè)計(jì)有效避免了潛通路的發(fā)生。訪問人臉數(shù)據(jù)庫時,需要調(diào)用數(shù)據(jù)構(gòu)件,避免其他用戶直接對數(shù)據(jù)庫進(jìn)行訪問,安全性有了很高的提升。當(dāng)圖像采集系統(tǒng)與人臉識別系統(tǒng)通過3G網(wǎng)絡(luò)進(jìn)行通訊時,控制構(gòu)件會進(jìn)行計(jì)時管理,如果網(wǎng)絡(luò)通訊超出了規(guī)定的時間要求,控制構(gòu)件會強(qiáng)制返回信息提示數(shù)據(jù)發(fā)送超時或者數(shù)據(jù)發(fā)送失敗。
[0049]圖7所示為視頻采集子系統(tǒng)的流程圖。在實(shí)現(xiàn)采集子系統(tǒng)時,將整體的代碼分布在控制器、功能函數(shù)、事件三個包中??刂破靼写娣庞刑幚砗瘮?shù)、計(jì)時器函數(shù)、注冊函數(shù)和函數(shù)信息表;功能函數(shù)包中存放有主函數(shù)、圖像采集函數(shù);事件包中存放有按鈕中斷處理函數(shù)、網(wǎng)絡(luò)通信函數(shù)。
[0050]系統(tǒng)運(yùn)行前需要對圖像采集函數(shù)、按鈕中斷處理函數(shù)和網(wǎng)絡(luò)通信函數(shù)進(jìn)行注冊,如圖4所示,實(shí)現(xiàn)圖像采集函數(shù)、按鈕中斷處理函數(shù)和網(wǎng)絡(luò)通信函數(shù)后,需要將它們的函數(shù)名稱、參數(shù)列表和返回值類型信息存放在函數(shù)信息表中。當(dāng)用戶想要采集圖像時,通過按物理按鈕觸發(fā)中斷處理函數(shù),如圖3所示中斷處理函數(shù)通知控制器需要調(diào)用圖像采集函數(shù),控制器從函數(shù)信息列表中查找到被調(diào)函數(shù)信息,接著如圖5所示控制器中的函數(shù)處理函數(shù)調(diào)用圖像采集函數(shù),同時啟動計(jì)時器對被調(diào)函數(shù)的運(yùn)行時間進(jìn)行計(jì)時。采集好圖像之后,通過網(wǎng)絡(luò)通信函數(shù)將獲取到的圖像信息傳送給人臉識別子系統(tǒng)。函數(shù)調(diào)用的過程中都需要通過控制器構(gòu)件中的處理函數(shù)進(jìn)行處理,處理函數(shù)會調(diào)用計(jì)時器函數(shù)對函數(shù)的執(zhí)行時間進(jìn)行計(jì)算和控制,如圖6所示超出時間的話將強(qiáng)制返回錯誤數(shù)據(jù)。
[0051]圖8所示為人臉識別子系統(tǒng)的流程圖。在實(shí)現(xiàn)人臉識別子系統(tǒng)時,將整體的代碼分布在控制器、功能函數(shù)、事件和數(shù)據(jù)四個包中。控制器包中存放有處理函數(shù)、計(jì)時器函數(shù)、注冊函數(shù);功能函數(shù)包中存放有主函數(shù)、特征提取函數(shù)、特征比對函數(shù)、結(jié)果反饋函數(shù);事件包中存放有網(wǎng)絡(luò)通信函數(shù);數(shù)據(jù)包中存放有訪問數(shù)據(jù)庫函數(shù)。
[0052]系統(tǒng)運(yùn)行前需要對特征提取函數(shù)、特征比對函數(shù)、結(jié)果反饋函數(shù)、網(wǎng)絡(luò)通信函數(shù)、訪問數(shù)據(jù)庫函數(shù)進(jìn)行注冊,如圖4所示,實(shí)現(xiàn)特征提取函數(shù)、特征比對函數(shù)、結(jié)果反饋函數(shù)、網(wǎng)絡(luò)通信函數(shù)、訪問數(shù)據(jù)庫函數(shù)后,需要將它們的函數(shù)名稱、參數(shù)列表和返回值類型信息存放在函數(shù)信息表中。當(dāng)人臉識別子系統(tǒng)接收到新的采集數(shù)據(jù)后,如圖3所示通知控制器需要調(diào)用特征提取函數(shù),控制器從函數(shù)信息列表中查找到被調(diào)函數(shù)信息,接著如圖5所示控制器中的函數(shù)處理函數(shù)調(diào)用特征提取函數(shù)將對采集到的數(shù)據(jù)進(jìn)行人臉特征提取和計(jì)算,同時啟動計(jì)時器對被調(diào)函數(shù)的運(yùn)行時間進(jìn)行計(jì)時。然后調(diào)用特征比對函數(shù),訪問數(shù)據(jù)庫中的所有人臉數(shù)據(jù),判斷是否有匹配數(shù)據(jù),接著將比對后的數(shù)據(jù)返回給采集子系統(tǒng)。函數(shù)調(diào)用的過程中都需要通過控制器構(gòu)件中的處理函數(shù)進(jìn)行處理,處理函數(shù)會如圖6所示調(diào)用計(jì)時器函數(shù)對函數(shù)的執(zhí)行時間進(jìn)行計(jì)算和控制,比如訪問數(shù)據(jù)庫執(zhí)行的時間和網(wǎng)絡(luò)通信持續(xù)的時間如果超出預(yù)期時間的話將強(qiáng)制返回錯誤數(shù)據(jù),沒有超出預(yù)期時間,將返回正確的數(shù)據(jù)。
[0053]通過實(shí)際項(xiàng)目的驗(yàn)證,發(fā)現(xiàn)采用DEPC軟件體系結(jié)構(gòu)編寫程序時,程序的運(yùn)行速度會稍微有所下降,但是系統(tǒng)整體的穩(wěn)定性和可靠性卻有著巨大的提升。
【權(quán)利要求】
1.一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng),其特征在于:在軟件開發(fā)時,將軟件分為主調(diào)函數(shù)構(gòu)件、被調(diào)函數(shù)構(gòu)件、事件構(gòu)件、數(shù)據(jù)構(gòu)件和控制器構(gòu)件五部分;其中: 主調(diào)函數(shù)構(gòu)件,實(shí)現(xiàn)調(diào)用用戶定義的功能函數(shù),將需要調(diào)用的函數(shù)信息交給控制器構(gòu)件進(jìn)行處理; 被調(diào)函數(shù)構(gòu)件,實(shí)現(xiàn)處理對應(yīng)系統(tǒng)具體的數(shù)據(jù)加工和處理,被控制器構(gòu)件所調(diào)用,然后將結(jié)果返回給控制器構(gòu)件; 事件構(gòu)件,實(shí)現(xiàn)處理對應(yīng)系統(tǒng)中可能出現(xiàn)的所有事件,包括中斷或連接網(wǎng)絡(luò),被控制器構(gòu)件所調(diào)用,然后將結(jié)果返回給控制器構(gòu)件; 控制器構(gòu)件,實(shí)現(xiàn)對程序中可能出現(xiàn)的數(shù)據(jù)交互進(jìn)行管理和控制,主調(diào)函數(shù)將要調(diào)用的組件信息交給控制器構(gòu)件,控制器構(gòu)件在調(diào)用具體的被調(diào)函數(shù)時,利用計(jì)時器對被調(diào)函數(shù)的執(zhí)行過程進(jìn)行計(jì)時,如果程序在預(yù)期的時間內(nèi)沒有正常返回,則強(qiáng)制切斷執(zhí)行進(jìn)程,返回一個異常數(shù)據(jù);控制器構(gòu)件的另外一個功能是將需要控制器進(jìn)行控制的函數(shù)注冊入函數(shù)信息列表; 數(shù)據(jù)構(gòu)件,提供訪問數(shù)據(jù)結(jié)構(gòu)、文件、數(shù)據(jù)庫定義和存儲數(shù)據(jù)接口的構(gòu)件。
2.根據(jù)權(quán)利要求1所述的用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng),其特征在于:所述的主調(diào)函數(shù)構(gòu)件需要包含程序主函數(shù),也就是程序的入口函數(shù),以及其它用戶自己定義的功能函數(shù)。
3.根據(jù)權(quán)利要求1所述的用于解決軟件潛通路的軟件體系結(jié)構(gòu)系統(tǒng),其特征在于:所述的控制器構(gòu)件包含函數(shù)處理組件、計(jì)時器組件和注冊組件,其中注冊組件用于存放需要函數(shù)處理組件進(jìn)行處理的函數(shù)信息,所述函數(shù)信息包括函數(shù)名稱、函數(shù)參數(shù)列表、函數(shù)返回類型;計(jì)時器組件根據(jù)程序所應(yīng)用系統(tǒng)平臺的時鐘,對某個線程運(yùn)行的時間進(jìn)行計(jì)時;函數(shù)處理組件將根據(jù)主調(diào)函數(shù)傳入的函數(shù)信息,從函數(shù)列表中尋找被調(diào)函數(shù)信息,然后建立兩個線程,一個線程用于執(zhí)行被調(diào)函數(shù),另一個線程用于對執(zhí)行的被調(diào)函數(shù)運(yùn)行時間進(jìn)行計(jì)時。
4.一種用于解決軟件潛通路的軟件體系結(jié)構(gòu)設(shè)計(jì)方法,其特征在于:實(shí)現(xiàn)步驟如下: (1)程序開發(fā)人員在建立項(xiàng)目工程時,項(xiàng)目目錄下建立控制器(Cont1ller)、數(shù)據(jù)處理(DataProcessing)、事件處理(DataProcessing)、功能函數(shù)(Funct1ns)四個文件夾或包; (2)在功能函數(shù)包中編寫主函數(shù)以及其他的主被調(diào)函數(shù); (3)在數(shù)據(jù)處理包中編寫用于訪問數(shù)據(jù)庫、對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行操作的相關(guān)函數(shù); (4)事件處理包中編寫用于實(shí)現(xiàn)中斷操作、網(wǎng)絡(luò)數(shù)據(jù)通信操作等一切程序中可能出現(xiàn)的事件函數(shù); (5)在控制器包中,需要編寫計(jì)時器函數(shù)、函數(shù)處理函數(shù)和函數(shù)注冊函數(shù),編寫計(jì)時器函數(shù)時需要根據(jù)所應(yīng)用系統(tǒng)的時鐘模塊進(jìn)行編寫,當(dāng)計(jì)時器開始工作時首先讀取系統(tǒng)當(dāng)前的時間,程序運(yùn)行時不停獲取最新的系統(tǒng)時間,與開始時間進(jìn)行相減即得到程序已經(jīng)運(yùn)行的時間,若超出預(yù)定時間將強(qiáng)制結(jié)束被調(diào)函數(shù)進(jìn)程,并返回錯誤數(shù)值;函數(shù)注冊函數(shù)需要構(gòu)造一個用于存放函數(shù)信息的存儲空間,可以是一個文件、一個數(shù)據(jù)結(jié)構(gòu)或一個表,存放的函數(shù)信息包括函數(shù)名、函數(shù)返回值、函數(shù)參數(shù)列表;函數(shù)處理函數(shù)需要實(shí)現(xiàn)從函數(shù)列表中查找被調(diào)函數(shù)的功能,查到函數(shù)信息后,能夠建立兩個進(jìn)程,一個進(jìn)程用于執(zhí)行被調(diào)函數(shù),一個進(jìn)程用于執(zhí)行計(jì)時器對被調(diào)函數(shù)運(yùn)行的時間進(jìn)行計(jì)時; (6)可以在控制器、事件處理、數(shù)據(jù)處理、功能函數(shù)同一級目錄下,建立資源和頭文件目錄,用于存放圖片、音視頻資源和函數(shù)的頭文件信息。
【文檔編號】G06F9/44GK104182235SQ201410424481
【公開日】2014年12月3日 申請日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
【發(fā)明者】康一梅, 姚赟政 申請人:北京航空航天大學(xué)