国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于Event-B的可靠Java程序自動生成方法與流程

      文檔序號:39618953發(fā)布日期:2024-10-11 13:34閱讀:14來源:國知局
      一種基于Event-B的可靠Java程序自動生成方法與流程

      本發(fā)明屬于代碼自動生成,涉及一種基于event-b的可靠java程序自動生成方法。


      背景技術:

      1、event-b是一種用于響應式系統(tǒng)的正式建模語言,也是一種正式的軟件開發(fā)方法,在這種方法中,軟件系統(tǒng)最初以非常抽象的方式構思,然后將其細化為代碼。

      2、經過驗證的event-b模型直接生成代碼,可以確保實現(xiàn)與原始驗證模型之間的一致性,這減少了人工編碼錯誤和實現(xiàn)偏差的風險,采用自動代碼生成的方式能夠減少從抽象模型到具體實現(xiàn)的手動工作量、提高開發(fā)效率,特別是在涉及復雜系統(tǒng)時。

      3、dalvandi等人[dalvandi?m,?butler?m,?salehi?fathabadi?a.?seb-cg:?codegeneration?tool?with?algorithmic?refinement?support?for?event-b[c]//formalmethods.?fm?2019?international?workshops:?porto,?portugal,?october?7–11,2019,?revised?selected?papers,?part?i?3.?springer?international?publishing,2020:?19-29.]針對event-b中順序結構的處理困難問題對其進行了改進。scheduledevent-b(簡稱seb)是event-b的擴展,它通過增加控制結構來增強模型,在精化步驟中支持控制結構的逐步引入。seb-cg是一個從seb自動生成可執(zhí)行代碼的工具,能夠將模型轉換成目標編程語言的代碼。該工具提供了通過精化推導程序算法結構的設施。工具的靈活和可配置設計使其能夠針對各種編程語言。

      4、mery和singh[singh?n?k,?singh?n?k.?eb2all:?an?automatic?codegeneration?tool[j].?using?event-b?for?critical?device?software?systems,?2013:105-141.]展示了eb2all插件工具集,它將event-b機器翻譯成幾種不同的語言:c、c++、java和c。eb2all只支持event-b語法的一小部分,用戶需要在工具支持的語法中編寫最終的event-b改進。

      5、ostroumov和tsiopoulos[ostroumov?s,?tsiopoulos?l.?vhdl?code?generationfrom?formal?event-b?models[c]//2011?14th?euromicro?conference?on?digitalsystem?design.?ieee,?2011:?127-134.]提出了從event-b模型生成vhdl代碼的ehdl工具原型。該工具支持的語法減少,用戶必須先擴展event-b模型,然后才能對其進行翻譯。wright[wright?s.?automatic?generation?of?c?from?event-b[c]//workshop?onintegration?of?model-based?formal?methods?and?tools.?2009:?14.]定義了rodin平臺的b2c擴展,將event-b模型轉換為c代碼。

      6、綜上所述,現(xiàn)有基于event-b模型的java代碼自動生成工具不足主要體現(xiàn)在以下2個方面:

      7、1、不完全自動

      8、目前的工具還未有實現(xiàn)工具自動化,仍需要用戶的主動干預。b2c擴展工具仍要求用戶分解event-b模型,并細化分配非確定性;seb要求用戶在插件中手動調整任務流程;gene-auto需在更高抽象級別驗證模型,增加額外步驟。

      9、2、受限的語法支持

      10、目前的代碼生成工具對于可執(zhí)行代碼的語法支持很少。如meb2all僅支持event-b語法的小部分子集,限制了用戶編寫最終實現(xiàn)的能力;jml2b工具轉換方向相反,不能直接驗證模型的正確性;ehdl原型工具支持event-b語法的簡化子集,但用戶需擴展模型才能翻譯。


      技術實現(xiàn)思路

      1、event-b是一種用于響應式系統(tǒng)的正式建模語言,也是一種正式的軟件開發(fā)方法,它允許以高度抽象的方式構思系統(tǒng),然后逐步將其細化為代碼,當前的event-b模型自動化生成可執(zhí)行代碼工作主要存在四個方面的不足。首先,工具的自動化程度不夠,用戶需要進行大量的手動干預,例如b2c擴展工具要求用戶分解event-b模型,細化非確定性分配;目前的代碼生成工具對于可執(zhí)行代碼的語法支持較少,eb2all僅支持event-b語法的小部分子集,jml2b工具轉換方向相反,無法直接驗證模型的正確性。這些問題嚴重影響了工具的可用性,增加了開發(fā)者的負擔。通過提升自動化水平、擴展語法支持范圍,并確保模型翻譯的完整性和準確性,才能為列車傳感器數(shù)據(jù)采集處理提供更高效、更可靠的解決方案。

      2、本發(fā)明的目的是提供一種基于event-b的可靠java程序自動生成方法,解決了現(xiàn)有技術中存在的不完全自動化以及受限的語法支持問題。

      3、本發(fā)明通過以下技術方案實現(xiàn):

      4、一種基于event-b的可靠java程序自動生成方法,采用操作符eb2prog,負責將event-b翻譯成帶jml注釋的java程序,eb2prog使用操作符eb2java獲取翻譯的java部分,使用操作符eb2jml獲取jml部分;

      5、將機器翻譯為java類,翻譯規(guī)則m為:將機器翻譯為事件的翻譯e和機器本身的翻譯兩部分,機器本身被翻譯成一個包含jml類和方法規(guī)范的java類,包括聲明的變量和所觀看的上下文的翻譯;每個事件被翻譯成一個單獨的java類,包含對機器類的對象引用。

      6、進一步,機器的java翻譯包括機器觀看的上下文中定義的載體集、常量和公理的翻譯,還包括在機器中聲明的變量和約束條件的翻譯,其中:

      7、將載體集和常量翻譯為類屬性,并限制這些屬性以進行驗證,其中載體集被翻譯為整數(shù)集合;

      8、將公理翻譯為靜態(tài)不變量;

      9、將機器變量翻譯為類屬性;

      10、將不變量翻譯成jml不變量;

      11、變動式被eb2prog翻譯成一個用于返回事件e翻譯結果的方法;

      12、輔助操作符typeof將變量或常量的類型翻譯成該類型的java表示形式,函數(shù)axiomtheoremvalue<type>返回符合機器所看到的上下文中定義的公理的類型type的值,輔助操作符pred用于翻譯謂詞及變動式,輔助操作符freevar返回變動式中自由變量的集合。

      13、進一步,事件包括初始化事件、標準事件、收斂事件或預期事件,具體翻譯規(guī)則如下:

      14、機器的初始化事件,為狀態(tài)變量賦予初始值,由eb2jml翻譯為java類構造函數(shù)和jml的后置條件,由eb2java翻譯為構造函數(shù)的主體,并作為初始化機器對象的java代碼;

      15、標準事件的翻譯規(guī)則為:java`thread`類的子類,非互斥的事件守護條件通過覆蓋`run()`方法來翻譯;互斥的守護條件采用不覆蓋`thread`類的`run()`方法的情況下翻譯并使其強制按順序執(zhí)行;翻譯事件生成的類包括對機器類實現(xiàn)的引用和以下三個方法:`guard_evt`方法用于檢測事件的守護條件是否滿足,`run_evt`方法用于模擬事件的執(zhí)行,`run()`方法則覆蓋相應的java`thread`方法;

      16、收斂事件翻譯在標準事件規(guī)則基礎上,單調減少變動式;

      17、預期事件翻譯在標準事件規(guī)則基礎上,不增加變動式。

      18、進一步,`run_evt`方法使用java并發(fā)庫中的重入鎖在`lock`和`unlock`指令中執(zhí)行。

      19、進一步,事件中參數(shù)的定義`any`結構限定的變量被翻譯為`run_evt`和`guard_evt`方法的參數(shù),`run()`方法中的`guardvalue<type>.next()`表達式返回事件的守護條件的類型為`type`的隨機值,輔助操作符`mod`計算事件動作中分配的變量集合,其中輔助操作符`mod`用于返回一個java方法可以賦值的變量集合。

      20、進一步,`run_evt`方法的jml規(guī)范有兩種情況:在第一種情況,`run()`方法中的`guardvalue<type>.next()`表達式返回類型為`type`的隨機值滿足事件的守護條件,方法的后狀態(tài)必須滿足事件動作的翻譯和變量限制的翻譯;第二種情況,`run()`方法中的`guardvalue<type>.next()`表達式返回類型為`type`的隨機值不滿足事件的守護條件,方法不得修改任何字段,確保后狀態(tài)與前狀態(tài)相同。

      21、進一步,事件主體包含確定性和非確定性賦值,一方面將非確定性和確定性賦值翻譯為jml并在jml方法的后置條件中使用,其中確定性賦值`:=`在jml中通過`ensures`關鍵字和`\old`表達式來表示;非確定性賦值`:|`在jml中通過`ensures`關鍵字和存在量詞`\exists`來表示;另一方面將非確定性和確定性賦值翻譯為java并被`any`規(guī)則用于翻譯事件的主體,`predicatevalue<type>()`返回滿足謂詞的`type`類型的值。

      22、更進一步,事件主體中的同時賦值會單獨翻譯,然后將結果合并,賦值會同時被翻譯成jml和java。

      23、相對于現(xiàn)有技術,本發(fā)明具有的有益效果為:

      24、本發(fā)明通過將event-b模型完整地翻譯成帶jml注釋的java代碼,確保在保持事件和機器語義一致性的前提下,實現(xiàn)了抽象到代碼的無縫過渡。通過引入自動化的翻譯規(guī)則與輔助操作符,可以高效地將event-b事件中的復雜結構,包括守護條件、變量、同時賦值等邏輯準確地翻譯為java,并利用jml注釋來驗證生成的java代碼與原始event-b模型的規(guī)范一致。該方法使用戶能夠在系統(tǒng)設計階段全面驗證模型的正確性,確保最終的代碼實現(xiàn)符合設計意圖,為開發(fā)安全關鍵型系統(tǒng)提供了可靠的技術基礎。

      當前第1頁1 2 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1