<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于軟件可靠性仿真測(cè)試平臺(tái)實(shí)時(shí)技術(shù)研究

          基于軟件可靠性仿真測(cè)試平臺(tái)實(shí)時(shí)技術(shù)研究

          作者: 時(shí)間:2017-02-27 來(lái)源:網(wǎng)絡(luò) 收藏
          軟件可靠性測(cè)試是當(dāng)前軟件技術(shù)領(lǐng)域中一個(gè)比較熱門(mén)的話題,軟件可靠性對(duì)整個(gè)系統(tǒng)可靠性的影響越來(lái)越大,尤其對(duì)于航空類(lèi)系統(tǒng)軟件來(lái)說(shuō),軟件故障往往是導(dǎo)致系統(tǒng)失敗的主要原因之一。采用模擬被測(cè)目標(biāo)軟件實(shí)際運(yùn)行環(huán)境對(duì)軟件進(jìn)行測(cè)試是目前國(guó)內(nèi)外一致認(rèn)為比較理想的軟件測(cè)試方法之一。合理設(shè)計(jì)目標(biāo)軟件可靠性的運(yùn)行環(huán)境,較為真實(shí)地模擬出被測(cè)軟件的真實(shí)運(yùn)行環(huán)境,不但可以檢測(cè)到目標(biāo)軟件運(yùn)行過(guò)程中存在的故障,而且也可以保證測(cè)試結(jié)果的真實(shí)性和置信度。

          本文在介紹軟件可靠性仿真測(cè)試平臺(tái)的組成及功能的基礎(chǔ)上,以仿真器分系統(tǒng)為例,對(duì)平臺(tái)在實(shí)時(shí)測(cè)試過(guò)程中的一些實(shí)現(xiàn)技術(shù)進(jìn)行了研究。

          1 仿真測(cè)試平臺(tái)系統(tǒng)功能及組成框架

          整個(gè)仿真測(cè)試平臺(tái)采用分布式結(jié)構(gòu),由主控機(jī)分系統(tǒng)(以下簡(jiǎn)稱為主控機(jī))、仿真器分系統(tǒng)(以下簡(jiǎn)稱為仿真器)和激勵(lì)器分系統(tǒng)(以下簡(jiǎn)稱為激勵(lì)器)三個(gè)分系統(tǒng)組成,各分系統(tǒng)與被測(cè)目標(biāo)軟件的交聯(lián)關(guān)系如圖1所示。其中,主控機(jī)是測(cè)試平臺(tái)的控制中心,它負(fù)責(zé)生成原始測(cè)試數(shù)據(jù),向仿真器、激勵(lì)器分發(fā)測(cè)試用例,協(xié)調(diào)兩個(gè)分系統(tǒng)的工作,并根據(jù)測(cè)試狀況控制仿真器和激勵(lì)器的工作模式。仿真器和激勵(lì)器將主控機(jī)傳送過(guò)來(lái)的測(cè)試用例數(shù)據(jù),生成真正的目標(biāo)軟件可以接收的測(cè)試用例數(shù)據(jù)傳送給目標(biāo)系統(tǒng),同時(shí),仿真器和激勵(lì)器負(fù)責(zé)將自身工作狀態(tài)信息和從目標(biāo)系統(tǒng)得到的測(cè)試結(jié)果數(shù)據(jù)通過(guò)底層網(wǎng)絡(luò)實(shí)時(shí)或非實(shí)時(shí)地傳送回主控機(jī)。

          圖1 仿真測(cè)試平臺(tái)的交聯(lián)關(guān)系圖

          由于目標(biāo)軟件由匯編語(yǔ)言寫(xiě)成,內(nèi)部處理過(guò)程較為復(fù)雜,所以采用黑盒測(cè)試方法。目標(biāo)軟件的處理周期為25 ms,因此在實(shí)時(shí)測(cè)試過(guò)程中,需要每25 ms有一組測(cè)試用例數(shù)據(jù)由仿真器通過(guò)1553B總線,激勵(lì)器通過(guò)并口同時(shí)輸入給目標(biāo)軟件。仿真器和激勵(lì)器不僅需要每25 ms產(chǎn)生目標(biāo)軟件的輸入數(shù)據(jù),同步向目標(biāo)軟件發(fā)送數(shù)據(jù),而且仿真器還能接收目標(biāo)軟件的輸出,并且對(duì)輸出數(shù)據(jù)進(jìn)行相應(yīng)的實(shí)時(shí)處理,如結(jié)果數(shù)據(jù)的收集、保存及數(shù)據(jù)的顯示等等。由于整個(gè)測(cè)試平臺(tái)是在非實(shí)時(shí)、多任務(wù)的Win98操作系統(tǒng)上實(shí)現(xiàn)的,因此,如何利用Win98的多任務(wù)并發(fā)的特性,采用合理的任務(wù)調(diào)度策略,在任務(wù)處理周期內(nèi),按時(shí)完成各種任務(wù),并將多個(gè)任務(wù)協(xié)調(diào)一致,是整個(gè)設(shè)計(jì)過(guò)程中主要應(yīng)該解決的問(wèn)題。

          在圖1所示的平臺(tái)各分系統(tǒng)中,主控機(jī)與目標(biāo)軟件是通過(guò)仿真器形成實(shí)時(shí)閉環(huán)的。仿真器通過(guò)測(cè)試用例,實(shí)時(shí)給出目標(biāo)軟件閉環(huán)運(yùn)行所需要的交聯(lián)子系統(tǒng)發(fā)出的命令和數(shù)據(jù),使得目標(biāo)軟件能夠在較為真實(shí)的仿真任務(wù)剖面和交聯(lián)環(huán)境中運(yùn)行。因此,仿真器是仿真測(cè)試平臺(tái)中的一個(gè)重要組成部分,仿真器的實(shí)時(shí)實(shí)現(xiàn)方法是整個(gè)平臺(tái)系統(tǒng)設(shè)計(jì)的重點(diǎn)。 2 仿真器分系統(tǒng)的功能設(shè)計(jì)及實(shí)時(shí)實(shí)現(xiàn)技術(shù)

          2.1 仿真器分系統(tǒng)功能結(jié)構(gòu)

          仿真器分系統(tǒng)是個(gè)實(shí)時(shí)任務(wù)系統(tǒng),在整個(gè)測(cè)試過(guò)程的運(yùn)行模式下,需要并發(fā)處理不同的任務(wù),如數(shù)據(jù)實(shí)時(shí)存盤(pán)、提取、交互式顯示、每25 ms驅(qū)動(dòng)1553B總線等任務(wù),任務(wù)調(diào)度涉及到CPU、內(nèi)存、網(wǎng)絡(luò)、硬盤(pán)、數(shù)據(jù)結(jié)構(gòu)、I/O接口等資源,因而合理調(diào)度各個(gè)任務(wù),正確分配其所占用的系統(tǒng)資源,是仿真器測(cè)試平臺(tái)設(shè)計(jì)的關(guān)鍵之一。

          為了提高平臺(tái)系統(tǒng)的可靠性和故障快速恢復(fù)能力,仿真器采用功能模塊化設(shè)計(jì)方法。不同任務(wù)對(duì)應(yīng)的工作模塊工作相對(duì)獨(dú)立,可以隨時(shí)依據(jù)新技術(shù)對(duì)相應(yīng)模塊的軟件算法進(jìn)行更新和擴(kuò)充,這種設(shè)計(jì)易于發(fā)揮Win98的多任務(wù)的特性,提高平臺(tái)系統(tǒng)實(shí)時(shí)工作的能力。其中,任務(wù)調(diào)度管理模塊是仿真器平臺(tái)系統(tǒng)的核心,其他各功能模塊的運(yùn)行都是在管理調(diào)度模塊的統(tǒng)一管理控制下完成的。它與其他任務(wù)的功能模塊之間的邏輯調(diào)用關(guān)系如圖2所示。

          圖2 任務(wù)調(diào)度管理模塊調(diào)用關(guān)系

          在仿真器設(shè)計(jì)中,除了必要的網(wǎng)卡(和主控機(jī)連接)和MBI卡(和目標(biāo)系統(tǒng)連接)等硬件設(shè)備以外,仿真器的各項(xiàng)功能均是通過(guò)軟件來(lái)完成的,因而系統(tǒng)軟件設(shè)計(jì)中采用合理的調(diào)度策略,避免操作系統(tǒng)的缺陷,以實(shí)現(xiàn)仿真器的功能。

          2.2 仿真器調(diào)度模塊的設(shè)計(jì)

          仿真器對(duì)于各類(lèi)任務(wù)采用時(shí)間、事件以及數(shù)據(jù)驅(qū)動(dòng)相結(jié)合的調(diào)度原則進(jìn)行控制管理。為了提高系統(tǒng)的實(shí)時(shí)性和適應(yīng)性,采用了動(dòng)態(tài)和靜態(tài)調(diào)度策略相結(jié)合、任務(wù)發(fā)生的周期和優(yōu)先級(jí)相結(jié)合的調(diào)度方式。

          在調(diào)度框架中集中不同的調(diào)度策略。在運(yùn)行模式下:系統(tǒng)測(cè)試工作正常,則對(duì)于周期性的實(shí)時(shí)任務(wù)采用靜態(tài)生成的調(diào)度策略;在系統(tǒng)發(fā)生故障時(shí),則采用臨時(shí)的動(dòng)態(tài)調(diào)度策略,它根據(jù)系統(tǒng)的運(yùn)行狀況,實(shí)時(shí)加入動(dòng)態(tài)任務(wù),并根據(jù)動(dòng)態(tài)任務(wù)的級(jí)別,決定該任務(wù)是立即執(zhí)行還是按順序執(zhí)行。隨著故障的排除,取消該任務(wù),系統(tǒng)重新恢復(fù)到先前的調(diào)度策略。 仿真器根據(jù)任務(wù)運(yùn)行占用時(shí)間的不同,以不同速率來(lái)調(diào)度不同模塊,滿足實(shí)時(shí)驅(qū)動(dòng)的要求。采用優(yōu)先級(jí)調(diào)度和分時(shí)調(diào)度相結(jié)合的方式:優(yōu)先級(jí)調(diào)度方式即調(diào)度模塊對(duì)于每一項(xiàng)任務(wù)都賦予了嚴(yán)格的優(yōu)先級(jí),按優(yōu)先級(jí)的次序從高到低執(zhí)行;分時(shí)調(diào)度方式是采用時(shí)間片輪轉(zhuǎn)的方式來(lái)執(zhí)行各個(gè)任務(wù),這種調(diào)度方式多是在終止模式下采用(或在運(yùn)行模式下,系統(tǒng)已經(jīng)完成短周期的任務(wù),還留有時(shí)間余量的情況下)。例如,對(duì)于1553B數(shù)據(jù)驅(qū)動(dòng)和交聯(lián)數(shù)據(jù)生成等短周期任務(wù)在每25 ms定時(shí)到時(shí)串行化執(zhí)行,被賦予了較高優(yōu)先級(jí),而對(duì)于顯示和記錄數(shù)據(jù)等長(zhǎng)周期任務(wù)分時(shí)執(zhí)行或交叉執(zhí)行,被賦予了較低優(yōu)先級(jí),以保證能正常驅(qū)動(dòng)MBI卡。

          根據(jù)上述設(shè)計(jì),在實(shí)時(shí)測(cè)試過(guò)程中,仿真器的實(shí)時(shí)調(diào)度層次模型如圖3所示。

          圖3 RUN()模式下實(shí)時(shí)任務(wù)調(diào)度模型示意圖

          3 結(jié)束語(yǔ)

          本文以實(shí)時(shí)測(cè)試某航空軟件可靠性為背景,介紹了仿真器在仿真測(cè)試平臺(tái)中的作用。按照模塊化和可擴(kuò)充的設(shè)計(jì)思想,給出了仿真器功能結(jié)構(gòu)組成;并且著重介紹了仿真器的任務(wù)調(diào)度管理模塊的設(shè)計(jì)思想,針對(duì)具體任務(wù)和系統(tǒng)工作模式,提出了集成動(dòng)態(tài)調(diào)度策略;對(duì)于優(yōu)先+級(jí)的調(diào)度方式,采用了優(yōu)先級(jí)浮動(dòng)的原則。另外,給出了實(shí)時(shí)網(wǎng)絡(luò)實(shí)現(xiàn)的方法,討論了圖形實(shí)時(shí)顯示的可行性,利用WinDriver實(shí)現(xiàn)了在Win98下對(duì)硬件MBI卡的直接驅(qū)動(dòng)。實(shí)驗(yàn)結(jié)果表明,上述調(diào)度思想與相關(guān)技術(shù)綜合運(yùn)用,很好地滿足了仿真器系統(tǒng)工作的實(shí)時(shí)性。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();