馮 晨 王曉懿(北京全路通信信號研究設計院有限公司,北京 100073)

馮晨,男,畢業于北京航空航天大學,助理工程師。主要研究方向:軟件開發,參與信號系統設計開發平臺項目、籌建國家工程實驗室和工程研究中心項目。曾發表《基于PCI總線的振動控制系統WDM驅動程序開發》論文。
目前,國內鐵路通信信號行業對于信號系統的開發大多采用傳統的“作坊模式”,這種模式非常不利于鐵路事業大發展的現狀,主要表現在開發人員技術溝通不暢、開發流程和產品標準不統一,產品成果很難復用等方面,因此本文首先對信號系統設計開發平臺(簡稱SDP平臺)進行介紹。
同時,SDP平臺作為一個生產信號系統軟件的集成環境,必須具備高度的可靠性和可擴展性,從而一方面滿足信號產品高安全性的要求,另一方面能夠根據各種技術標準對平臺進行定制,因此本文重點研究了信號系統設計開發平臺的基礎架構及實現方案。
信號系統設計開發平臺是覆蓋信號系統軟件全生命周期的集成開發環境。以一個安全相關的信號系統項目為例,從系統定義、項目策劃、風險分析、系統設計與實現直到最后的系統確認,SDP平臺對其是全面支撐的。
SDP平臺的總體結構如圖1所示,由圖1中可以看出,SDP平臺在設計思路上是按照典型的3層框架結構進行構建的,包括如下內容。
1)表現層:位于系統的最外層(最上層),離用戶最近。用于顯示數據和接收用戶輸入的數據,只提供軟件系統與用戶交互的界面;
2)業務邏輯層:位于表示層和數據訪問層之間,專門負責處理用戶輸入的信息,或者是將這些信息發送給數據訪問層進行保存,或者是通過數據訪問層從數據庫讀出這些數據,是表示層和數據訪問層之間的橋梁,負責數據處理和傳遞。
3)數據訪問層:僅實現對數據的保存和讀取操作。數據訪問包括訪問數據庫系統、二進制文件、文本文檔或是XML文檔。
3層結構的優點在于開發人員可以只關注整個結構中的某一層,可以很容易的用新的實現來替換原有層次的實現,可以降低層與層之間的依賴,有利于標準化,利于各層邏輯的復用,擴展性強、安全性高,項目結構更清楚。
同時,由圖1中還可以了解到,整個平臺的設計思路又具備非常典型的模塊化特征,即每個相對獨立的功能點或功能集合自然形成一個子系統,例如組件設計子系統、專項測試子系統等。每個子系統有非常明確的入口和出口,這樣的設計思路使得整個平臺具有良好的可讀性,軟件開發者只需關心自己所從事的子系統。
所以SDP平臺的總體結構無論從橫向還是從縱向都滿足模塊化的設計思路,保證了整個軟件架構的優良特性。

SDP平臺的底層架構是基于EM F模型驅動開發的一個典型實現, EMF將模型和應用實現分割開來,同時提供了基礎代碼自動生成的功能,大大減輕了程序員的重復操作,避免了潛在的人為錯誤,此外,EM F提供了模型和代碼的同步功能,從而保證了兩者的一致性。
EMF的全稱是Eclipse Modeling Framew ork,從其名稱可以看出,EM F是一個基于Eclipse的建模框架。
Eclipse是一個高度開放的開發平臺,模塊化的設計理念具備極強的集成能力,用戶可以將自己開發的插件集成到Ec lip se平臺中,從而得到自己的“Eclipse平臺”,在本文中這個定制完成的“Eclipse平臺”就是“SDP平臺”。
EM F就是在Eclipse平臺的基礎上通過快速構建模型的方式為軟件設計師開發穩定的應用程序提供了強大的支撐,大大加快了開發進程,同時提升了軟件的質量。
又是一年年底,2018年12月26日,濟青高鐵通車,同時濟南新東站正式啟用。2019年1月1日,濟南軌道交通1號線開通。山東的交通網絡再次邁上新臺階。
通過前面的介紹了解到,SDP平臺能夠完全的表示一個軟件系統,并且支撐開發軟件系統全生命周期的活動,所以SDP平臺的基礎架構模型需要從業務相關性劃分為兩大類:一類為通用資源類ISDPResou rce,例如應用SDP平臺開發的信號系統軟件工程下普通的文件或文件夾;另一類為業務相關元素類ISDPElement,例如SDP平臺開發的某個安全相關的軟件工程下的項目策劃文件等,從實際需求來看,也要求SDP平臺能夠識別這些特殊類型的文件;最后,考慮到SDP組件模型升級的必然性,所以在最初的設計上要滿足升級要求。
2.2.1 SDP通用組件資源
SDP通用資源的接口邏輯關系如圖2所示。

