吳耀東
(上海富欣智能交通控制有限公司,上海 201203)
地鐵CBTC信號系統是基于計算機和通信技術的列車運行控制系統,CBTC系統的主要設備包括車載控制器、軌旁區域控制器、聯鎖控制器等,都是基于微處理器的計算機設備,CBTC系統的主要功能都由這些計算機設備來承擔,通過編制相應的專用軟件來實現。所以,本質上講CBTC系統是一個復雜的軟件系統。
需求分析是軟件系統開發中的一個關鍵環節,伴隨著軟件系統規模和復雜性的不斷增長,傳統的手工作坊式方法已經很難勝任。結構化分析方法能夠很好的適應復雜軟件系統的開發,按照“自頂向下逐層分解”的方式,可以有效應對大型復雜系統的分析。
結構化分析方法于20世紀70年代中期由E.Yourdon,Constaintine及DeMarco等人提出并得到廣泛的應用,是一種面向數據流的分析方法。結構化分析方法利用圖形表達用戶需求,采用數據流圖、數據字典、結構化語言等方式實現需求的清晰描述。
數據流圖描述輸入數據流到輸出數據流的變換(即加工)過程,用于對系統的功能建模。數據流圖的基本元素包括:
1)→數據流:由一組固定成分的數據組成,代表數據的流動方向;
2)□源或宿:由一組固定成分的數據組成,代表數據的流動方向;
3)=文件:使用文件、數據庫等保存某些數據結果供以后使用;
4)○加工:描述了輸入數據流到輸出數據流的變換,即將輸入數據流加工成輸出數據流。
例如:CBTC的ATP 系統的第一層、第二層、第三層數據流如圖1、2、3、4所示。
數據流圖的分層繪制方式如下。
1)如圖1所示的第一層數據流圖也稱為頂層圖,頂層圖中只有代表整個軟件系統的1個加工(即ATP系統),描述軟件系統與外界(源或宿)之間的數據流,該加工不必編號。
2)如圖2所示的第二層數據流圖也稱為0層圖,0層圖只有1張。0層圖中的加工必須編號,這里采用F1到F4的編號,即ATP系統可分解為F1到F4共4個加工。
3)如圖3、4所示的第三層數據流圖是對于0層圖中加工的進一步分解,圖中的加工必須編號,并且編號需要和其父圖相對應,這里采用Fx.1、Fx.2并依次類推的形式。例如“F1列車測速定位”可以分解為“F1.1列車運動計算”到“F1.5確定位置不確定性”這5個加工。
4)第三層數據流圖處于最底層,最底層的圖也稱為底層圖,其中所有的加工不再分解成新的子圖。
對于數據流的繪制有如下注意事項。
每個數據流擁有一個定義明確的名字標識,例如圖1中的“進路狀態”、“信號機狀態”;
數據流可以在源和宿、加工以及文件之間流動。
對于文件的繪制有如下注意事項。

圖1 第一層數據流圖-ATP系統Fig.1 Layer 1 data flow diagram - ATP system

圖2 第二層數據流圖-ATP系統Fig.2 Layer 2 data flow diagram-ATP system

圖3 第三層數據流圖-F1列車測速定位Fig.3 Layer 3 data flow diagram-F1 train speed and position measurement

