王傳俊
(煙臺汽車工程職業學院 機電工程系, 煙臺 265500)
當前,各種軟硬件系統越來越龐大和先進,但是系統的異常還是時不時地在發生。雖然計算硬件和軟件的快速發展已經極大提高了應用程序的可靠性,但是在大型集群中仍然存在大量的軟件錯誤和硬件故障。很多外在、內在的因素導致了異常的出現,如流量的突漲、系統一個組件的失效、一次運維誤操作、一個代碼上線的引發的未知漏洞等等。時序特性的使用就是可能會給系統造成一定的破壞,特別是對實際應用領域要求較高[1]。
國外研究中,傳統的時序測試需要控制軟件才能進行檢測,其核心是用例測試,一般是在規定的場景下運行,利用目標軟件建立環境數據預置、激勵設置,根據預期設計進行運作,之后觀察采集的結果,檢查是否與要求相符合。隨著人們對嵌入式軟件的復雜程度和規模進行完善,傳統的時序測試方法也開始面臨各種問題[2]。
接口自動機(IA)就是一種構建輕量級的接口模型。AI模型可以實現利用狀態機接口行為描述構件的交互和通信內容,從而記錄其外部系統的行為,也能隱藏內的構件結構,它是將嵌入式軟件進行組合建模工具。
擴展語義的接口自動機(ESIA)是讓IA變量執行約束而完成擴展,同時支持反應式的軟件嵌入式特性行為建模。ESIA模型需要引入輸入、計算內部變量、輸出相關行為、約束參數條件、后置/前置條件,并描述軟件運行中的數據。
在ESIA模型上進行設計,是建立在符合上實現測試,從而生成算法,在檢測有效的數據序列或是事件,從而生成例子的測試或是場景的測試[3]。
本次研究是國內有學者提出,建立完整和精確的建模是更好的描述目標系統的時序特性,同時也是檢測時序缺陷的基礎。近幾年提出很多關于描述時序特性的模型,比如:描述時序邏輯、時間自動機、建模統一語言、時間Petri網和馬爾科夫鏈等這些都是具有精確嵌入式時序特性的。
嵌入式軟件時序特性檢測方法是在交付運轉目標執行系統運行中運轉,它可以不間斷的收集執行任務的片段,積累更多程序運行場景,對各種目標軟件的異常和正常進行進行充分檢測,主要內容包括:時間約束、時序特性和建模分析、時序特性檢測方法和算法[4]。
本文將會根據門禁控制系統,分析嵌入式系統的時序特性。門禁控制軟件屬于比較典型的嵌入式系統,在特定條件觸發事件,可以根據特定時序來打開或是關閉門禁。門禁控制軟件是在接收到相關人員的接近或是離開指令,根據時序來設置打開的或是關閉的門禁,并將其當前的狀態上報給控制中心。其中:(1) 在系統軟件初始化完成后,會進入1等待狀態;(2) 在發現人員離開之后,會進到狀態4,這時自動門關閉,進入等待狀態1;(3) 如果發現抵近人員后,會進到狀態2,準備自動打開門;(4) 在門打開后,會進入到打開狀態3;(5) 如果門禁系統狀態是0表示電是初始狀態;(6) 在處于狀態3時,門禁軟件會給監控中心上傳狀態信息,同時進入報告狀態5,指導檢查人員退出上報過程[5]。
門禁控制軟件中建立了一列的時間約束條件:
DC-TR1:門禁控制系統通電后5s進行初始化;
DC-TR2:檢查人員到達后,自動門會在區間[3 s,7 s]范圍內打開;
DC-TR3:發現人員離開之后,在區間[3 s,5 s]門自動關閉;
DC-TR4:人員到達后,在時間區間[3 s,5 s]內檢查人員是否離開;
DC-TR5:在打開自動門后,其會在30 s內關閉,打開時間不超過30 s;
DC-TR6:在自動處于狀態3時,門禁軟件會15 s給自動監控中心上報一下門打開的狀態。
在嵌入式系統中,使用時間約束為了實現在時間限制內完成任務,比如:任務的結束、開始和持續的時間等。在滿足條件下就可以執行任務,該程序設計就是具有預期時序特性。Dasarathy曾經將時間約束分成最大值和最小值約束,還有持續約束。其中最大值與最小值是描述事件之間間隔的最大和最下時間,而持續頁數就是一件事從發生到結束的時間段[6]。
關于ESIA模型中置零行為、時間變量、時間約束等程序擴展情況如下:

