Eduardo Lluna擁有巴倫西亞大學(xué)的物理學(xué)位和巴倫西亞大學(xué)理工學(xué)院電子工程系的博士學(xué)位。他一向?qū)τ谲浖䴗y試,電子測量設(shè)備和感測網(wǎng)路方面的研究都很積極。Lluna有20多年的關(guān)于交通控制,公眾視野,支付,電信系統(tǒng)領(lǐng)域的即時嵌入系統(tǒng)的軟件的專業(yè)經(jīng)驗。他曾在SICE, Telvent還有 Design of Systems on Silicon (DS2)公司任過職。他是巴倫西亞大學(xué)計算機科學(xué)部的副教授,且自2011年1月起,已在ITI公司的軟件質(zhì)量部擔(dān)任協(xié)助不同研發(fā)項目的項目經(jīng)理。更多詳細資料,見:www.linkedin.com/in/elluna。 | |
Maximiliano Mannise擁有烏拉圭天主教大學(xué)的計算機工程學(xué)位。他是西班牙巴倫西亞ITI公司軟件質(zhì)量部的負責(zé)人。Maximiliano在烏拉圭蒙得維的亞大學(xué)擔(dān)任過教授,還參與過西班牙政府或業(yè)內(nèi)所創(chuàng)建的關(guān)于軟件質(zhì)量和軟件測試的調(diào)研項目。 自2007年起,他一直在ITI公司從事與軟件質(zhì)量測試,研究及傳播活動(如:VLCTESTING)相關(guān)的項目。之前,他還在烏拉圭IBM工作過9年多,包括2年多的測試項目經(jīng)理。Maximiliano對實際測試過程提升及用于測試項目的項目管理很感興趣。更多詳細資料,見:www.linkedin.com/in/mmannise。 |
代碼驗證包括檢查一些規(guī)則,并且隨著項目安全水平的提升,需要檢查的規(guī)則的數(shù)量也要增加?梢杂貌煌墓ぞ邫z查,驗證團隊獨立于開發(fā)團隊之外的情況在安全關(guān)鍵系統(tǒng)中并不常見。集中式系統(tǒng)需要處理所有的缺陷信息并輕松生成報告。本文展示了一個開發(fā)用以管理大型項目的驗證結(jié)果的數(shù)據(jù)管理系統(tǒng)。解決方案基于一個商務(wù)智能引擎。
1.引言
代碼驗證過程包括檢查特定規(guī)則被遵守且特定代碼如指定的執(zhí)行?梢允止z查,但這是一件很累,易錯的事,所以使用自動化工具才是佳選擇。要接受檢查的規(guī)則數(shù)量是可變的且依賴項目安全水平。隨著項目變大且安全水平增加,需要檢查的規(guī)則的數(shù)量及要執(zhí)行的代碼變得很高,使用自動化驗證工具勢在必行。
驗證任務(wù)由一個團隊或一個不同于通常負責(zé)開發(fā)安全關(guān)鍵系統(tǒng)的公司執(zhí)行時,所有檢查結(jié)果都必須被管理以生成缺陷報告并計算可以被及時交付給開發(fā)團隊的項目進展指標(biāo)。一般情況下,不同的工具要進行所有的檢查(通常是靜態(tài)和動態(tài)分析),因此信息將來自于不同源頭并且是不同的形式。管理來源不同的大量信息產(chǎn)生了問題,工具要匯總所有缺陷信息并管理它們以計算指標(biāo)并以集中方式生成報告。
本文展現(xiàn)了按嚴(yán)格安全要求創(chuàng)建以管理大型項目驗證任務(wù)的數(shù)據(jù)管理系統(tǒng)。解決方案是基于一個商務(wù)智能引擎的。
本文結(jié)構(gòu)如下。第二部分簡要概述了驗證任務(wù)。第三部分介紹了推薦的驗證流程,描述了不同活動和產(chǎn)品。第四部分講了內(nèi)部執(zhí)行和商務(wù)智能引擎。第五部分展示了一些使用工具的真實案例結(jié)果。后,第六部分做了一些總結(jié)。
2.驗證任務(wù)
驗證包括檢查任務(wù)中創(chuàng)造的產(chǎn)品滿足要求且正確。有各種驗證技術(shù),項目定義中的一項重要任務(wù)是為制定項目選擇正確的驗證技術(shù)。安全關(guān)鍵的開發(fā)是按標(biāo)準(zhǔn)管理的,比如:IEC 61508-3, EN-50128, DO-178B,且根據(jù)項目的安全水平,它們提供一系列可以考慮的技術(shù)。一般情況下,可以認(rèn)為,所有標(biāo)準(zhǔn)中都需要有兩個基本類型的代碼分析驗證技術(shù):靜態(tài)和動態(tài)分析。靜態(tài)分析包括檢查源代碼而不運行,并尋找被認(rèn)為是危險的或易錯的結(jié)構(gòu)。檢查有很多規(guī)則,包括代碼標(biāo)準(zhǔn),但是一系列非常重要的規(guī)則是來自使用一個不安全語言的情況中的語言子集定義。大多數(shù)安全關(guān)鍵系統(tǒng)是用C或C++編碼的,且兩種語言都被認(rèn)為是不安全的,所以使用它們的方法是只使用一種被認(rèn)為安全的語言子集。對于C和C++,有兩種被廣泛使用的子集:MISRA C/C++和JSF。兩種子集都制定一系列必須遵守且必須檢查的規(guī)則。動態(tài)分析包含執(zhí)行部分代碼以檢查它如預(yù)期進行。過程包括定義一系列通過它的界面和(結(jié)果與規(guī)范中一致的)檢查去執(zhí)行的代碼測試用例。一般來說,驗證任務(wù)可以自動或手工執(zhí)行。優(yōu)先選自動化方法,但不可能總這樣。靜態(tài)分析可以是自動的,且有商用工具。動態(tài)分析不容易自動化,一般而言,它要求手工定義測試用例。另一個限制自動化使用的問題是:在安全關(guān)鍵系統(tǒng)中,工具必須被認(rèn)證可以安全使用,因此可用工具的數(shù)量被減少了。另一個出現(xiàn)在一個真實項目中的問題是,通常,沒有一個單獨的工具可以檢查項目要求的所有的規(guī)則。認(rèn)證工具很貴,有時不會選擇去買一些工具。還有一些項目或公司依賴的規(guī)則,比如檢查主文件格式,對這些任務(wù)進行腳本特別檢查。一般情況下,驗證任務(wù)必須包括開發(fā)這些特殊腳本的計劃。即使是挑選了工具,開發(fā)了腳本去執(zhí)行特殊檢查后,一些規(guī)則因為它們的復(fù)雜性而無法自動化,所以驗證過程必須包括一些將被驗證和驗證工程師執(zhí)行的手動檢查。無論如何,手動檢查的結(jié)果必須被輸入管理系統(tǒng)。驗證過程中的另一個重要因素是度量計算。一些度量是由工具計算的且如果值超出范圍時它們可被當(dāng)做一個缺陷(圈復(fù)雜,嵌套級別,函數(shù)長度等)。但也有其他度量是關(guān)于追蹤基于隨版本而變化的參數(shù)的過程演變的,所以有必要保存所有的信息并可隨時用于計算這些度量。這些度量的一個實例是Stability Index,它提供了一個版本間變化的指示,每個版本的既定類型的缺陷數(shù)量,等。
3.建議流程
驗證流程必須考慮一些可以自動執(zhí)行的任務(wù)及及其他手動執(zhí)行的任務(wù),但是所有情況下,都要把信息存到信息系統(tǒng)中;竟ぷ髁鞒倘鐖D1所示。流程開始輸入源代碼,后輸出關(guān)于代碼質(zhì)量的報告,基本是一大堆沒達到的規(guī)則。獲取數(shù)據(jù)的流程包括使用各種工具執(zhí)行所有要求進行的檢查。數(shù)據(jù)輸入模塊是數(shù)據(jù)存儲的進入點它獲取不同來源不同形式的信息并存入數(shù)據(jù)庫。數(shù)據(jù)來源有三個基本類型:商業(yè)分析工具,特別編寫的腳本,和手工檢查。手工檢查中,有一個搜集數(shù)據(jù)并創(chuàng)建一個(給數(shù)據(jù)輸入模塊使用的文件的)特別腳本。數(shù)據(jù)輸入功能使用一個固定格式的XML文件。開發(fā)的腳本以正確的文件格式創(chuàng)建輸出,但是用轉(zhuǎn)化層將商業(yè)工具的輸出轉(zhuǎn)化為正確的格式。存儲和處理系統(tǒng)也能充分利用接收到的所有數(shù)據(jù)并生成報告。
圖1.流程概貌
數(shù)據(jù)庫不允許刪除缺陷,但是當(dāng)算沒有滿足規(guī)定也有正當(dāng)理由可以違背時,有一個機制接受缺陷。接受機制要求一個人的識別要負責(zé)接受并包含接受的具體理由?杀唤邮艿娜毕菘梢员豢偨Y(jié)并列在報告中。圖2展示了具體流程。如之前所見,靜態(tài)分析包括自動化和手動任務(wù)。自動化任務(wù)直接提供一個如輸出所示的XML文件,但是手動分析的結(jié)果也必須被處理以生成一個XML文件。動態(tài)分析并不是完全自動化的。測試用例必須手動定義,但其執(zhí)行是自動的,結(jié)果被存入XML文件中。也要給數(shù)據(jù)庫提供關(guān)于度量和檢查規(guī)則的信息。