李春慧,曹 欣
(卡斯柯信號有限公司,北京 100070)
新型列控系統空天地一體化列控系統(C4D-I)吸收優化既有信號邏輯,采用衛星定位、多模通信、運能動態配置等技術,達到軌旁設備最少化、通信多模化、車載中心化、運能適配化和維護智能化,對于西部和地域遼闊的邊遠地區的國防安全有著重大意義。C4D-I 系統去除軌道電路,盡量減少軌旁設備,可以有效降低建設和運維成本。同時可以極大減少信號設備現場調試時間和測試時間。
RMU(Resource Manage Unit)作為C4D-I列控系統的地面核心設備,它高度集成既有CTCS-3級系統地面RBC,TSRS,TCC 和聯鎖設備部分功能,從而降低系統接口復雜度,減少軌旁設備。作為新型列控系統,RMU 沒有成熟的技術規范和參考文件。在產品項目初始階段,產品需求不夠清晰,模式化方法進行需求分析和用例設計非常必要。
本文提出了利用SCADE 進行需求分析,測試模型建立,來指導用例的設計。
SCADE(Safety-Critical Application Development Enviroment)作為一個高安全軟件開發環境,它針對嵌入式軟件的特點,運用了正確構建的概念,提出了一種基于模型的圖形化開發方式,覆蓋了從需求分析到代碼實現的整個軟件開發流程。SCADE 提出反應式系統、確定性、同步假設、并發性4 個概念,為基于模型的設計開發提供了理論基礎。
如圖1 所示,RMU 基于2 乘2 取2 架構的安全平臺,主要完成列車位置管理、列車狀態功能管理、運能調整功能、資源管理和分配、運營計劃管理、差分和地圖管理等功能。完成與車載(OBS)、對象控制系統(OC)、動態運能決策系統(DCD)、地基增強系統(TAAN)、列控維護支持系統(IOM)的通信和信息交互功能。RMU 系統有著如下特性。
1)工作方式是“輸入-計算-輸出”的連續循環過程,如圖2 所示。給被測系統激勵信號,同時獲得相應響應,且兼具實時性和周期性。這樣對于RMU 系統單一功能點可以簡化為“輸入-計算-輸出”的基本模型。
2)對于RMU 系統,使用相同的一組輸入序列,在相同的時間調度下,其反應情況相同,始終產生相同的一組輸出。確定性的要求降低了系統設計的復雜度,簡化了系統建模和仿真驗證。SCADE開發環境提供的各種機制確保了系統的確定性。

圖1 RMU測試架構圖Fig.1 RMU test architecture diagram

圖2 工作方式示意圖Fig.2 Schematic diagram of working mode
需求分析是測試初期非常重要的一份工作,測試成功與否的關鍵因素之一就是對需求的把握程度。需求分析是產品研發設計與測試驗證之間重要的橋梁,是控制軟件質量的首要階段。
根據嵌入式軟件的特點,可以把需求劃分為接口和功能模塊兩部分,功能模塊部分由連續控制部分與狀態邏輯部分組成,其輸入輸出端分別為傳感器和執行器。嵌入式軟件的一般結構如圖3 所示。