一般情況下,嵌入式系統具有處理異常的機制,就是處于各種異常的時序。在SEIA模型設計中,需要標記異常時序狀態,同時需要區別正常的狀態,假設ESIA模型中有一個P,其異常狀態的表示是v.Etag,v∈VP,zaiEtag的值是1時,說明v是異常的狀態;如果值是0時,說明是正常的狀態。另外,行為action出現異常情況時會執行actionE這個分支,在actionE設置下,軟件會遷移到異常的時序狀態下,完成處理異常任務。在ESIA模型中,action和action_E有一樣的觸發事件,但是應對命令遷移的目標狀態是不一樣的。action_E后置條件和前置條件是約束action前置和后置條件的變量,還有約束取反(符號:),action的行為前后置條件是Cstr(τ2)、Cstr(τ1),而Cstr(τ1)、Cstr(τ2)表示異常時序actionE前后置分支條件[7]。
對于建立在時間約束上的門禁軟件控制ESIA模型,說先定義幾個不同時器的時間變量τ1、τ2和τ0,計時需要從零開始,將時間約束當做點結束,將每個時間變量作為記錄規定條件下的遷移序列時間。在檢查到人員到達后,需要將τ0、τ1值歸零;τ1,并將門禁遷移的時間序列情況詳細記錄下,從State2→State3執行的任務需要的時間,這時τ2會將執行State2→State3→State4消耗的時間進行記錄;如果發現人員離開后,需要將τ1歸零,同時記錄序列State4→State1遷移的時間進行記錄[8]。門禁時間約束軟件控制定義如下。
DC-TR1:系統上電之后歸零τ0,相關定義是P_Cstr(τ0)=5 s(τ0=5 s)作為initialization的行為后置條件。
DC-TR2:在檢查到人員到達后置τ1時間狀態2時,定義D_Cstr(τ1)=[3 s,7 s]作為open行為的后置條件。
DC-TR3:在人員立候之后置零τ1處于狀態4,這時定義D_Cstr(τ1)=[3 s,7 s]作為close的行為后置條件;
DC-TR4:在檢查人員達到事件后τ2處于狀態2,定義是D_Cstr(τ2)=[3 s,30 s]作為leave?的后置條件。
DC-TR5:在打開自動門后τ2處于狀態3,定義是是D_Cstr(τ0)=[3 s,30 s]行為是close后置的條件。
DC-TR6:在打開自動處于τ0狀態3是,定義是C_Cstr(τ0)=15(Mod(τ0,15)=0)行為是report!前置的條件。
檢測時序缺陷時,需要根據軟件ESIA模型對執行路徑相關的約束時間進行分析,首先提取的有時間信息片段的自動檢測,需要對軟件系統異常情況進行檢查,之后需要檢查軟件的異常處理功能設計是否。這里將執行時間信息的片段設置為一個執行序列,主要是描述任務的執行序列。
定義2:包括執行時間信息片段。將Trace作為包含時間的執行信息片段作為一個執行序列:
(1) Trace={λj|j=1,2,…,n},λj是執行的第j行的程序;
(2) ?λj是六元組,λj=(e,τi1=v,reset(τj2),a,τj2=v,reset(τj4));其中λj.e表示執行事件的觸發行為,λj.a表示對應行為;τj1、τj2、τj3、τj4∈X是時間變量的4個項,τj1是從λj.a開始進行計時,計時的時間v;τj2是執行λj.a行為之后進行計時,時間是v;τj3是完成置零同時啟動行為后λj.a進行計時;τj4是在結束λj.a行為置零并進行計時。
在利用TBTDD方法時,需要規范和完整執行片段,這樣方便執行之后的檢測和解析程序。在執行提取片段的過程中,如果不存λj某項信息,表示有元素空缺。如果在完成包含時間信息的片段,不需要描述和它相關的執行任務時間、時間關聯變量、置零行為。利用TBTDD方法不僅可以檢測正常的時序,同時可以對異常軟件進行檢測和處理,這樣可以避免出現非預期性的事件和結果。正常的時序片段:在執行一個片段時包括執行相應的分支和正常的時序;異常時序的片段是處于異常和對應的分支。
本文設計的ATES原型平臺系統,是利用TBTDD序檢測方法,來支持離線自動的檢測,以及嵌入式時序特性軟件的建模,從而實現檢測和管理各類故障。
ATES平臺具有一下幾種功能:
(1) 建立在可接受性的準則完成片段匹配性;
(2) 根據實施片段集完成計劃檢測,同時報告并管理時序故障;
(3) 建立在ESIA模型中的嵌入式軟件時序特性程序建模;
(4) 檢測軟件運行中出現的片段異常,并驗證異常時序,標識并檢測到軟件時序存在的缺陷;
(5) 根據執行的片段建立片段集制定的檢測制度,報告并處理時序故障。
在實驗中,通過ATES平臺提供的資源,同時有人工編寫的檢測軟件代碼ESIA模型,描述該時序的定向特性;在ATES平臺上,根據模型ESIA,使用內奸的TBTDD方法,對提取的執行片段進行時序檢測。在實際測試中,需要在ATES平臺上,有測試人員建立靈活的計劃,從而調用平臺上的功能,實現動態的檢測。