欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

保護程序的方法

文檔序號:9383071閱讀:417來源:國知局
保護程序的方法
【專利說明】保護程序的方法
[0001] 本發(fā)明涉及一種保護程序的方法及實施了該方法的計算機軟件產品。
[0002] 保護程序在本文件中應理解為,為了保證與規(guī)格,或者運行限制,或者其他被證明 是正確的(本地)屬性(如下文定義)一致而編寫的程序。
[0003] 因此,例如,在系統(tǒng)自動控制設備中,比如一枚火箭,一輛火車......為了避免危 及其系統(tǒng)或環(huán)境,確保程序完全在其運行范圍內執(zhí)行是必要的。
[0004] 這在復雜的系統(tǒng)中特別重要因為,由于其復雜性,很難通過專家分析。這種困難可 能由ArianV火箭首次飛行期間發(fā)生的意外所說明,經過鑒定,發(fā)現(xiàn)是由于推力發(fā)動機控制 電腦的問題.事實上,后者是為上一代威力較小,加速度強度也較小的ArianeIV火箭開發(fā) 的。此計算機轉移到ArianeV火箭上沒有考慮這個新的參數(shù),導致電腦接收加速信息,加速 信息觸發(fā)了意料之外的寄存器溢出及引擎控制系統(tǒng)的故障。
[0005] 因此,對于執(zhí)行域以及對于在該域執(zhí)行被完美定義,歸檔及認證對于嚴苛的系統(tǒng) 對于顯得非常重要。
[0006]目前采用的技術主要是基于一階邏輯或高階邏輯的數(shù)學規(guī)則,例如,質量成本 (Coq)。他們存在于使用軟件工具以使用特定的編程語言試圖在數(shù)學意義上證明。這些軟 件程序在文獻中被稱為〃檢驗器"。
[0007] 這些檢驗器的運行根本上主要在于將學習程序轉錄為待證邏輯判斷(如"證明責 任")。另一種可能性是為了描述程序,使用邏輯語言本身,如Coq,表示屬性和證明,從而避 免了轉化為邏輯斷言的需要。
[0008] 然而,在算法意義上檢索邏輯證據的復雜性的提高速度大于研究程序的復雜性。 在計算機輔助證明時,為了引導檢驗器,用戶發(fā)現(xiàn)很難使用直覺良好的運行程序。這些技 術因此,在等嚴苛和復雜的程序上運行時,例如控制計劃和/或復雜的系統(tǒng),涉及安全的工 作,變得非常困難并且造成時間和資源的大量消耗。因此,當該需求變得越來越重要,并且 研究團隊已經在這個課題上工作了至少30年,這些證明技術仍然維持在實驗室或者被用 于對運行安全具有極端苛刻要求的領域,如航天、鐵路。因此,在本案例中,一個軟件工程使 得將這些程序切分成可以由檢驗器管理的組件。
[0009] 其因此有利于獲得一種可以在復雜程序上采納使用的保護程序的方法。從現(xiàn)在開 始,〃證明〃一詞(或〃形式證明〃)將作為〃形式驗證〃的同義詞使用,如,基于常規(guī)方法 的驗證,以及單詞"邏輯驗證"在經典邏輯系統(tǒng)中(predicate邏輯、高階邏輯)的特殊情況。 [0010] 為了解決一個或多個上述的缺點,一種保護第一程序的方法,該第一程序包含一 定數(shù)量的程序點,以及與程序點相關的演化規(guī)則,并且一程序點到另一程序點定義段落,包 括:
[0011] ?-多退出退出情況的定義,以及,當?shù)诙绦蛟诘谝怀绦虻亩x上被使用/請 求,就每一個第二程序的退出,朝向第一程序特定程序點的一分支的定義,或者一個分支不 可能性的聲明;以及
[0012] ---組待證屬性的定義,每個關聯(lián)到一個或多個第一程序的基本元素,所述屬性 組包含一個作為特定屬性的不可能分支;
[0013] ?該屬性組的形式證明的建立。
[0014] 因此,通過使用本質上包含在程序中的路徑邏輯,使降低檢驗器將要執(zhí)行的片段 的尺寸及復雜程度成為可能。
[0015] 這些特征或特定的實施例可以單獨或組合使用,如下:
[0016] ?演化規(guī)則、退出點和定義執(zhí)行軌跡或邏輯軌跡的樹形結構的分支(即定義樹狀 結構的執(zhí)行跟蹤或邏輯軌跡(如每個邏輯軌道代表一通常有限的執(zhí)行軌跡組與案例與分 支的同樣選擇相對應),一檢驗器使用已創(chuàng)建的樹形結構在第一程序的點傳播限制,并且使 用程序中明示或暗示同余的傳遞閉包(如可傳遞同余閉包)用以證明至少一個的第一個程 序的屬性(即為了保護第一程序);
[0017] ?第一程序包含一個循環(huán),一檢驗器,自動在一個程序點引導其通過使用與潛在近 似版本的執(zhí)行路線生成一個常量,其中代表循環(huán)執(zhí)行的部分已經被類似的步驟代替;
[0018] ?-個分支,聲明為"不可能"通過分析通往轉移的樹形結構路線圖得以證明
[0019] ?對第一程序的保護是基于對第三程序展示與第一程序的功能區(qū)別,和(或)不只 是單純的第一程序的摘要;
[0020] ?建立在至少一個第一程序的本地屬性(如與程序組件相關聯(lián)的屬性,包括潛在 的程序本身)以及至少一個第三程序的本地屬性之間的定向對應,即充分關系,這樣證明 一第一程序的一本地屬性,只要該對應關系存在,與第一程序屬性對應的第三程序的屬性 組的證明就是充分的。
[0021] ?第三程序被修改轉化,使它能夠獲得第一程序,這樣第一程序的保護是基于第三 程序的保護的;
[0022] ?第一程序被修改轉化,使它能夠獲得第三程序,這樣第一程序的保護是基于第三 程序的保護的;
[0023] ?第一程序被修改轉化,使它能夠獲得第三程序,并且定向于第一和第三程序至少 一個相關屬性之間建立多個充分關系;
[0024] ?第一程序被修改轉化,使它能夠獲得第三程序,并且在第一和第三程序至少一個 相關屬性之間建立多個充分關系;
[0025] ?至少一個第三程序的變量通過取自于第一程序變量的(邏輯)值被實例化,用 以在第一程序和第三程序之間創(chuàng)建至少一個充分關系;或作為一種保護第一程序的方法和 (或)
[0026] ?至少一個屬性是由第四程序定義的。
[0027] 根據本發(fā)明的第二方面,一種計算機軟件產品,包括當所述計算機軟件產品在計 算機上運行時實現(xiàn)上述方法的軟件說明。
[0028] 在特定實施例中,可單獨使用或組合使用;
[0029] ?退出退出情況其包括一用戶界面,采用了允許用戶定義退出退出情況和關聯(lián)分 支以及待證屬性的;
[0030] ?該用戶界面被調整為可以定義一不可能分支;和(或)
[0031] ?用戶界面被調整為可以定義一特定分支的入口條件以及限制退出退出情況。
[0032] ?該工具以利用一些不可能轉換或本地已被證明的屬性的事實的一方法生成執(zhí)行 代碼,以最優(yōu)化生成的代碼。
[0033] 本發(fā)明將在閱讀以下通過舉例和引用配套圖的說明后被更好的理解,其中:
[0034] -圖1是一計算機系統(tǒng)實施本發(fā)明一個實施示例圖,和
[0035] -圖2是一個運行本發(fā)明一個實施例的流程圖。
[0036] 事先說明,值得注意的是,下文中,為了澄清的詞匯、術語〃程序〃或〃程序保障〃 或者"待證的程序"將專門用于指代被保護計算機軟件。其他參與或執(zhí)行保護方法步驟的 計算機軟件將被稱為〃軟件〃或者〃計算機軟件〃或者〃軟件工具"。
[0037] 參照圖1,一計算機系統(tǒng)1包括用以計算和存儲的方法3,以及人機接口設備5,通 常的屏幕類型、鍵盤和鼠標。它還包括以硬盤形式、固態(tài)硬盤或其他經典數(shù)據儲存形式的存 儲方法7。
[0038] 人機界面被調整為允許一用戶給予運行在計算機系統(tǒng)1的計算機軟件指令,并查 看該軟件所提供的分析結果。
[0039] 人機接口 5的形式為一帶有相關的工具的程序開發(fā)環(huán)境。因此,它包含文本編輯 類型、解析器、編譯器等軟件。寫在Java中的Eclipse環(huán)境就是這樣一種環(huán)境的例子。
[0040] 在保護方法的第一步驟中,步驟11,一程序在人機界面被介紹給用戶。此程序被以 經典的以包含指令的文字文件方式介紹,或者執(zhí)行一種高級語言排序控制的形式。雖然其 在此后會被表現(xiàn),某些語言相比其他語言更適合執(zhí)行該保護方法,程序可以是已經通過通 常編程語言如 C,C++,ADA,Java,Php,Erlang,Python,assembler 等編寫的。
[0041 ] 值得注意的是該方法也可以適用更多的狀態(tài)機器類型的圖形語言。
[0042] 該程序通常由一組運行命令組成,每個命令都代表性的與一個程序點關聯(lián)。這些 命令通過結構指令進行組合,例如選擇(〃if. . . then. . . else"),循環(huán)("while. . . do〃)等。 結構也可以以圖形方式表示。分支以及與程序點相關的注釋通??梢员豢紤]作為給定程序 點的演化規(guī)則。
[0043] 值得注意的,對程序的這一定義使其具有遞歸的可能:需要保護的第一程序在第 二程序等中被使用/引用。
[0044] 對于一個程序/子程序或運行的命令,運行范圍及執(zhí)行限制以及步驟13中定義的 關聯(lián)的分支。
[0045] -運行時約束包括在定義一個域中的程序,命令具有均勻的行為。例如,在一個運 行的命令或程序在除法組成的簡單的例子中,兩個域被自然的定義:正常執(zhí)行,除數(shù)等于 零。每個域是與特定的程序關聯(lián),并定義該分支后的分支。例如,正常執(zhí)行會導致以下命令 中的程序的執(zhí)行,其中該命令是根據該程序的"正常"的結構中使用,而在所述除數(shù)等于零 的情況下會導致另一種類型的分支,例如錯誤,特殊處理的分支.每個運行時約束和其相 關的分支,因此定義一個路徑規(guī)則。這通常導致定義的程序有多個退出退出情況。這樣定 義的程序,如果在第二程序中使用會因此有關聯(lián)到在第二程序分支的退出退出情況。
[0046] 這些路徑規(guī)則的定義可能以不同的方式進行。
[0047] 第一種方式存在于程序的人機界面和/或編程語言提供工具;允許用戶"手動"定 義這些路徑規(guī)則。
[0048] 第二種方式包括存在于使用庫和序列識別軟件,它將自動定義這些路徑規(guī)則。例 如,此識別軟件可搜索如上述定義的包含在程序內部的除法并且應用該路徑規(guī)則于其中。
[0049] 第三種方式,那這將最進一步說明,存在于每個程序或每個有限數(shù)量退出退出情 況的命令的定義,例如只在使用的時候選擇相關的案例(而其他的在這里被稱為不可能案 例或分支,并且分支與相關案例對應.
[0050] 在第步驟15中,案例的序列的邏輯樹狀結構被用以簡化或證明目的。樹形結構是 根據順序以及相關的分支處理執(zhí)行(案例為了一個命令或程序被提?。瑯湫谓Y構表示一 組執(zhí)行軌跡或路線或之后的一套邏輯軌跡,每條邏輯軌跡代表一個通常有限的對應相同選 擇的案例(和分支)的執(zhí)行軌跡組。任何其他證明的方式也可用于證明本地屬性或不可能 分支。
[0051] 為了重申除法的例子,關聯(lián)的樹形結構包含代表兩條執(zhí)行軌跡的弧線:正常的執(zhí) 行和錯誤執(zhí)行。
[0052] 值得注意的是,樹狀結構是考慮到程序結構邏輯而創(chuàng)建的。其優(yōu)勢在于,就純粹扁 平化的邏輯的實質上極大地限制了樹的結構復雜性。如果在例子中,在進行除法之前,程序 進行一次除數(shù)是否為零的測試,對應除數(shù)為零的錯誤處理程序弧線將不被生成,或者被刪 除,因為其"不可能"發(fā)生。
[0053] 當該程序包括一個循環(huán),則可能是一個無限的樹結構或樹結構是通過識別不循環(huán) 的路徑和重復可能由循環(huán)改變的復制變量的定義執(zhí)行軌跡的上定義一不變量來創(chuàng)造的。這 使得有可能此第二種情況下創(chuàng)建一樹結構,由圖標而非循環(huán)所定義。
[0054] 因此,有利的是,該人機界面使其能夠定義,或識別軟件定義,兩個序列之間一個 不可能的過渡。實際上,這使得有可能定義一個局部特征,這就是說,程序在這個執(zhí)行場所 的過渡是不可能的,而且此外允許減少樹結構考慮到沒有必要開發(fā)"不可能"的弧。同樣 地,人們可以表達和證明一個過渡是不可能的,可以聲明或證明更一般地一個子圖是不可 能的(這就是說,它不能使用),以及一個也可以注釋局部特性的更典型的程序(例如弗洛 伊德),其必須得到證明。
[0055] 在除法的例子中,有趣的是,用戶界面使得能夠定義,或該識別軟件定義特定節(jié)目 片段的進入條件,以限制上述片段的執(zhí)行域。
[0056] 在步驟17中,如果還有一些有待證明的特征,特別是聲明不可能和不能的分支驗 證,則該方法返回到步驟11,或者完成哪些沒有定義的執(zhí)行路徑,或修改程序的邏輯從而使 禁止模式不能出現(xiàn)。
[0057] 為了進行這項樹結構的分析,試驗應使用創(chuàng)建的樹結構在程序點傳送限制條件, 并使用傳遞閉包和一致性的特性或刪除無用分支功能并帶來,或促成,該程序順利運行的 形式證明。
[0058] 值得注意的是該程序完全安全,有必要證明/表明,對于每個已被聲明為"不可 能"的圖像的轉換無論在什么執(zhí)行條件下都不能在程序執(zhí)行中采用。在緊要時刻導致"不 可能"的轉換的路徑的分析通??蔀樽C明其的一方法。如果使用其他更經典局部特性,如不 變量時,它們也自然應該證明。
[0059] 值得注意的是,當?shù)谝怀绦蛞驯槐Wo或驗證,如果要保護的程序可通過不斷的語 義轉換,比如再現(xiàn)所述第一程序的結構,進行修改,則第一個程序的驗證要被傳播到要被保 護的程序中。這可以特別用于前述識別軟件。此外,更常見,兩個程序等效為了使用一個用 于另一個的驗證是不必須的。更寬松的特性可用于該目的。
[0060] 為了更好地理解這個計算機軟件和執(zhí)行方法的操作,現(xiàn)在將使用實施例。
[0061] 1.描述性語言介紹
[0062] 為了便于理解,將推出一個稱為SM的算法描述語言。這使得很容易表達由該實施 例實現(xiàn)的不同原理成為可能。然而,值得注意的是,任何計算機語言也可作為用于本發(fā)明的 實施的基礎。
[0063] 盡管它們將以SM的語言舉例,下文描述的實施例旨在用于以非常多樣的語言或 形式編寫程序程序,無論是否是例如執(zhí)行語言、邏輯或規(guī)范語言,圖形語言。它簡單地假設, 這種語言可設置有在一定條件下的語義,例如當程序是可執(zhí)行時的操作語,但這種語言也 典型地具有邏輯性狀,例如全稱或存在量詞。碰巧的是SM語言的情況下,然而,它的各方面 既不引入也不用于這里。這里,其將被簡單地和一般假定形式化的描述(語言或形式)可 以轉化成一個如后述(第2. 1段)的帶注釋圖和潛在的呈現(xiàn)"叉狀"和"聯(lián)接"使得可以描 述并行性和/或并發(fā)性。為簡單起見,與邏輯量詞的組合將不會在這里闡述和SM同步和并 行基元將不會被引入。
[0064] 作為一個例子,SM語言的子集在此闡明使用一個FIFO隊列的一些基元,被稱為 "seq"。
[0065] 讓我們首先考慮在以下序列中定義的程序"成員":
[0066]
[0067]
[0068] 如在相反的情況下果它發(fā)現(xiàn)該元素元素和"false",程序"成員"在序列"e"搜索 一個值元素"X"并返回" true "。程序"成員"開始于將" e "的數(shù)值放于變量" f",然后掃描 "f"在搜索具有搜尋價值的第一元素中使用一循環(huán)。
[0069] I. 1退出情況
[0070] 該程序,按照慣例主要情況下,如果該元素被發(fā)現(xiàn),通常通過退出"true"中止元 素,并在相反的情況下特定退出"false"。所有的程序都有一個隱含的"ture"退出,并可能 此外(它是語言的特殊性)包括不少于所需的特定退出情況。這些退出的情況可采用所希 望的名稱。所謂的"error"的情況下被限制用于說明如后面所示的一退出或分支的假定的 不可能的性。退出情況列表(不同于所隱含的"true")在程序簽名處列出。這里,該列表 僅包括一個元素,"假"("false")。
[0071] 程序"成員"因此包括有限數(shù)量的程點(這里稱作點/標記為1,2和3,此外還沒 有真正的語法本文件為了給程序點命名/標記所被引入)。
[0072] L 2公理化隱式程序
[0073] 為了解析序列,程序"成員"使用"removeFirst"消除該序列的第一個元素,返回 到變量"y"和在變量"f"中的生成序列。"removeFirst"也是一個程序(或predicate), 且它已在另一個程序"成員"的定義中被使用。它被定義為:
[0074] public removeFirst(elt x+,seq e, seq f+)
[0075] implicit program-)[empty]
[0076] 關鍵詞《隱含》表示程序的定義是隱含的的(以某種方式不言自明的),因此不包 含顯性體如先前程序《成員》。默認情況下一個程序是明確的,并包含一個主體。
[0077] 因此這個程序對兩種情況之間區(qū)分,隱含的"真"("true")并且被認為是主要的 情況,以及在特定的情況下為"空"。直觀地,當序列為空,并且沒有元素可以從序列中去除, 將"removeFirst"的調用導致該情況并且因此退出"空"。
當前第1頁1 2 3 4 5 6 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西青区| 巢湖市| 安福县| 台江县| 罗山县| 航空| 白沙| 隆子县| 杭锦旗| 阳春市| 清涧县| 贵州省| 寿光市| 杭锦后旗| 舒兰市| 蒙山县| 靖州| 汉川市| 津南区| 龙胜| 普兰县| 新巴尔虎右旗| 罗山县| 横峰县| 钟山县| 潍坊市| 循化| 微博| 遵义市| 高碑店市| 荔波县| 浙江省| 香格里拉县| 阿城市| 江安县| 元阳县| 神农架林区| 平原县| 通化市| 海丰县| 苍山县|