潘浪濤, 王 成, 李 超
(中國鐵道科學(xué)研究院電子計(jì)算技術(shù)研究所,北京100081)
隨著我國鐵路建設(shè)的發(fā)展,鐵路自動(dòng)售票系統(tǒng)得到了更加廣泛地應(yīng)用,促進(jìn)了客運(yùn)服務(wù)和生產(chǎn)。然而在其運(yùn)營過程中也會(huì)陸續(xù)出現(xiàn)故障,這其中既有系統(tǒng)級的,也有接口級、設(shè)備級、部件級的,而有些系統(tǒng)級的問題一旦發(fā)生就會(huì)造成整個(gè)車站乃至整條線路自動(dòng)售票系統(tǒng)的癱瘓,嚴(yán)重影響鐵路的售票作業(yè)和良好形象。通過分析導(dǎo)致鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)失效(頂事件)的根本原因(底事件或底事件組合),建立鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)的故障樹模型,并結(jié)合定性定量分析方法找出鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)在實(shí)際應(yīng)用中最容易出現(xiàn)故障的關(guān)鍵模塊加以改進(jìn)和優(yōu)化,使整個(gè)系統(tǒng)的穩(wěn)定性得到提高。
軟件故障樹分析法是從硬件故障樹分析發(fā)展而來,其基本方法是根據(jù)軟件系統(tǒng)的邏輯結(jié)構(gòu),對關(guān)鍵故障事件(即頂事件)做出因果關(guān)系分析,找出可能導(dǎo)致頂事件發(fā)生的所有原因,然后把“與門”、“或門”等邏輯門連接起來,再找出導(dǎo)致這些原因的更基本的原因,這樣逐層向下分析,一直可以分析到最基本的原因(即底事件),并據(jù)此采取相應(yīng)的糾正措施,以達(dá)到提高系統(tǒng)可靠性的目的。軟件故障樹可以將軟件系統(tǒng)和控制系統(tǒng)很好的聯(lián)系起來,從整個(gè)系統(tǒng)的角度來考慮故障問題,與單一的從硬件或者軟件角度分析相比,其提高系統(tǒng)可靠性方面有著很大的優(yōu)勢。軟件故障樹分析法的具體分析步驟可見文獻(xiàn)[1~4] 。
鐵路自動(dòng)售票系統(tǒng)是近年來自主開發(fā)的一種新型的自動(dòng)化、自助化、智能化的售票方式,是對傳統(tǒng)窗口售票方式的有益補(bǔ)充,一定程度上緩解了鐵路客運(yùn)一票難求的局面。其采用3層分布式應(yīng)用體系,如下圖1。其各部分軟件均采用服務(wù)機(jī)制,采用TCP/IP協(xié)議進(jìn)行數(shù)據(jù)的傳遞與交換,通訊端口可以根據(jù)不同的系統(tǒng)進(jìn)行相應(yīng)的調(diào)整。
圖1 鐵路自動(dòng)售票系統(tǒng)結(jié)構(gòu)圖
鐵路自動(dòng)售票系統(tǒng)軟件主要由機(jī)內(nèi)軟件、自動(dòng)售票服務(wù)器軟件、管理軟件、監(jiān)控軟件、機(jī)內(nèi)維護(hù)軟件組成,接口層為客票發(fā)售與預(yù)訂系統(tǒng)(TRS)接口。機(jī)內(nèi)軟件和旅客交互完成購票操作,通過鐵路自動(dòng)售票應(yīng)用服務(wù)器和TRS完成數(shù)據(jù)交互,并向機(jī)內(nèi)維護(hù)終端軟件和監(jiān)控服務(wù)器提供自動(dòng)售票機(jī)(TVM)各種狀態(tài)數(shù)據(jù)。鐵路自動(dòng)售票應(yīng)用服務(wù)器為機(jī)內(nèi)軟件提供接口服務(wù)和數(shù)據(jù)庫管理,實(shí)現(xiàn)對下轄TVM的管理功能,并向監(jiān)控服務(wù)器提供基礎(chǔ)數(shù)據(jù),完成主要的應(yīng)用邏輯處理,系統(tǒng)運(yùn)行維護(hù)等復(fù)雜交易處理工作,形成了典型的“瘦客戶-胖服務(wù)”的3層系統(tǒng)架構(gòu)體系。通過前后臺軟件的有機(jī)結(jié)合,保證了鐵路自動(dòng)售票系統(tǒng)的數(shù)據(jù)一致性,事務(wù)完整性和系統(tǒng)運(yùn)行的安全可靠性。
鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)主要由以下5部分組成。
(1)核心調(diào)度模塊為服務(wù)程序的核心功能模塊,負(fù)責(zé)讀取配置文件、監(jiān)聽通信端口、創(chuàng)建守護(hù)進(jìn)程、創(chuàng)建長連接、初始化共享內(nèi)存和讀取終端信息,根據(jù)命令請求類型選擇對應(yīng)的模塊進(jìn)行處理。
(2)終端業(yè)務(wù)處理模塊包括客票業(yè)務(wù)模塊、現(xiàn)金業(yè)務(wù)模塊、終端管理業(yè)務(wù)模塊和服務(wù)器管理模塊,客票業(yè)務(wù)模塊為系統(tǒng)的核心業(yè)務(wù)模塊,負(fù)責(zé)與旅客購票相關(guān)的全部客票業(yè)務(wù)處理;現(xiàn)金業(yè)務(wù)模塊負(fù)責(zé)自動(dòng)售票系統(tǒng)內(nèi)現(xiàn)金業(yè)務(wù)和錢箱業(yè)務(wù)的處理;系統(tǒng)管理模塊負(fù)責(zé)處理系統(tǒng)內(nèi)的各種數(shù)據(jù),包括設(shè)備定義、系統(tǒng)基礎(chǔ)參數(shù)、人員信息等;服務(wù)器管理模塊負(fù)責(zé)對應(yīng)用服務(wù)程序本身進(jìn)行管理,如查看事務(wù)處理情況、常連接使用情況等信息。
(3)網(wǎng)絡(luò)通訊模塊負(fù)責(zé)與鐵路自動(dòng)售票機(jī)、TRS、本地?cái)?shù)據(jù)庫進(jìn)行網(wǎng)絡(luò)通信和數(shù)據(jù)交換。
(4)資源管理模塊負(fù)責(zé)smart進(jìn)程socket連接、數(shù)據(jù)庫連接以及共享內(nèi)存的管理,包括資源的建立、修復(fù)與釋放。
(5)日志模塊負(fù)責(zé)記錄smart進(jìn)程的通信日志、錯(cuò)誤日志以及調(diào)試日志。
鐵路自動(dòng)售票應(yīng)用服務(wù)軟件采用監(jiān)聽服務(wù)機(jī)制接收各終端的命令請求,并采用多線程方式對各類命令請求進(jìn)行并行處理。服務(wù)程序與各設(shè)備之間采用SOCKET通信,其中與自動(dòng)售票機(jī)、管理終端、監(jiān)控終端以短連接的方式進(jìn)行通信,減小系統(tǒng)資源的使用;與TRS應(yīng)用服務(wù)器以及本地?cái)?shù)據(jù)庫之間采用常連接方式通信,以縮短通信時(shí)間,提高系統(tǒng)效率。鐵路自動(dòng)售票應(yīng)用服務(wù)軟件在監(jiān)聽到終端連接請求后,將請求交由內(nèi)核調(diào)度程序進(jìn)行處理,內(nèi)核調(diào)度程序啟動(dòng)線程,并根據(jù)請求的不同類型,分別交由不同的模塊進(jìn)行處理,并將處理結(jié)果存入數(shù)據(jù)庫,最后將處理結(jié)果通過網(wǎng)絡(luò)連接返回給請求方。鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)的主函數(shù)流程圖如圖2。
圖2 鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)主函數(shù)流程圖
(1)選取鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)SC(特指自動(dòng)售票系統(tǒng)服務(wù)器端應(yīng)用程序,Station Controller,SC)失效作為SC故障樹的頂事件。根據(jù)近兩年自動(dòng)售票系統(tǒng)的實(shí)際運(yùn)行情況來看,SC失效主要包括smart進(jìn)程失效和系統(tǒng)超時(shí)無響應(yīng)。
(2)根據(jù)鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)的層次機(jī)構(gòu)及其內(nèi)部邏輯關(guān)系,導(dǎo)致SC失效的主要原因可分為核心控制模塊失效、網(wǎng)絡(luò)通信模塊失效、終端業(yè)務(wù)管理模塊失效等,再將這幾個(gè)模塊失效作為子故障樹的頂事件,分析其導(dǎo)致各子故障樹頂事件發(fā)生的原因,得出SC故障樹的底事件。最后將其進(jìn)行綜合,得出鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)故障樹,如圖3。
圖3 鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)故障樹
利用下行法(即Fuseell Vesely 算法)進(jìn)行分析,即從頂事件開始,將逐層向下搜索的過程橫向列表,當(dāng)遇到“與門”時(shí)就將其輸入事件取代輸出事件排列在表格同一行的下一列內(nèi);當(dāng)遇到“或門”時(shí)就將其輸入事件在下一列縱向依次展開,直到故障樹的最底層。此時(shí),表格中最后一列的各行都是故障樹的割集,然后再利用事件間的邏輯運(yùn)算規(guī)則進(jìn)行運(yùn)算并簡化,最終可以得到自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)故障樹的全部最小割集,如表1所示。設(shè)頂事件(SC失效)為T,SC故障樹的最小割集為:{X1},{X2},{X3},{X4},{X5},{X6},{X7},{X8},{X9},{X10}、{X11}、{X12}、{X13}。其中T1:核心控制模塊失效,T2:終端業(yè)務(wù)管理模塊失效T3:網(wǎng)絡(luò)通信模塊失效;X1:操作系統(tǒng)性能降低,X2:核心控制模塊啟動(dòng)失敗,X3:監(jiān)聽端口失敗,X4:向其它模塊分發(fā)任務(wù)失敗,X5:資源管理模塊失效,X6:日志模塊失效,X7:客票業(yè)務(wù)模塊失效,X8:現(xiàn)金業(yè)務(wù)模塊失效,X9:終端管理業(yè)務(wù)模塊失效,X10:數(shù)據(jù)庫管理模塊失效,X11:與終端通信失敗,X12:與TRS通信失敗,X13:與數(shù)據(jù)庫通信失敗。
結(jié)合定性分析可知,鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)故障樹的所有最小割集均為一階最小割集,因此僅從定性分析角度來看,它們對于頂事件來說都非常重要,而且具有相同的重要度。
通過對鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)的實(shí)際使用情況分析,發(fā)現(xiàn)TRS 通信模塊和數(shù)據(jù)庫通信模塊所采用的長連接在處理多客戶端、大數(shù)據(jù)量的連接請求時(shí)失敗的概率較高。嘗試將其改為短連接,并在實(shí)際應(yīng)用環(huán)境中進(jìn)行測試。通過分析統(tǒng)計(jì)數(shù)據(jù),發(fā)現(xiàn)改變后因?yàn)檫B接請求失敗而導(dǎo)致SC失效狀況得到有效的改善,與未作改變之前相比,整個(gè)系統(tǒng)發(fā)生故障次數(shù)也明顯減少,穩(wěn)定性得到進(jìn)一步提升。
表1 下行法過程
本文利用軟件故障樹分析方法對鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)進(jìn)行了詳細(xì)分析,建立了鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)失效的故障樹模型,并結(jié)合實(shí)際運(yùn)行過程中出現(xiàn)的問題對SC故障樹進(jìn)行了定性和定量分析,確定了SC故障樹的關(guān)鍵模塊,然后采用針對性的措施對鐵路自動(dòng)售票系統(tǒng)應(yīng)用服務(wù)進(jìn)行了改進(jìn),降低了其故障發(fā)生的概率,延長了平均無故障運(yùn)行時(shí)間,提高了整個(gè)系統(tǒng)的穩(wěn)定性。
[1] 史定華,王瑞松,故障分析技術(shù)方法理論[M] . 北京:北京師范大學(xué)出版社,1993.
[2] 陸錦軍,王執(zhí)銓. 基于故障樹的校園網(wǎng)通信系統(tǒng)的可靠性分析[J] . 計(jì)算機(jī)應(yīng)用與軟件,2006,(11):14-15.
[3] 孫志安,裴曉黎,宋昕,等. 軟件可靠性工程[M] . 北京航空航天大學(xué)出版社,2009.
[4] 權(quán)巍,王俊杰,等. 軟件故障樹分析及其在生化分析儀中的應(yīng)用[J] . 微電子學(xué)與計(jì)算機(jī),2009,26(1):173-176.
[5] 唐堃,王明哲,彭懷軍,等. 鐵路自動(dòng)售票系統(tǒng)的研究與實(shí)現(xiàn)[J] . 鐵路計(jì)算機(jī)應(yīng)用,2003,12(12):28-31.
[6] 張彥,史天運(yùn),李士達(dá),李超. AFC技術(shù)及鐵路自動(dòng)售檢票系統(tǒng)研究[J] . 中國鐵路,2009,18(3):50-55.
[7] 中國鐵道科學(xué)研究院. 鐵路旅客自動(dòng)售票系統(tǒng)研究報(bào)告,DZYF字第021號[R] . 2006.