每個接口的含義如表1所示。

表1 SDP通用資源接口列表
2.2.2 SDP通用組件元素
SDP通用元素的接口邏輯關系如圖3所示。
由圖3可知,所有的業務接口均繼承于ISDPParentElem ent這一接口,并間接繼承于ISDPElem ent抽象接口,典型接口如表2所示。


表2 SDP業務元素典型接口列表
2.2.3 SDP組件模型設計機制
SDP組件升級機制的設計目的是實現SDP組件模型的向前兼容,即新的SDP平臺可以兼容打開和編輯舊的SDP組件工程。
2.3.1 EMF代碼輔助生成實現流程
EM F平臺架構設計的主要工作是構建平臺的數據模型,模型可以通過UM L類圖、Jav a接口、XM L Schem a等多種方式定義。本文采用的是java接口的定義方式,該方式的突出特點是快速靈活,修改起來也非常方便。
EM F通過Java接口標注的方式輔助生成常用代碼的步驟非常清晰,如圖4所示。

開發者首先對抽象數據模型進行接口設計,并根據不同的用途對接口及內部方法加以不同的標注,均以@m odel開頭,EM F為接口中所有類型的成員均預定義了特定標簽,例如“A ttr ib u te”對象、“Referen ce”對象、“Opera tion”對象、“Param eter”對象等,開發者只需要對照指導手冊即可快速填寫。表3就是EM F為接口中的“Op era tion”對象預定義的部分標簽及可選的對應值。
2.3.2 SDP資源及業務元素的基礎實現
在上一節中定義的各個接口,每個接口中均包含各自的接口函數和變量,這些函數和變量大部分是作為接口的屬性。如果按照普通的實現方式,用戶需要挨個實現這些函數和變量,而在EM F的幫助下,用戶只需要添加一個get函數,并在這個函數前面添加“@model containm en t="true"”,EMF后臺會為該函數自動生成變量和set函數及函數體。

表3 標簽列表
2.3.3 SDP資源及業務元素的IO實現
在完成SDP資源及業務元素的基礎實現后,接下來要考慮的就是加載和保存工作。例如,在SDP平臺環境下創建的SDP工程如何保存到本地文件系統中,或者如何將文件系統中已有的SDP工程導入到SDP平臺環境中,以便繼續實際開發工作。這些通用的功能在常用軟件開發中都會遇到,所以EM F為開發者提供了輔助工具,本文給出的實現代碼大部分就是基于EM F機制自動生成的,提供了封裝的load和save函數,其中load方法代碼如下。


實際應用中設計開發人員直接調用該函數即可實現組件模型的加載工作。
2.3.4 SDP組件模型升級機制的實現
為了滿足升級后的平臺對已有舊版本SDP工程的兼容性,需要在創建SDP工程時自動記錄該工程對應的平臺版本,經過論證發現將SDP工程的版本信息(如cn.com.crscd.sdp.com ponen t.v1)記錄在根目錄下的.p roject文件中的comm en t標簽下是非常合理的,且讀取十分方便。如下所示為按此方法創建的標準SDP工程的.project文件格式。

根據上述思路創建的SDP工程被再次導入到SDP平臺時,平臺首先解析.p ro ject文件從而讀取到該工程的版本信息,讀取的主體一個是SDP客戶端,一個是組件庫服務器,SDP客戶端是基于eclipse框架的,可以直接解析.p roject文件,開發人員只需調用相應的接口函數即可獲取comm en t標簽下的具體版本信息;SDP組件庫服務器端讀取.p ro ject文件則是專門開發了一個.p ro ject解析類,負責讀取這個特殊的xm l文件。
基于EM F的信號系統設計開發平臺基礎架構設計大大減輕了開發者的重復勞動,同時避免了人為失誤,可謂是一舉多得。這也是IBM等大多數相關企業軟件架構設計師強烈推薦并積極應用EM F進行結構設計的根本原因。特別是對于注重安全性的信號系統平臺顯得尤為必要。
[1] Dave Steinberg, Frank Buclinsky, Marcelo Paternostro, Ed. Merks. EMF Eclipse Modeling Framework[M] .2th ed.. America:Addsion-Wesley Professional, 2008.
[2] Eric Clayberg, Dan Rubel. Eclipse plug-ins[M].3th ed.. America : Addsion-Wesley Professional, 2008.