李春慧,曹 欣
(卡斯柯信號(hào)有限公司,北京 100070)
新型列控系統(tǒng)空天地一體化列控系統(tǒng)(C4D-I)吸收優(yōu)化既有信號(hào)邏輯,采用衛(wèi)星定位、多模通信、運(yùn)能動(dòng)態(tài)配置等技術(shù),達(dá)到軌旁設(shè)備最少化、通信多?;?、車載中心化、運(yùn)能適配化和維護(hù)智能化,對(duì)于西部和地域遼闊的邊遠(yuǎn)地區(qū)的國(guó)防安全有著重大意義。C4D-I 系統(tǒng)去除軌道電路,盡量減少軌旁設(shè)備,可以有效降低建設(shè)和運(yùn)維成本。同時(shí)可以極大減少信號(hào)設(shè)備現(xiàn)場(chǎng)調(diào)試時(shí)間和測(cè)試時(shí)間。
RMU(Resource Manage Unit)作為C4D-I列控系統(tǒng)的地面核心設(shè)備,它高度集成既有CTCS-3級(jí)系統(tǒng)地面RBC,TSRS,TCC 和聯(lián)鎖設(shè)備部分功能,從而降低系統(tǒng)接口復(fù)雜度,減少軌旁設(shè)備。作為新型列控系統(tǒng),RMU 沒有成熟的技術(shù)規(guī)范和參考文件。在產(chǎn)品項(xiàng)目初始階段,產(chǎn)品需求不夠清晰,模式化方法進(jìn)行需求分析和用例設(shè)計(jì)非常必要。
本文提出了利用SCADE 進(jìn)行需求分析,測(cè)試模型建立,來指導(dǎo)用例的設(shè)計(jì)。
SCADE(Safety-Critical Application Development Enviroment)作為一個(gè)高安全軟件開發(fā)環(huán)境,它針對(duì)嵌入式軟件的特點(diǎn),運(yùn)用了正確構(gòu)建的概念,提出了一種基于模型的圖形化開發(fā)方式,覆蓋了從需求分析到代碼實(shí)現(xiàn)的整個(gè)軟件開發(fā)流程。SCADE 提出反應(yīng)式系統(tǒng)、確定性、同步假設(shè)、并發(fā)性4 個(gè)概念,為基于模型的設(shè)計(jì)開發(fā)提供了理論基礎(chǔ)。
如圖1 所示,RMU 基于2 乘2 取2 架構(gòu)的安全平臺(tái),主要完成列車位置管理、列車狀態(tài)功能管理、運(yùn)能調(diào)整功能、資源管理和分配、運(yùn)營(yíng)計(jì)劃管理、差分和地圖管理等功能。完成與車載(OBS)、對(duì)象控制系統(tǒng)(OC)、動(dòng)態(tài)運(yùn)能決策系統(tǒng)(DCD)、地基增強(qiáng)系統(tǒng)(TAAN)、列控維護(hù)支持系統(tǒng)(IOM)的通信和信息交互功能。RMU 系統(tǒng)有著如下特性。
1)工作方式是“輸入-計(jì)算-輸出”的連續(xù)循環(huán)過程,如圖2 所示。給被測(cè)系統(tǒng)激勵(lì)信號(hào),同時(shí)獲得相應(yīng)響應(yīng),且兼具實(shí)時(shí)性和周期性。這樣對(duì)于RMU 系統(tǒng)單一功能點(diǎn)可以簡(jiǎn)化為“輸入-計(jì)算-輸出”的基本模型。
2)對(duì)于RMU 系統(tǒng),使用相同的一組輸入序列,在相同的時(shí)間調(diào)度下,其反應(yīng)情況相同,始終產(chǎn)生相同的一組輸出。確定性的要求降低了系統(tǒng)設(shè)計(jì)的復(fù)雜度,簡(jiǎn)化了系統(tǒng)建模和仿真驗(yàn)證。SCADE開發(fā)環(huán)境提供的各種機(jī)制確保了系統(tǒng)的確定性。
圖1 RMU測(cè)試架構(gòu)圖Fig.1 RMU test architecture diagram
圖2 工作方式示意圖Fig.2 Schematic diagram of working mode
需求分析是測(cè)試初期非常重要的一份工作,測(cè)試成功與否的關(guān)鍵因素之一就是對(duì)需求的把握程度。需求分析是產(chǎn)品研發(fā)設(shè)計(jì)與測(cè)試驗(yàn)證之間重要的橋梁,是控制軟件質(zhì)量的首要階段。
根據(jù)嵌入式軟件的特點(diǎn),可以把需求劃分為接口和功能模塊兩部分,功能模塊部分由連續(xù)控制部分與狀態(tài)邏輯部分組成,其輸入輸出端分別為傳感器和執(zhí)行器。嵌入式軟件的一般結(jié)構(gòu)如圖3 所示。
圖3 RMU簡(jiǎn)化版模型Fig.3 Simplified RMU model
針對(duì)這種劃分,SCADE 提供了兩套圖形化的建模機(jī)制:數(shù)據(jù)流圖和有限狀態(tài)機(jī)。對(duì)應(yīng)嵌入式軟件結(jié)構(gòu)的劃分,數(shù)據(jù)流圖模型可以用來表示連續(xù)控制部分,主要包括輸入輸出處理、復(fù)雜的數(shù)學(xué)邏輯計(jì)算和實(shí)現(xiàn)各種算法等功能;有限狀態(tài)機(jī)模型可以用來表示狀態(tài)邏輯部分,主要包括各種狀態(tài)的遷移和工作模式的變化等功能。
RMU 系統(tǒng)采用的是基于V 模型的自頂向下的設(shè)計(jì)方式。自頂向下的設(shè)計(jì)方式是一種從抽象到具體的過程。它首先需要根據(jù)用戶需求和系統(tǒng)的接口需求,建立系統(tǒng)的黑盒模型,并且根據(jù)系統(tǒng)的功能需求,對(duì)系統(tǒng)進(jìn)行功能模塊劃分;然后將各個(gè)功能模塊分配至具體的子系統(tǒng)或者子模塊,并層層細(xì)化,直至最低層的可實(shí)現(xiàn)的模塊單元。
SCADE Architect 是基于SysML 的建模工具,采用圖形化方式對(duì)需求進(jìn)行分析整理,減少自然語言的歧義,可以發(fā)現(xiàn)需求中的不一致和不完整錯(cuò)誤。
1)在SCADE Architect 創(chuàng)建項(xiàng)目直接建立模型,重點(diǎn)強(qiáng)調(diào)不同功能模塊劃分及其之間的接口。
2)模型建立完成后,SCADE checker 提供check 功能,可以對(duì)模型進(jìn)行初步檢查,檢查是否有未定義的輸入輸出,檢查模型的完整性,是否有無用的數(shù)據(jù)流等內(nèi)容。
3)對(duì)于上述模型進(jìn)行評(píng)審和確認(rèn)后,測(cè)試人員就可以基于該模型進(jìn)行用例的設(shè)計(jì)和編寫。
測(cè)試用例是軟件測(cè)試的核心內(nèi)容。由于測(cè)試不可能窮盡,測(cè)試用例設(shè)計(jì)的核心是利用合理的測(cè)試技術(shù)來精簡(jiǎn)測(cè)試用例集,用盡可能少的用例覆蓋全被測(cè)需求,來平衡質(zhì)量和成本的矛盾。目前有多種用例設(shè)計(jì)技術(shù),因果圖、判定表、正交組合、等價(jià)類和邊界值等方法。選定合適的用例設(shè)計(jì)技術(shù)有利于后續(xù)用例的自動(dòng)化生成。本文僅提及用例設(shè)計(jì)所采用的測(cè)試技術(shù)。關(guān)于自動(dòng)化生成測(cè)試用例不在本文范圍內(nèi)。20 世紀(jì)90 年代曾提出依據(jù)因果圖得出關(guān)系或者約束的邏輯表達(dá)式來自動(dòng)生成測(cè)試用例,但是對(duì)于因果關(guān)系不清晰或者約束條件太多時(shí),這種用例設(shè)計(jì)方法效率太低。
本文基于SCADE architect 對(duì)需求分析建模的成果加以復(fù)用如圖4 所示,采用多條件組合的方式設(shè)計(jì)用例。
1)參數(shù)建模,根據(jù)SCADE architect 對(duì)于需求的建模,將輸入、輸出參數(shù)抽象化。明確輸入的參數(shù)個(gè)數(shù)、每個(gè)參數(shù)的取值,然后組合等價(jià)類、邊界值等方法精簡(jiǎn)輸入?yún)?shù)取值集。
2)基于具體的業(yè)務(wù)規(guī)則描述,梳理業(yè)務(wù)邏輯,明確不同輸入取值情況對(duì)應(yīng)的輸出取值,以及各個(gè)輸入條件之間的約束條件。
3)將不同輸入的取值及相應(yīng)的輸出形成二位矩陣,列為規(guī)則,行為結(jié)果。
對(duì)于某一單一功能有3 個(gè)輸入(In 1、In 2 和In 3),兩個(gè)輸出(Out1,Out2),對(duì)于輸入項(xiàng)取值為0 意味著該條件不滿足,取值為1 意味著該條件滿足;對(duì)于輸出項(xiàng)需根據(jù)具體業(yè)務(wù)流程識(shí)別。具體形式如表1 所示。
表1 就是針對(duì)某一單一功能的用例集。在轉(zhuǎn)化為用例時(shí)可以依據(jù)用例集本身的復(fù)雜程度進(jìn)行用例的拆分,避免單個(gè)用例步驟過于復(fù)雜。
這種用例設(shè)計(jì)方法可以很好的避免用例導(dǎo)致的需求覆蓋不全或者錯(cuò)誤覆蓋問題,同時(shí)為自動(dòng)化設(shè)計(jì)導(dǎo)出用例提供了很好的前期工作。
基于SCADE Architect 需求分析和用例設(shè)計(jì),整個(gè)流程參考圖4。
圖4 基于SCADE的需求建模和用例設(shè)計(jì)Fig.4 Requirements modeling and test case design based on SCADE
表1 基于組合條件法的決策表Tab.1 Decision table based on combination condition method
數(shù)據(jù)流圖描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變化過程,用于對(duì)RMU 系統(tǒng)的功能進(jìn)行分層建模,如圖5、6 所示,其中圖5 功能模塊不全,僅列出部分模塊為例。
針對(duì)資源管理模塊中的資源申請(qǐng)功能點(diǎn),進(jìn)行建模,如圖7 所示。
利用第3 章提到的方法將每個(gè)分支建立輸入輸出矩陣,針對(duì)資源申請(qǐng)分支,將輸入輸出建立如下數(shù)學(xué)模型。
輸入1(In1):消息主體
In11:車 0
Int12:DCD 1
輸入2(In2):道岔位置
In21:在規(guī)定位置 0
In22:不在規(guī)定位置 1
In23:擠岔 2
輸入3(In3):區(qū)段狀態(tài)
In31:區(qū)段占用 0
In32:區(qū)段出清 1
輸入4(In4):封鎖狀態(tài)
In41:有LOI 封鎖,無區(qū)段封鎖 0
圖5 第一層數(shù)據(jù)流圖—RMU系統(tǒng)Fig.5 Layer 1 data flow - RMU system
圖6 第二層數(shù)據(jù)流圖—資源管理模塊Fig.6 Layer 2 data flow - resource management module
In42:有LOI 封鎖,有區(qū)段封鎖 1
In42:無LOI 封鎖,無區(qū)段封鎖 2
In42:無LOI 封鎖,無區(qū)段封鎖 3
輸出1(Out1):OC 驅(qū)動(dòng)道岔
Out11:驅(qū)動(dòng)道岔 0
Out12:不驅(qū)動(dòng)道岔 1
輸出2(Out2):設(shè)置資源申請(qǐng)狀態(tài)
Out21: 申請(qǐng)中→申請(qǐng)成功 0
Out22: 申請(qǐng)中→申請(qǐng)失敗 1
以消息主體為車時(shí),也即In1=0 時(shí)為例,生成如下輸入輸出矩陣,如表2 所示,此處可能會(huì)因?yàn)榫唧w的業(yè)務(wù)規(guī)則刪掉一些無效的規(guī)則項(xiàng),此表的每一列均為一個(gè)用例。利用這種符號(hào)化、模型化的用例集可以為后續(xù)自動(dòng)化用例設(shè)計(jì)提供基礎(chǔ)。
SCADE Architect 提供了一種結(jié)構(gòu)化方法對(duì)需求進(jìn)行分析建模,可以減少傳統(tǒng)手工需求分析方法中的個(gè)人隨意性,提高需求分析的準(zhǔn)確性和完整性,從而大大節(jié)省了測(cè)試人員分析需求和理解需求的時(shí)間成本,保證了測(cè)試輸入的高度一致性??梢员苊鉁y(cè)試工程師在設(shè)計(jì)用例時(shí)減少個(gè)人理解導(dǎo)致出錯(cuò)的可能。同時(shí)本文采用組合條件設(shè)計(jì)用例,把測(cè)試輸入輸出轉(zhuǎn)化為字符表達(dá)式處理,易于操作,方便對(duì)于需求完整性追蹤性的驗(yàn)證。同時(shí)為進(jìn)一步自動(dòng)生成用例提供前期準(zhǔn)備,后續(xù)工作是根據(jù)建好的用例模型自動(dòng)生成用例。
圖7 單一功能數(shù)據(jù)流圖—資源申請(qǐng)F(tuán)ig.7 Single function data flow - resource application
表2 輸入輸出矩陣Tab.2 Input/output matrix