周亞男,劉錦峰,朱程輝
(卡斯柯信號(hào)有限公司,上海 200071)
V模型是軟件生命周期的基礎(chǔ)模型,也是軌道交通信號(hào)系統(tǒng)軟件開發(fā)的首選模型。在軌道交通系統(tǒng)自動(dòng)化的發(fā)展過程中,軟件功能越來越復(fù)雜,安全性成為軌道交通信號(hào)軟件開發(fā)所關(guān)注的一個(gè)重點(diǎn)。軟件開發(fā)中存在著許多不可預(yù)測的因素,可能埋藏著不少重大風(fēng)險(xiǎn),如何將風(fēng)險(xiǎn)控制在可接受的范圍內(nèi),以保證軌道交通信號(hào)軟件的安全可靠,是軟件開發(fā)生命周期中所必須要解決的問題,目前越來越多的企業(yè)引入了歐洲的鐵路相關(guān)標(biāo)準(zhǔn)[1]。
軌道交通業(yè)的標(biāo)準(zhǔn)依據(jù)是歐洲電工標(biāo)準(zhǔn)化委員會(huì)(CENELEC)規(guī)定的EN5012X系列,是IEC61508在軌交行業(yè)的派生標(biāo)準(zhǔn),涉及如下:EN50129鐵路應(yīng)用——信號(hào)領(lǐng)域的安全相關(guān)電子系統(tǒng);EN50126鐵路應(yīng)用——可靠性、可用性、可維護(hù)性和安全性;EN50128鐵路應(yīng)用——通信、信號(hào)和處理系統(tǒng)-鐵路控制和防護(hù)系統(tǒng)軟件;EN50159-1鐵路應(yīng)用——通信、信號(hào)和處理系統(tǒng),第一部分:封閉式傳輸系統(tǒng)中的安全通信;EN50159-2鐵路應(yīng)用——通信、信號(hào)和處理系統(tǒng),第二部分:開放式傳輸系統(tǒng)中的安全通信。
本文主要圍繞EN50128展開討論,該標(biāo)準(zhǔn)對軟件開發(fā)生命周期的不同階段提出了包含流程、方法、技術(shù)的詳細(xì)要求。通過規(guī)范軟件的開發(fā)過程以及技術(shù)要求,來保證軌道交通軟件的質(zhì)量和可靠性。
軟件生命周期V模型是一種線性順序模型,提供了一種結(jié)構(gòu)化的、自頂向下的軟件開發(fā)方法,每階段主要工作成果從一個(gè)階段傳遞到下一個(gè)階段,每個(gè)階段的產(chǎn)出物必須經(jīng)過評審或者測試。
傳統(tǒng)的V模型測試活動(dòng)如圖1所示,定義了單元測試、軟件集成、軟件確認(rèn)三個(gè)階段,分別對應(yīng)詳細(xì)設(shè)計(jì)、概要設(shè)計(jì)、軟件需求,但是在軟件生命周期過程中沒有明確具體的活動(dòng)以保證測試用例與需求設(shè)計(jì)之間的一致性,以及測試用例對需求覆蓋的完整性,導(dǎo)致完整的需求滿足情況一直到后期的驗(yàn)收才被驗(yàn)證。
圖1 傳統(tǒng)V 模型
相對于傳統(tǒng)的V模型,CENELECEN50128對整個(gè)軟件生命周期的過程進(jìn)行控制,對各階段的工作有具體的指導(dǎo)要求,對采取的技術(shù)和方法提出了建議,通過流程控制來減少人為疏漏。結(jié)合EN50128的V模型生命周期如圖2所示。
圖2 結(jié)合EN50128 的V 模型
藍(lán)色字體為對比增加部分,包括:
(1)各階段有上下級(jí)關(guān)系的文檔增加追蹤驗(yàn)證活動(dòng)。該活動(dòng)要求需求、設(shè)計(jì)文檔標(biāo)簽化、條目化、結(jié)構(gòu)化,同時(shí)由獨(dú)立的驗(yàn)證人員逐條核查文檔內(nèi)容,保證了不同階段的需求、設(shè)計(jì)之間的正確性、完整性、一致性。
(2)測試文檔對需求、涉及覆蓋情況的驗(yàn)證活動(dòng)。同樣由獨(dú)立的驗(yàn)證人員檢查每一條需求是否都被用例完整覆蓋,測試用例設(shè)計(jì)正確無誤可執(zhí)行。
(3)各階段的測試技術(shù)方法選擇要求。對各階段測試強(qiáng)制使用或者強(qiáng)烈推薦使用的測試方法選擇提出要求,該部分在下個(gè)章節(jié)詳細(xì)探討。
(4)測試執(zhí)行的驗(yàn)證活動(dòng)。由獨(dú)立的驗(yàn)證人員對測試執(zhí)行過程以及結(jié)果進(jìn)行監(jiān)督以及驗(yàn)證,減少測試過程中人為失誤導(dǎo)致的測試結(jié)果偏離。
(5)對整個(gè)軟件的驗(yàn)證活動(dòng)和測試活動(dòng)的總結(jié)報(bào)告。通過分析或者證明所有的軟件需求都是按照適用的SIL要求進(jìn)行開發(fā),測試的,并且評估各階段所有的異常和偏離,給出軟件是否滿足定義的軟件安全完整性等級(jí),符合軟件要求及其預(yù)期的結(jié)論。
以上活動(dòng)可以看出,V模型結(jié)合EN50128以后,需求、設(shè)計(jì)以及測試文檔形成了完整的可追蹤關(guān)系,對整個(gè)開發(fā)過程中的需求形成了閉環(huán)管理。此外,要求研發(fā)、驗(yàn)證、以及測試人員保持人員獨(dú)立性,通過完整的流程控制以及測試方法選用指導(dǎo),保證在軟件開發(fā)生命周期過程中,盡早找出需求偏離和軟件缺陷,從而更高效地提高軟件質(zhì)量,最大可能地減少返工成本[2-3]。
在EN50128標(biāo)準(zhǔn)中,將軟件安全完整性等級(jí)劃分為SIL0~SIL4五個(gè)等級(jí),軟件安全完整性等級(jí)越高,對于測試技術(shù)方法的選擇要求越嚴(yán)格,軟件的SIL等級(jí)決定了測試過程中需要實(shí)現(xiàn)的測試方法:?“M”為必填項(xiàng);?“HR”為強(qiáng)烈建議使用;?“R”為建議使用;?“—”為無要求。
每一個(gè)測試階段都有測試方法的推薦使用,對于標(biāo)為R和HR的測試方法,一般都必須使用,如果不使用需要給出合理的解釋[4-5]。下面詳細(xì)介紹在不同的測試階段如何根據(jù)不同的安全等級(jí)選擇測試技術(shù)方法,本章節(jié)中測試技術(shù)方法表格均引自EN50128。
單元即模塊測試,一般測試對象為源代碼,測試活動(dòng)包括靜態(tài)測試和動(dòng)態(tài)測試兩類。靜態(tài)測試又包含代碼驗(yàn)證和代碼走讀,根據(jù)軟件詳細(xì)設(shè)計(jì)文件,通過對源代碼的編碼規(guī)范、代碼結(jié)構(gòu)以及格式的審查和分析,在動(dòng)態(tài)測試之前發(fā)現(xiàn)代碼問題。靜態(tài)測試的方法要求如表1,表2所示。
單元?jiǎng)討B(tài)測試的對象一般為單個(gè)函數(shù),通過測試人員編寫的測試驅(qū)動(dòng)函數(shù)(通過工具可實(shí)現(xiàn)自動(dòng)化)以及測試樁函數(shù)來動(dòng)態(tài)執(zhí)行代碼,發(fā)現(xiàn)軟件的缺陷。對于動(dòng)態(tài)測試的要求如表3,表4所示。
表1 編碼規(guī)范(源自EN50128 A.12)
表2 靜態(tài)分析(源自EN50128 A.19)
表3 動(dòng)態(tài)分析和測試(源自EN50128 A.13)
表4 代碼的測試覆蓋率(源自EN50128 A.21)
集成測試的對象是軟件模塊,通過將軟件模塊一次性或者增量的方式進(jìn)行組裝,根據(jù)軟件設(shè)計(jì)要求,對模塊功能以及模塊接口的正確性進(jìn)行測試,軟件集成測試要求使用的方法如表5,表6所示。
表5 功能/黑盒測試(源自EN50128 A.14)
表6 性能測試(源自EN50128 A.18)
軟件確認(rèn)測試是對整個(gè)軟件的功能以及性能進(jìn)行的完整測試,一般是用黑盒的測試方法,驗(yàn)證被測軟件是否滿足軟件需求定義。軟件確認(rèn)測試要求使用的方法如上文表3,表5,表6所示,其中表3的技術(shù)方法在單元測試和軟件確認(rèn)測試階段均引用到,只需保證組合起來能覆蓋完整即可。軟件測試是一個(gè)人為執(zhí)行的過程,軟件測試的流程和方法直接影響測試結(jié)果的準(zhǔn)確性和有效性,因此,軟件測試過程的指導(dǎo)流程至關(guān)重要。EN50128通過對以上三個(gè)不同測試階段指定軟件測試技術(shù)方法為軟件測試質(zhì)量的保證提供了強(qiáng)有力的依據(jù)。
本文分析了傳統(tǒng)V模型簡單在軌道交通軟件開發(fā)過程中應(yīng)用的不足之處,歸納了EN50128結(jié)合傳統(tǒng)V模型在軟件測試過程的支持和擴(kuò)充。通過分析和探討EN50128中對V模型測試過程以及技術(shù)方法的要求,總結(jié)出適合鐵路信號(hào)系統(tǒng)軟件不同安全等級(jí)的通用軟件測試方法和流程,對相關(guān)軟件的測試工作具有實(shí)際應(yīng)用指導(dǎo)作用。