吳耀東
(上海富欣智能交通控制有限公司,上海 201203)
地鐵CBTC信號系統(tǒng)是基于計(jì)算機(jī)和通信技術(shù)的列車運(yùn)行控制系統(tǒng),CBTC系統(tǒng)的主要設(shè)備包括車載控制器、軌旁區(qū)域控制器、聯(lián)鎖控制器等,都是基于微處理器的計(jì)算機(jī)設(shè)備,CBTC系統(tǒng)的主要功能都由這些計(jì)算機(jī)設(shè)備來承擔(dān),通過編制相應(yīng)的專用軟件來實(shí)現(xiàn)。所以,本質(zhì)上講CBTC系統(tǒng)是一個(gè)復(fù)雜的軟件系統(tǒng)。
需求分析是軟件系統(tǒng)開發(fā)中的一個(gè)關(guān)鍵環(huán)節(jié),伴隨著軟件系統(tǒng)規(guī)模和復(fù)雜性的不斷增長,傳統(tǒng)的手工作坊式方法已經(jīng)很難勝任。結(jié)構(gòu)化分析方法能夠很好的適應(yīng)復(fù)雜軟件系統(tǒng)的開發(fā),按照“自頂向下逐層分解”的方式,可以有效應(yīng)對大型復(fù)雜系統(tǒng)的分析。
結(jié)構(gòu)化分析方法于20世紀(jì)70年代中期由E.Yourdon,Constaintine及DeMarco等人提出并得到廣泛的應(yīng)用,是一種面向數(shù)據(jù)流的分析方法。結(jié)構(gòu)化分析方法利用圖形表達(dá)用戶需求,采用數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)化語言等方式實(shí)現(xiàn)需求的清晰描述。
數(shù)據(jù)流圖描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換(即加工)過程,用于對系統(tǒng)的功能建模。數(shù)據(jù)流圖的基本元素包括:
1)→數(shù)據(jù)流:由一組固定成分的數(shù)據(jù)組成,代表數(shù)據(jù)的流動(dòng)方向;
2)□源或宿:由一組固定成分的數(shù)據(jù)組成,代表數(shù)據(jù)的流動(dòng)方向;
3)=文件:使用文件、數(shù)據(jù)庫等保存某些數(shù)據(jù)結(jié)果供以后使用;
4)○加工:描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換,即將輸入數(shù)據(jù)流加工成輸出數(shù)據(jù)流。
例如:CBTC的ATP 系統(tǒng)的第一層、第二層、第三層數(shù)據(jù)流如圖1、2、3、4所示。
數(shù)據(jù)流圖的分層繪制方式如下。
1)如圖1所示的第一層數(shù)據(jù)流圖也稱為頂層圖,頂層圖中只有代表整個(gè)軟件系統(tǒng)的1個(gè)加工(即ATP系統(tǒng)),描述軟件系統(tǒng)與外界(源或宿)之間的數(shù)據(jù)流,該加工不必編號。
2)如圖2所示的第二層數(shù)據(jù)流圖也稱為0層圖,0層圖只有1張。0層圖中的加工必須編號,這里采用F1到F4的編號,即ATP系統(tǒng)可分解為F1到F4共4個(gè)加工。
3)如圖3、4所示的第三層數(shù)據(jù)流圖是對于0層圖中加工的進(jìn)一步分解,圖中的加工必須編號,并且編號需要和其父圖相對應(yīng),這里采用Fx.1、Fx.2并依次類推的形式。例如“F1列車測速定位”可以分解為“F1.1列車運(yùn)動(dòng)計(jì)算”到“F1.5確定位置不確定性”這5個(gè)加工。
4)第三層數(shù)據(jù)流圖處于最底層,最底層的圖也稱為底層圖,其中所有的加工不再分解成新的子圖。
對于數(shù)據(jù)流的繪制有如下注意事項(xiàng)。
每個(gè)數(shù)據(jù)流擁有一個(gè)定義明確的名字標(biāo)識,例如圖1中的“進(jìn)路狀態(tài)”、“信號機(jī)狀態(tài)”;
數(shù)據(jù)流可以在源和宿、加工以及文件之間流動(dòng)。
對于文件的繪制有如下注意事項(xiàng)。
圖1 第一層數(shù)據(jù)流圖-ATP系統(tǒng)Fig.1 Layer 1 data flow diagram - ATP system
圖2 第二層數(shù)據(jù)流圖-ATP系統(tǒng)Fig.2 Layer 2 data flow diagram-ATP system
圖3 第三層數(shù)據(jù)流圖-F1列車測速定位Fig.3 Layer 3 data flow diagram-F1 train speed and position measurement
圖4 第三層數(shù)據(jù)流圖-F2確定移動(dòng)授權(quán)Fig.4 Layer 3 data flow diagram-F2 MA confirmation
每個(gè)文件用一個(gè)定義明確的名字標(biāo)識,如圖2中的“線路拓?fù)潇o態(tài)數(shù)據(jù)”和圖3中的“缺省車輪直徑”都是文件的名字。
文件由加工進(jìn)行讀寫。
對于源或宿的繪制有如下注意事項(xiàng)。
當(dāng)數(shù)據(jù)流從該符號流出時(shí)表示是源,如圖1中的CBI和“運(yùn)動(dòng)傳感器”是源。
當(dāng)數(shù)據(jù)流流向該符號時(shí)表示是宿,如圖1中的“司機(jī)顯示器”和ATO是宿。
當(dāng)兩者皆有時(shí)表示既是源又是宿。
數(shù)據(jù)字典對數(shù)據(jù)流圖中的數(shù)據(jù)流(或文件)進(jìn)行描述,通過在數(shù)據(jù)字典中建立一組嚴(yán)密一致的數(shù)據(jù)定義,可以幫助軟件分析人員和用戶之間交流,同時(shí)也有助于軟件人員之間的交流,容易達(dá)成對數(shù)據(jù)的統(tǒng)一認(rèn)識。當(dāng)所有軟件人員都根據(jù)公共的數(shù)據(jù)字典對數(shù)據(jù)進(jìn)行描述和對模塊進(jìn)行設(shè)計(jì),可以避免很多接口問題的麻煩。
在數(shù)據(jù)字典中主要包含下列信息。
1)名稱:描述數(shù)據(jù)流的名稱,每個(gè)數(shù)據(jù)流的名稱必須各不相同。
2)來源:描述數(shù)據(jù)流的來源,可以是源或宿,也可以是文件或加工。
3)去向:描述數(shù)據(jù)流的去向,可以是源或宿,也可以是文件或加工。
4)數(shù)據(jù)流組成:描述該數(shù)據(jù)流的組成。一個(gè)數(shù)據(jù)流可能由多個(gè)數(shù)據(jù)項(xiàng)組成,如圖1中數(shù)據(jù)流“ATP到司機(jī)顯示器的數(shù)據(jù)”是由“列車速度”和“目標(biāo)速度”等多個(gè)數(shù)據(jù)項(xiàng)組成的。
5)數(shù)據(jù)類型:描述數(shù)據(jù)流中每個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)類型和取值范圍。
例如:對圖1“第一層數(shù)據(jù)流圖-ATP系統(tǒng)”中的數(shù)據(jù)流建立數(shù)據(jù)字典,如表1所示。
表1 “第一層數(shù)據(jù)流圖-ATP系統(tǒng)”的數(shù)據(jù)字典Tab.1 Data dictionary of “l(fā)ayer 1 data flow diagram - ATP system”
對于數(shù)據(jù)流圖中的文件,可以看做一種特殊的數(shù)據(jù)流,對其建立對應(yīng)的數(shù)據(jù)字典。
例如:對圖2中的文件“線路拓?fù)潇o態(tài)數(shù)據(jù)”建立數(shù)據(jù)字典,如表2所示。
表2 文件“線路拓?fù)潇o態(tài)數(shù)據(jù)”的數(shù)據(jù)字典Tab.2 Data dictionary of document “l(fā)ine topology static data”
加工說明是對數(shù)據(jù)流圖中的每個(gè)加工所做的說明。加工說明由輸入數(shù)據(jù)、加工邏輯和輸出數(shù)據(jù)組成。輸入數(shù)據(jù)是該加工要處理的源數(shù)據(jù),加工邏輯主要描述把輸入數(shù)據(jù)變成輸出數(shù)據(jù)的策略和方法,輸出數(shù)據(jù)是加工后的目的數(shù)據(jù)。
加工說明通常采用結(jié)構(gòu)化語言,結(jié)構(gòu)化語言是一種介于形式語言和自然語言之間的一種半形式的語言,是自然語言的一個(gè)受限制的子集。結(jié)構(gòu)化語言和高級語言不完全一樣,它結(jié)構(gòu)通常分為內(nèi)、外兩層,沒有嚴(yán)格的語法。外層語法比較具體描述操作的控制結(jié)構(gòu),采用順序、選擇和循環(huán)等控制結(jié)構(gòu)將加工中的各個(gè)操作連接起來,并且還可以相互嵌套。內(nèi)層語法比較靈活描述了具體的操作,主要明確地表達(dá)出要“做什么”,而不寫出具體做的方法。
例如,對于圖3中“F1.1列車運(yùn)動(dòng)計(jì)算”的加工說明如下所示。
1)輸入數(shù)據(jù)
速度信號、加速度信號、缺省的車輪直徑、校準(zhǔn)的車輪直徑。
2)輸出數(shù)據(jù)
基于速度計(jì)的速度,基于速度計(jì)的加速度,基于速度計(jì)的距離,基于加速度計(jì)的加速度,車輪旋轉(zhuǎn)方向。
3)加工邏輯
IF輪徑已經(jīng)校準(zhǔn) THEN
基于速度計(jì)的速度=(pi×校準(zhǔn)的車輪直徑)/(本周期速度計(jì)脈沖計(jì)數(shù)/速度計(jì)的脈沖頻率)
基于速度計(jì)的速度=基于速度計(jì)的速度(本周期)-基于速度計(jì)的速度(上周期)
基于速度計(jì)的距離=(pi×校準(zhǔn)的車輪直徑)×本周期速度計(jì)脈沖計(jì)數(shù)/每周期的速度計(jì)脈沖計(jì)數(shù)
ELSE
基于速度計(jì)的速度=(pi×缺省的車輪直徑)/(本周期速度計(jì)脈沖計(jì)數(shù)/速度計(jì)的脈沖頻率)
基于速度計(jì)的速度=基于速度計(jì)的速度(本周期)-基于速度計(jì)的速度(上周期)
基于速度計(jì)的距離=(pi×缺省的車輪直徑)×本周期速度計(jì)脈沖計(jì)數(shù)/每周期的速度計(jì)脈沖計(jì)數(shù)
END IF
IF速度計(jì)通道1相對通道2的相位差為超前THEN
車輪旋轉(zhuǎn)方向=正向
ELSE
車輪旋轉(zhuǎn)方向=反向
END IF
基于加速度計(jì)的加速度=加速度計(jì)信號×g/加速度計(jì)的滿量程轉(zhuǎn)換值
結(jié)構(gòu)化分析方法是一種基于數(shù)據(jù)流圖的需求分析方法,具備一整套嚴(yán)格和完整的需求分析過程和方法。采用結(jié)構(gòu)化分析方法,可以有效避免傳統(tǒng)的手工作坊式需求分析方法中的個(gè)人隨意性,提高需求分析的清晰性、準(zhǔn)確性和完整性。在CBTC信號系統(tǒng)的開發(fā)中應(yīng)用結(jié)構(gòu)化分析方法,可以有效提高整個(gè)CBTC系統(tǒng)開發(fā)效率并降低開發(fā)成本。