圖3 RMU簡化版模型Fig.3 Simplified RMU model
針對這種劃分,SCADE 提供了兩套圖形化的建模機制:數據流圖和有限狀態機。對應嵌入式軟件結構的劃分,數據流圖模型可以用來表示連續控制部分,主要包括輸入輸出處理、復雜的數學邏輯計算和實現各種算法等功能;有限狀態機模型可以用來表示狀態邏輯部分,主要包括各種狀態的遷移和工作模式的變化等功能。
RMU 系統采用的是基于V 模型的自頂向下的設計方式。自頂向下的設計方式是一種從抽象到具體的過程。它首先需要根據用戶需求和系統的接口需求,建立系統的黑盒模型,并且根據系統的功能需求,對系統進行功能模塊劃分;然后將各個功能模塊分配至具體的子系統或者子模塊,并層層細化,直至最低層的可實現的模塊單元。
SCADE Architect 是基于SysML 的建模工具,采用圖形化方式對需求進行分析整理,減少自然語言的歧義,可以發現需求中的不一致和不完整錯誤。
1)在SCADE Architect 創建項目直接建立模型,重點強調不同功能模塊劃分及其之間的接口。
2)模型建立完成后,SCADE checker 提供check 功能,可以對模型進行初步檢查,檢查是否有未定義的輸入輸出,檢查模型的完整性,是否有無用的數據流等內容。
3)對于上述模型進行評審和確認后,測試人員就可以基于該模型進行用例的設計和編寫。
測試用例是軟件測試的核心內容。由于測試不可能窮盡,測試用例設計的核心是利用合理的測試技術來精簡測試用例集,用盡可能少的用例覆蓋全被測需求,來平衡質量和成本的矛盾。目前有多種用例設計技術,因果圖、判定表、正交組合、等價類和邊界值等方法。選定合適的用例設計技術有利于后續用例的自動化生成。本文僅提及用例設計所采用的測試技術。關于自動化生成測試用例不在本文范圍內。20 世紀90 年代曾提出依據因果圖得出關系或者約束的邏輯表達式來自動生成測試用例,但是對于因果關系不清晰或者約束條件太多時,這種用例設計方法效率太低。
本文基于SCADE architect 對需求分析建模的成果加以復用如圖4 所示,采用多條件組合的方式設計用例。
1)參數建模,根據SCADE architect 對于需求的建模,將輸入、輸出參數抽象化。明確輸入的參數個數、每個參數的取值,然后組合等價類、邊界值等方法精簡輸入參數取值集。
2)基于具體的業務規則描述,梳理業務邏輯,明確不同輸入取值情況對應的輸出取值,以及各個輸入條件之間的約束條件。
3)將不同輸入的取值及相應的輸出形成二位矩陣,列為規則,行為結果。
對于某一單一功能有3 個輸入(In 1、In 2 和In 3),兩個輸出(Out1,Out2),對于輸入項取值為0 意味著該條件不滿足,取值為1 意味著該條件滿足;對于輸出項需根據具體業務流程識別。具體形式如表1 所示。
表1 就是針對某一單一功能的用例集。在轉化為用例時可以依據用例集本身的復雜程度進行用例的拆分,避免單個用例步驟過于復雜。
這種用例設計方法可以很好的避免用例導致的需求覆蓋不全或者錯誤覆蓋問題,同時為自動化設計導出用例提供了很好的前期工作。
基于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
數據流圖描述輸入數據流到輸出數據流的變化過程,用于對RMU 系統的功能進行分層建模,如圖5、6 所示,其中圖5 功能模塊不全,僅列出部分模塊為例。
針對資源管理模塊中的資源申請功能點,進行建模,如圖7 所示。
利用第3 章提到的方法將每個分支建立輸入輸出矩陣,針對資源申請分支,將輸入輸出建立如下數學模型。
輸入1(In1):消息主體
In11:車 0
Int12:DCD 1
輸入2(In2):道岔位置
In21:在規定位置 0
In22:不在規定位置 1
In23:擠岔 2
輸入3(In3):區段狀態
In31:區段占用 0
In32:區段出清 1
輸入4(In4):封鎖狀態
In41:有LOI 封鎖,無區段封鎖 0

圖5 第一層數據流圖—RMU系統Fig.5 Layer 1 data flow - RMU system

圖6 第二層數據流圖—資源管理模塊Fig.6 Layer 2 data flow - resource management module
In42:有LOI 封鎖,有區段封鎖 1
In42:無LOI 封鎖,無區段封鎖 2
In42:無LOI 封鎖,無區段封鎖 3
輸出1(Out1):OC 驅動道岔
Out11:驅動道岔 0
Out12:不驅動道岔 1
輸出2(Out2):設置資源申請狀態
Out21: 申請中→申請成功 0
Out22: 申請中→申請失敗 1
以消息主體為車時,也即In1=0 時為例,生成如下輸入輸出矩陣,如表2 所示,此處可能會因為具體的業務規則刪掉一些無效的規則項,此表的每一列均為一個用例。利用這種符號化、模型化的用例集可以為后續自動化用例設計提供基礎。
SCADE Architect 提供了一種結構化方法對需求進行分析建模,可以減少傳統手工需求分析方法中的個人隨意性,提高需求分析的準確性和完整性,從而大大節省了測試人員分析需求和理解需求的時間成本,保證了測試輸入的高度一致性。可以避免測試工程師在設計用例時減少個人理解導致出錯的可能。同時本文采用組合條件設計用例,把測試輸入輸出轉化為字符表達式處理,易于操作,方便對于需求完整性追蹤性的驗證。同時為進一步自動生成用例提供前期準備,后續工作是根據建好的用例模型自動生成用例。

圖7 單一功能數據流圖—資源申請Fig.7 Single function data flow - resource application

表2 輸入輸出矩陣Tab.2 Input/output matrix