圖4 第三層數據流圖-F2確定移動授權Fig.4 Layer 3 data flow diagram-F2 MA confirmation
每個文件用一個定義明確的名字標識,如圖2中的“線路拓撲靜態數據”和圖3中的“缺省車輪直徑”都是文件的名字。
文件由加工進行讀寫。
對于源或宿的繪制有如下注意事項。
當數據流從該符號流出時表示是源,如圖1中的CBI和“運動傳感器”是源。
當數據流流向該符號時表示是宿,如圖1中的“司機顯示器”和ATO是宿。
當兩者皆有時表示既是源又是宿。
數據字典對數據流圖中的數據流(或文件)進行描述,通過在數據字典中建立一組嚴密一致的數據定義,可以幫助軟件分析人員和用戶之間交流,同時也有助于軟件人員之間的交流,容易達成對數據的統一認識。當所有軟件人員都根據公共的數據字典對數據進行描述和對模塊進行設計,可以避免很多接口問題的麻煩。
在數據字典中主要包含下列信息。
1)名稱:描述數據流的名稱,每個數據流的名稱必須各不相同。
2)來源:描述數據流的來源,可以是源或宿,也可以是文件或加工。
3)去向:描述數據流的去向,可以是源或宿,也可以是文件或加工。
4)數據流組成:描述該數據流的組成。一個數據流可能由多個數據項組成,如圖1中數據流“ATP到司機顯示器的數據”是由“列車速度”和“目標速度”等多個數據項組成的。
5)數據類型:描述數據流中每個數據項的數據類型和取值范圍。
例如:對圖1“第一層數據流圖-ATP系統”中的數據流建立數據字典,如表1所示。

表1 “第一層數據流圖-ATP系統”的數據字典Tab.1 Data dictionary of “layer 1 data flow diagram - ATP system”
對于數據流圖中的文件,可以看做一種特殊的數據流,對其建立對應的數據字典。
例如:對圖2中的文件“線路拓撲靜態數據”建立數據字典,如表2所示。

表2 文件“線路拓撲靜態數據”的數據字典Tab.2 Data dictionary of document “line topology static data”
加工說明是對數據流圖中的每個加工所做的說明。加工說明由輸入數據、加工邏輯和輸出數據組成。輸入數據是該加工要處理的源數據,加工邏輯主要描述把輸入數據變成輸出數據的策略和方法,輸出數據是加工后的目的數據。
加工說明通常采用結構化語言,結構化語言是一種介于形式語言和自然語言之間的一種半形式的語言,是自然語言的一個受限制的子集。結構化語言和高級語言不完全一樣,它結構通常分為內、外兩層,沒有嚴格的語法。外層語法比較具體描述操作的控制結構,采用順序、選擇和循環等控制結構將加工中的各個操作連接起來,并且還可以相互嵌套。內層語法比較靈活描述了具體的操作,主要明確地表達出要“做什么”,而不寫出具體做的方法。
例如,對于圖3中“F1.1列車運動計算”的加工說明如下所示。
1)輸入數據
速度信號、加速度信號、缺省的車輪直徑、校準的車輪直徑。
2)輸出數據
基于速度計的速度,基于速度計的加速度,基于速度計的距離,基于加速度計的加速度,車輪旋轉方向。
3)加工邏輯
IF輪徑已經校準 THEN
基于速度計的速度=(pi×校準的車輪直徑)/(本周期速度計脈沖計數/速度計的脈沖頻率)
基于速度計的速度=基于速度計的速度(本周期)-基于速度計的速度(上周期)
基于速度計的距離=(pi×校準的車輪直徑)×本周期速度計脈沖計數/每周期的速度計脈沖計數
ELSE
基于速度計的速度=(pi×缺省的車輪直徑)/(本周期速度計脈沖計數/速度計的脈沖頻率)
基于速度計的速度=基于速度計的速度(本周期)-基于速度計的速度(上周期)
基于速度計的距離=(pi×缺省的車輪直徑)×本周期速度計脈沖計數/每周期的速度計脈沖計數
END IF
IF速度計通道1相對通道2的相位差為超前THEN
車輪旋轉方向=正向
ELSE
車輪旋轉方向=反向
END IF
基于加速度計的加速度=加速度計信號×g/加速度計的滿量程轉換值
結構化分析方法是一種基于數據流圖的需求分析方法,具備一整套嚴格和完整的需求分析過程和方法。采用結構化分析方法,可以有效避免傳統的手工作坊式需求分析方法中的個人隨意性,提高需求分析的清晰性、準確性和完整性。在CBTC信號系統的開發中應用結構化分析方法,可以有效提高整個CBTC系統開發效率并降低開發成本。