秦鳳杰 夏蕓 楊平 曹然
(卡斯柯信號(hào)有限公司 上海市 200071)
正則表達(dá)式以其靈活的表達(dá)能力和高邏輯關(guān)聯(lián)性、強(qiáng)大的功能性而廣泛應(yīng)用在生物信息學(xué)、數(shù)據(jù)的有效性檢驗(yàn)、文本編輯器和網(wǎng)絡(luò)安全檢測(cè)等領(lǐng)域。本文將正則表達(dá)式的匹配操作應(yīng)用于城市軌道交通信號(hào)系統(tǒng)項(xiàng)目的系統(tǒng)設(shè)計(jì)驗(yàn)證工作中,提出了從系統(tǒng)配置規(guī)則文檔中自動(dòng)精準(zhǔn)提取追蹤矩陣的方法,提高了系統(tǒng)設(shè)計(jì)驗(yàn)證工作的質(zhì)量和效率。
系統(tǒng)設(shè)計(jì)文檔主要在項(xiàng)目生命周期的設(shè)計(jì)階段和安裝階段進(jìn)行編制和更新。系統(tǒng)設(shè)計(jì)文檔編寫和更新后的驗(yàn)證需要在項(xiàng)目生命周期各個(gè)階段執(zhí)行。系統(tǒng)設(shè)計(jì)驗(yàn)證需要根據(jù)平臺(tái)指導(dǎo)文件及限制分析、項(xiàng)目合同、土建輸入、車輛特性、系統(tǒng)設(shè)計(jì)人員和業(yè)主的設(shè)計(jì)聯(lián)絡(luò)會(huì)會(huì)議紀(jì)要等作為輸入,對(duì)系統(tǒng)設(shè)計(jì)的文檔進(jìn)行核對(duì)驗(yàn)證。從圖1城市軌道交通信號(hào)系統(tǒng)項(xiàng)目開發(fā)的生命周期V 模型中可以看出,系統(tǒng)集成測(cè)試主要針對(duì)系統(tǒng)設(shè)計(jì),檢查系統(tǒng)作為一個(gè)整體是否得到有效地運(yùn)行,以及在產(chǎn)品設(shè)置中是否能達(dá)到預(yù)期的高性能。系統(tǒng)設(shè)計(jì)存在的缺陷如果不能得到及時(shí)發(fā)現(xiàn)并糾正,將會(huì)對(duì)后續(xù)地鐵項(xiàng)目的數(shù)據(jù)制作,測(cè)試,現(xiàn)場(chǎng)動(dòng)調(diào)等階段造成極大影響,由于建設(shè)的環(huán)環(huán)相扣,缺陷發(fā)現(xiàn)越晚,進(jìn)行缺陷彌補(bǔ)的工程量越大,進(jìn)而引起工程周期拖延、建設(shè)成本大幅上升。因此,在整個(gè)生命周期中,系統(tǒng)設(shè)計(jì)階段驗(yàn)證工作至關(guān)重要,通過驗(yàn)證設(shè)計(jì)中存在的缺陷和偏差,確保系統(tǒng)設(shè)計(jì)文檔的正確性,權(quán)威性。
圖1:項(xiàng)目開發(fā)生命周期V 模型
系統(tǒng)設(shè)計(jì)驗(yàn)證的文檔包括系統(tǒng)配置規(guī)則(System Configuration Rules, 簡(jiǎn)稱Sycr)、列車運(yùn)行規(guī)則(Train Movement Specification, 簡(jiǎn)稱TMS)、平面圖(Scheme Plan, 簡(jiǎn)稱SP)、Overlap、后備模式變量表(IBBM)、系統(tǒng)結(jié)構(gòu)圖、裝備有CBTC 系統(tǒng)的停車場(chǎng)和車輛段平面圖、地址計(jì)劃(Addressing Plan)等?,F(xiàn)如今,已有多個(gè)城市正在規(guī)劃和建設(shè)全自動(dòng)無人駕駛線路,上海和成都新建地鐵項(xiàng)目均已投入使用。全自動(dòng)無人駕駛[1]信號(hào)系統(tǒng)與傳統(tǒng)的CBTC信號(hào)系統(tǒng)相比,具有更高的安全性和可靠性,并有效增強(qiáng)了系統(tǒng)的靈活性和可用性。功能和應(yīng)急方式均需涉及整列車上無人作業(yè)的方式,需對(duì)既有功能進(jìn)行增強(qiáng),如遠(yuǎn)程喚醒功能、全自動(dòng)洗車、蠕動(dòng)模式、車門/站臺(tái)門對(duì)位隔離、請(qǐng)客確認(rèn)和站臺(tái)自動(dòng)對(duì)位調(diào)整等。對(duì)于這些新功能全自動(dòng)無人駕駛項(xiàng)目的信號(hào)系統(tǒng)的系統(tǒng)設(shè)計(jì)驗(yàn)證要進(jìn)行全面覆蓋。在項(xiàng)目執(zhí)行過程中,驗(yàn)證工作量成倍增加,人工驗(yàn)證無法適應(yīng)高強(qiáng)度工作。
如圖2,從系統(tǒng)設(shè)計(jì)文檔之間的輸入輸出關(guān)系圖可以看出,系統(tǒng)配置規(guī)則文檔中最重要的部分是設(shè)計(jì)規(guī)則,這些規(guī)則是設(shè)計(jì)文檔的標(biāo)準(zhǔn),并且單個(gè)城軌項(xiàng)目的規(guī)則數(shù)量高達(dá)數(shù)百個(gè)。傳統(tǒng)方法采用手動(dòng)篩選分配給各個(gè)文檔的規(guī)則,然后將規(guī)則導(dǎo)入到驗(yàn)證報(bào)告模板中進(jìn)行驗(yàn)證。此種方法存在諸多缺點(diǎn)和不足,主要表現(xiàn)為:
圖2:系統(tǒng)設(shè)計(jì)文檔之間的輸入輸出關(guān)系
(1)由于規(guī)則數(shù)量龐大,篩選規(guī)則需要花費(fèi)大量時(shí)間和精力,嚴(yán)重影響了驗(yàn)證效率。
(2)手動(dòng)篩選沒有統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范,驗(yàn)證人員的水平對(duì)驗(yàn)證質(zhì)量影響很大,經(jīng)常出現(xiàn)規(guī)則遺漏驗(yàn)證的現(xiàn)象,驗(yàn)證質(zhì)量無法保證。如果遺漏規(guī)則是影響數(shù)據(jù)的,并且設(shè)計(jì)文檔沒有遵守該規(guī)則,那么該問題就會(huì)遺留到測(cè)試階段或者現(xiàn)場(chǎng)動(dòng)調(diào)階段,造成工程延誤,無法如期進(jìn)行項(xiàng)目交付,將會(huì)面臨支付巨額違約罰金的困局。因此,尋求一種從系統(tǒng)配置規(guī)則中自動(dòng)提取追蹤矩陣的方法具有重要的現(xiàn)實(shí)意義。
正則表達(dá)式[2]是一種文本模式,包括普通字符和特殊字符,使用單個(gè)字符串來描述、匹配一系列某個(gè)句法規(guī)則的字符串匹配。字符串匹配定義[3]為:對(duì)于給定的模式字符串或者文檔,在其中查找出于給定模式字符串匹配的所有起始位置。正則匹配分為獲取匹配和非獲取匹配,獲取匹配是匹配pattern 并捕獲該匹配的子表達(dá)式,而非獲取匹配是匹配pattern 但不獲取匹配結(jié)果,不進(jìn)行存儲(chǔ)供以后使用。本文主要采用的是非獲取匹配中的(?=pattern)和(?<=pattern)。
(?=pattern)表示正向肯定預(yù)查,匹配pattern 前面的位置。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。對(duì)于正則表達(dá)式Q= xxx(?=pattern),就是捕獲以pattern 結(jié)尾的內(nèi)容xxx。例如,對(duì)于正則表達(dá)式Q= ABCD(?=12|13|14|15)能匹配"ABCD15"中的"ABCD",但不能匹配"ABCD78"中的"ABCD"。
(?<=pattern)是反向肯定預(yù)查,與正向肯定預(yù)查類似,只是方向相反。對(duì)于正則表達(dá)式Q=(?<=pattern)xxx,就是捕獲以pattern開頭的內(nèi)容xxx。例如,對(duì)于正則表達(dá)式Q=(?<=12|13|14|15)ABCD能匹配"15ABCD" 中的"ABCD",但不能匹配"78ABCD" 中的"ABCD"。
該方法使用Python 語言基于正則表達(dá)式開發(fā)。其設(shè)計(jì)流程圖如圖3 所示。該工具采用的正則表達(dá)式分別匹配項(xiàng)目規(guī)則號(hào)、安全屬性、分配文檔、平臺(tái)規(guī)則號(hào)和特殊屬性。按段落對(duì)文本內(nèi)容進(jìn)行匹配,如果內(nèi)容匹配稱成功,則輸出匹配字符,否則輸出為空。最后將匹配的內(nèi)容輸出到新建的EXCEL 表格中,并刪除空行,得到所需要的追蹤矩陣。
圖3:程序流程圖
首先,創(chuàng)建一個(gè)新的Excel 表單sheet1,表單第一行設(shè)置為表頭,從第一列到第七列分別為 “SYCR”、 “Text”、 “Design”、“Safety”、“Allocation”、“Source”和 “Specific rule”。
然后,使用docx 模塊讀取并編輯項(xiàng)目的系統(tǒng)配置規(guī)則文檔,判斷系統(tǒng)配置規(guī)則的格式。具體方法為,按段落讀取系統(tǒng)配置規(guī)則文檔,采用多個(gè)條件判斷語句elif,判斷文檔中是否有關(guān)鍵詞“[BeginBook”、“#Rule Name=”、“#Category=”。如果有關(guān)鍵詞“[BeginBook”,采用格式1 將匹配的內(nèi)容輸入到sheet1 中;如果有關(guān)鍵詞“#Rule Name=”,采用格式2 將匹配的內(nèi)容輸入到sheet1 中;如果有關(guān)鍵詞“#Category=”,采用格式3 將匹配的內(nèi)容輸入到sheet1 中,并保存好新的EXCEL 文件。如果系統(tǒng)配置規(guī)則文檔均不含有以上列舉的關(guān)鍵詞,則彈出警告“格式不匹配,無法提取”。
具體的匹配方法為,先創(chuàng)建五個(gè)正則表達(dá)式,分別為“re1 =r'[BeginBook(.*?)]'”、“re2 =r"(?<=#Safety=)(.*)"”、“re3=r"(?<=#Allocation=)(.*)"”、“re4 =r"(?<=#Source=)(.*)"”、“re5 =r"(?<=#Specific Rule=)(.*)"”。其中,re1 用于匹配項(xiàng)目規(guī)則號(hào),re2 用于匹配安全屬性,re3 用于匹配規(guī)則所分配的文檔,re4 用于匹配平臺(tái)規(guī)則號(hào),re5 用于匹配規(guī)則的特殊屬性。然后按段落對(duì)整個(gè)系統(tǒng)配置規(guī)則文檔進(jìn)行查詢篩選。如果該段落匹配正則表達(dá)式re1,則輸出匹配到的字符串到sheet1 的第0 列;如果該段落匹配正則表達(dá)式re2,則輸出匹配到的字符串到sheet1 的第3 列;如果該段落匹配正則表達(dá)式re3,則輸出匹配到的字符串到sheet1的第4 列;如果該段落匹配正則表達(dá)式re4,則輸出匹配到的字符串到sheet1 的第5 列;如果該段落匹配正則表達(dá)式re5,則輸出匹配到的字符串到sheet1 的第6 列;如果查詢到的段落不匹配任何正則表達(dá)式,則輸出為空。
最后,調(diào)入Pandas 庫,將上述EXCEL 文件中的空行都刪除掉,得到所需格式的追蹤矩陣。
目前,該方法已經(jīng)成功應(yīng)用于城市軌道交通信號(hào)系統(tǒng)項(xiàng)目的系統(tǒng)設(shè)計(jì)驗(yàn)證工作中。圖4 為截取的部分系統(tǒng)配置規(guī)則中的規(guī)則,如圖5 所示,為自動(dòng)提取的追蹤矩陣。
圖4:Project1 的規(guī)則
圖5:自動(dòng)提取的追蹤矩陣
實(shí)驗(yàn)結(jié)果列出了本文所述的方法在不同規(guī)則數(shù)下提出追蹤矩陣所耗費(fèi)的時(shí)間,結(jié)果如圖6 所示,其中橫坐標(biāo)表示項(xiàng)目規(guī)則數(shù)量,縱坐標(biāo)表示提取追蹤矩陣的時(shí)間。從實(shí)驗(yàn)結(jié)果可以看出隨著規(guī)則數(shù)量的增加,提取追蹤矩陣的時(shí)間能夠在線性時(shí)間內(nèi)完成,因此該方法具有較好的可擴(kuò)展性。
圖6:自動(dòng)提取追蹤矩陣的時(shí)間
通過上文的對(duì)比分析可知,該方法提取追蹤矩陣的效率明顯優(yōu)于手動(dòng)提取,本節(jié)主要對(duì)不同項(xiàng)目分別做了實(shí)驗(yàn)進(jìn)行驗(yàn)證,具體實(shí)驗(yàn)結(jié)果如圖7 所示。
圖7:手動(dòng)提取和自動(dòng)提取所用時(shí)間對(duì)比
以Project1 為例,計(jì)算系統(tǒng)驗(yàn)證階段人工和使用自動(dòng)方法導(dǎo)出追蹤矩陣所需的工時(shí)。Project1 在SYCR 中的規(guī)則個(gè)數(shù)為710 個(gè),驗(yàn)證人員在SYCR 文檔中有效搜索到一個(gè)規(guī)則并導(dǎo)出到Excel 表格中為0.5 分鐘計(jì)算,人工所需工時(shí)為5.91 人時(shí)。而使用自動(dòng)提取方法得到如下追蹤矩陣僅僅需要10 分鐘。針對(duì)不同項(xiàng)目,這種自動(dòng)化提取追蹤矩陣的時(shí)間均優(yōu)于手動(dòng)提取時(shí)間,極大節(jié)約了驗(yàn)證時(shí)間,提高了驗(yàn)證效率。
系統(tǒng)設(shè)計(jì)驗(yàn)證工作在城市軌道交通信號(hào)系統(tǒng)項(xiàng)目建設(shè)的順利實(shí)施中具有重要地位,因此保障系統(tǒng)設(shè)計(jì)驗(yàn)證的質(zhì)量對(duì)于縮短項(xiàng)目開發(fā)周期至關(guān)重要。從系統(tǒng)配置規(guī)則中自動(dòng)提取追蹤矩陣對(duì)于系統(tǒng)設(shè)計(jì)驗(yàn)證效率和質(zhì)量都得到了很大提高。本文提出的系統(tǒng)配置規(guī)則中自動(dòng)提取追蹤矩陣的驗(yàn)證方法,對(duì)于后續(xù)系統(tǒng)設(shè)計(jì)驗(yàn)證自動(dòng)化的研究提供了重要參考和指導(dǎo)意義。