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