亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

源代碼轉換方法和源代碼轉換程序的制作方法

文檔序號:6361363閱讀:905來源:國知局
專利名稱:源代碼轉換方法和源代碼轉換程序的制作方法
技術領域
本發(fā)明涉及源代碼轉換方法和源代碼轉換程序,特別涉及在軟件的模型檢查中, 為了降低用模型檢查器的輸入語言記載檢查代碼的成本,而使用計算機將軟件的源代碼轉 換為檢查代碼的方法。
背景技術
近年來,軟件系統(tǒng)在一般社會中普及,對軟件要求的可靠性變得非常高,另一方 面,軟件一個勁兒地復雜化和大規(guī)?;ㄟ^手工作業(yè)的檢查和測試進行的品質保障變得 非常困難。
模型檢查技術例如是非專利文獻I中公開的方法,是如下所述的技術用特定模 型檢查器的輸入語言描述軟件的行為,執(zhí)行特定模型檢查器,由此遍歷上述軟件可能成為 的狀態(tài)檢查上述軟件是否滿足要具有的性質。根據(jù)非專利文獻I中公開的方法,用稱為 Promela的輸入語言描述軟件的行為,輸入稱為SPIN的模型檢查器,由此實施檢查。
模型檢查技術是對于一個勁兒地復雜化和大規(guī)模化的軟件的品質保障有前途的 技術,但為了遍歷軟件可能成為的狀態(tài)進行檢查,在大規(guī)模的軟件中,會發(fā)生要檢查的狀態(tài) 數(shù)量龐大的稱為狀態(tài)爆炸的現(xiàn)象,引起處理所需的時間計算量成為現(xiàn)實中不能容許的大小 的現(xiàn)象、或處理所需的空間計算量超過處理使用的計算機中裝載的存儲區(qū)域的現(xiàn)象的雙方 或一方,可能不能夠完成檢查。
為了對應狀態(tài)爆炸,對源代碼或檢查代碼進行稱為抽象化的處理,將狀態(tài)數(shù)削減 至能夠檢查的范圍。抽象化例如是選擇執(zhí)行語句的分支條件的簡略化。因為抽象化,可能 產(chǎn)生本來不存在的執(zhí)行路徑、或者存在的執(zhí)行路徑消失,所以對檢查代碼的檢查結果呈現(xiàn) 的軟件的性質與本來的軟件的性質可能產(chǎn)生差異。因此,優(yōu)選鑒于要對軟件檢查的性質,在 研究抽象化的水平的基礎上,應用抽象化。
進而,模型檢查技術中,用特定模型檢查器的輸入語言描述檢查對象的軟件的工 作量較大,可能成為實用上的問題。圖11中表示專利文獻I中公開的源代碼轉換裝置的一 例。根據(jù)專利文獻I中公開的方法,用翻譯映射表將源代碼轉換為用特定模型檢查器的輸 入語言書寫的檢查代碼(步驟910 940)。根據(jù)專利文獻I中公開的方法,用與上述轉換不 同的由用戶定義的環(huán)境模型,利用上述特性模型檢查器對檢查代碼進行檢查(步驟975、步 驟 950 970)。
此外,模型驅動型開發(fā)是軟件的開發(fā)技術之一。模型驅動型開發(fā)是將軟件的設計 信息描述為模型,對于該模型用轉換操作細化,由此進行軟件開發(fā)的技術。例如,模型驅 動型開發(fā)中,模型的形式和含義由非專利文獻2中公開的方法即MOF描述的元模型(meta model)規(guī)定,用非專利文獻3中公開的方法即QVT描述使模型細化的轉換規(guī)則,用非專利文 獻4中公開的方法即OCL進行關于模型的一致性和健全性的約束的描述和驗證,用非專利 文獻5中公開的方法即M0FM2T根據(jù)模型生成源代碼。
其中,模型檢查技術中的“模型”與模型驅動型開發(fā)中的“模型”是相互獨立的概念,一般沒有與數(shù)據(jù)結構和含義等相關的共通性。
先行技術文獻
專利文獻
專利文獻1:日本特開2000-181750號公報
非專利文獻
非專利文獻I Gerard J. Holzmann, 〃The SPIN Model Checker:Primer and Reference Manual", Addison-Wesley Professional, 2003, ISBN:978-0321228628
非專利文獻2:The Object Management Group, ^Meta Object Facility(MOF) Core Specification' formal/06-01-01, January 2006, http://www. omg. org/spec/ M0F/2. 0/PDF
非專利文獻3:The Object Management Group, "Meta Object Facility (MOF) 2. OQuery/ View/Transformation Specification", formal/2008-04-03, April, 2008, http://www. omg. org/ spec/QVT/1. 0/PDF
非專利文獻4 :The Object Management Group、"Object Constraint Language", formal/2006-05-01, May2006, http://www. omg. org/spec/0CL/2. 0/PDF
非專利文獻5:The Object Management Group, ^MOF Model to Text Transformation Language, vl. 0〃,formal/2008-01-16, January 2008, http ://www. omg.org/spec/ M0FM2T/1. 0/PDF發(fā)明內容
發(fā)明要解決的課題
為了有效地實施用模型檢查對軟件可靠性的確保,需要用根據(jù)源代碼自動生成用模型檢查器的輸入語言描述的檢查用代碼等的方法,減少用于得到檢查用代碼的工作量, 并且需要對于軟件的規(guī)格和設計,以模型檢查器的遍歷檢查在現(xiàn)實的時間計算量和空間計算量中結束的方式使其抽象化。
但是,根據(jù)專利文獻I中公開的方法,存在以下課題(1)難以變更抽象化的水平,(2)對軟件設計變更的追隨成本較高,(3)用不同的模型檢查器檢查時的成本較高。
關于上述課題(1),根據(jù)專利文獻I中公開的方法,翻譯映射表的變更,僅限定于源程序的修改等新類型的命令被導入源代碼內的情況。因此,用戶變更抽象化的水平的方法,限定于對轉換前的檢查對象的源代碼施加修正的方法、對轉換后的用特定模型檢查器的輸入語言書寫的檢查代碼施加修正的方法、以及對環(huán)境模型施加修正的方法,無論哪一種方法,用戶都要花費較大的工作量。
關于上述課題(2),根據(jù)專利文獻I中公開的方法,發(fā)生使用的庫(library)的變更等變更時,需要進行翻譯映射表的修正和環(huán)境模型的修正。但是,翻譯映射表由從上述源代碼直接轉換為上述檢查代碼的映射表元素構成,且環(huán)境模型用特定模型檢查器的輸入語言書寫,所以難以保持一致性地進行修正以追隨設計變更。
關于上述課題(3),根據(jù)專利文獻I中公開的方法,為了用不同的模型檢查器進行檢查,需要進行翻譯映射表的修正和環(huán)境模型的修正。但是,翻譯映射表由于從上述源代碼直接轉換為上述檢查代碼的映射表元素構成,以及環(huán)境模型用特定模型檢查器的輸入語言書寫,所以需要對翻譯映射表和環(huán)境模型全部修正,需要較大的成本。
此外,存在用戶一側要管理檢查水平與狀態(tài)數(shù)的權衡的需求。即,復雜的系統(tǒng)的檢 查中,容易發(fā)生狀態(tài)爆炸,不能夠完成檢查。此時,存在與不能進行任何檢查相比,優(yōu)選即使 若干降低水平也能夠完成檢查的情況。例如,存在僅在循環(huán)執(zhí)行時發(fā)生的特定的錯誤的情 況下,通過除去該循環(huán),雖然不能夠檢測特定的錯誤,但能夠大幅削減狀態(tài)數(shù)。
本發(fā)明鑒于現(xiàn)有技術的課題,目的在于提供一種能夠靈活的對應抽象化的水平等 的源代碼轉換方法和源代碼轉換程序。
用于解決課題的方法
技術領域
本發(fā)明的代表性的內容如下所述。源代碼轉換裝置的源代碼轉換方法,特征在于, 包括輸入軟件的源代碼的步驟;輸入不同的多個轉換規(guī)則的步驟;用上述不同的多個轉 換規(guī)則將上述源代碼轉換為用驗證工具的輸入語言描述的檢查代碼的步驟。
發(fā)明效果
根據(jù)本發(fā)明,具有輸入分割為細粒度的多個轉換規(guī)則的接口。因此,用戶對抽象化 水平的變更,容易通過選擇輸入與檢查對象的源代碼對應的不同的多個轉換規(guī)則的操作實 現(xiàn)。


圖1是用于說明本發(fā)明的基本概念的圖。
圖2是說明本發(fā)明的源代碼轉換處理中的轉換規(guī)則的輸入接口的圖。
圖3A是表示本發(fā)明的第一實施方式的源代碼轉換系統(tǒng)的結構例的圖。
圖3B是表示圖3A的轉換系統(tǒng)中的源代碼轉換裝置的結構例的圖。
圖4是表示第一實施例的處理流程的圖。
圖5A是表示對源代碼轉換裝置的輸入操作的一例的圖。
圖5B是表示對源代碼轉換裝置的輸入操作的其他例的圖。
圖6是說明源代碼轉換裝置的動作的圖。
圖7是更加詳細地說明源代碼轉換的流程的圖。
圖8A是表示模型的抽象化的一例的圖。
圖8B是表示模型的抽象化的一例的圖。
圖9是表示本發(fā)明的第二實施例的源代碼轉換裝置的處理流程的例子的圖。
圖10是詳細說明本發(fā)明的第三實施例中的驗證轉換的妥當性的流程的圖。
圖11是表示現(xiàn)有例的源代碼轉換裝置的一例的圖。
具體實施方式
本發(fā)明中,用不同的多個轉換規(guī)則將檢查對象的源代碼轉換為用模型檢查器的輸 入語言描述的檢查代碼。上述不同的多個轉換規(guī)則,將一系列處理分割為細粒度,該一系列 處理是將檢查對象的源代碼轉換為用模型檢查器的輸入語言描述的檢查代碼、抽象化的一 系列處理,通過組合使用多個轉換規(guī)則,實現(xiàn)從上述源代碼到上述檢查代碼的轉換。
本發(fā)明中,將一系列處理分割為細粒度,該一系列處理是將檢查對象的源代碼轉 換為檢查代碼的一系列處理,包括抽象化處理,將分割后的結果稱為“轉換規(guī)則”。用本發(fā)明實現(xiàn)的源代碼轉換裝置,具有在將源代碼轉換為檢查代碼時,用于由用戶選擇并輸入不同 的多個轉換規(guī)則的接口。上述轉換規(guī)則通過從事先存儲在源代碼轉換裝置內部的多個轉換 規(guī)則中選擇、以及用戶描述中的任一個方式輸入。
此外,本發(fā)明中,轉換規(guī)則可以分類為轉換為不依賴上述源代碼的描述語言的具 有泛化(一般化)的程序信息的形式(泛化模型)的實現(xiàn)-泛化轉換規(guī)則,對泛化模型抽象化 的抽象化轉換規(guī)則,將泛化模型轉換為模型檢查器的描述語言的泛化-檢查轉換規(guī)則。換 言之,不同的多個轉換規(guī)則,可以分類為將源代碼轉換為不依賴于特定的編程語言的形式 的中間形式的第一轉換規(guī)則,對上述中間形式進行抽象化處理的第二轉換規(guī)則,從上述中 間形式轉換為上述檢查代碼的第三轉換規(guī)則。從源代碼到檢查代碼的轉換,通過連續(xù)進行 用實現(xiàn)-泛化轉換規(guī)則將源代碼轉換為泛化模型的步驟、用抽象化轉換規(guī)則對上述泛化模 型進行抽象化的步驟、用泛化-檢查轉換規(guī)則將上述泛化模型轉換為檢查代碼的步驟這三 個步驟實現(xiàn)。換言之,從源代碼到檢查代碼的變化,通過連續(xù)進行分別輸入I個以上的上述 第一、第二、第三轉換規(guī)則的步驟、用上述第一轉換規(guī)則將軟件的源代碼轉換為上述中間形 式的步驟、用上述第二轉換規(guī)則對用上述中間形式表現(xiàn)的軟件進行抽象化的步驟、用上述 第三轉換規(guī)則將上述中間形式轉換為用驗證工具的輸入語言描述的驗證用代碼的步驟這 三個步驟實現(xiàn)。
此外,本發(fā)明中,在將檢查對象的源代碼轉換為檢查代碼的一系列處理中,內部保 存的信息(模型)的形式由元模型定義。上述模型可以分類為具有與檢查對象的源代碼對 應的信息的實現(xiàn)模型;上述泛化模型;和具有與模型檢查器的描述語言對應的信息的檢查 模型。實現(xiàn)模型由作為其元模型的元實現(xiàn)模型定義,泛化模型由作為其元模型的元泛化模 型定義,檢查模型由作為其元模型的元檢查模型定義。上述各元模型,具有與數(shù)據(jù)結構的定 義和數(shù)據(jù)中包括的元素間的約束相關的信息。
以下參照附圖詳細說明本發(fā)明的實施方式。
首先,參照圖1、圖2說明本發(fā)明的基本概念。本發(fā)明中,如圖1所示,對于源代 碼0001,在源代碼轉換處理裝置1000中,進行組合了多個轉換規(guī)則0002的轉換處理,由 此轉換為適合現(xiàn)有模型檢查裝置的檢查代碼0005。即(a)將“轉換”分割為細粒度,打包 (package)為多個“轉換規(guī)則” 0002的組合,由此實現(xiàn)靈活的轉換。(b)用戶(檢查者)輸入 檢查對象的源代碼0001,選擇與對象的源代碼和檢查水平相應的“轉換規(guī)則”0002,得到期 望的檢查代碼0005。
列舉本發(fā)明中的“轉換規(guī)則”的例子如下。
(a)單純的語法轉換
將“C語言的條件分支(if語句、Switch語句)”轉換為“檢查代碼的條件分支(if 語句),,
將“C語言的循環(huán)語句(for語句、while語句)”轉換為“檢查代碼的循環(huán)(Do語 句),,
(b)外部環(huán)境的模型化
將“數(shù)據(jù)讀入”置換為“隨機輸入”
(C)抽象化
“除去循環(huán)”
“簡化條件”
用圖2說明本發(fā)明的源代碼轉換處理中的轉換規(guī)則的輸入接口。
根據(jù)本發(fā)明,通過具有輸入分割為細粒度后的多個轉換規(guī)則0002的接口,可以用 選擇、輸入多個不同的轉換規(guī)則0002的操作容易地實現(xiàn)用戶對抽象化水平的變更。即,用 戶對抽象化水平的變更,可以通過與域(domain)信息、要檢查的性質、檢查水平的信息(抽 象化對性質的影響)相應地,由用戶選擇調用多個不同的轉換規(guī)則0002,輸入到源代碼轉換 處理裝置1000的操作而容易地實現(xiàn)。由此,可以解決抽象化水平的變更困難的課題。
根據(jù)本發(fā)明,包括用不同的多個轉換規(guī)則0002將檢查對象的源代碼0001轉換為 用模型檢查器的輸入語言描述的檢查代碼0005的流程。上述不同的多個轉換規(guī)則,可以分 類為實現(xiàn)-泛化轉換規(guī)則、抽象化轉換規(guī)則、泛化-檢查轉換規(guī)則,包括階段性地進行轉換 的流程。追隨檢查對象的源代碼的設計變更時,僅對與變更相關的轉換規(guī)則進行變更即可, 變更可以抑制在最小限度。此外,分別用元模型定義實現(xiàn)模型、泛化模型、檢查模型,施加約 束,由此能夠驗證使用轉換規(guī)則的轉換結果沒有錯誤。由此,能夠防止因為通過組合細粒度 的轉換規(guī)則實現(xiàn)將檢查對象的源代碼邊抽象化邊轉換為檢查代碼的一系列處理而產(chǎn)生的 轉換規(guī)則的驗證成本增大。
此外,為了用不同的檢查工具進行檢查,在用上述檢查工具的形式輸出時,僅生成 元檢查模型和泛化-檢查轉換規(guī)則即可,生成部分可以抑制在最小限度。由此,可以解決用 不同的模型檢查器進行檢查時的成本較高的課題。
(實施例1)
接著,參照圖3A至圖8說明本發(fā)明的第一實施例的源代碼轉換裝置和轉換處理方法。
圖3A是表示第一實施例的包括源代碼轉換裝置的源代碼轉換系統(tǒng)的結構例的 圖。本發(fā)明的實施方式中應用的源代碼轉換裝置1000,是將檢查對象的源代碼0001轉換為 檢查代碼0005的裝置,具有輸入部1100、轉換處理部1200、輸出部1300、存儲部1400、控制 部1500。2000表示模型檢查工具,3000表示檢查結果。
圖3B中表示源代碼轉換裝置1000的結構例。輸入部1100具有源代碼輸入部1101 和轉換規(guī)則輸入部1102。轉換處理部1200具有模型構建部1201、實現(xiàn)-泛化模型轉換部 1202、抽象化模型轉換部1203、和泛化-檢查模型轉換部1204。輸出部1300具有檢查代碼 輸出部1301。存儲部1400具有轉換規(guī)則數(shù)據(jù)庫1401、元模型數(shù)據(jù)庫1402和輸出規(guī)則數(shù)據(jù) 庫1403??刂撇?500控制源代碼轉換裝置1000整體的處理。
源代碼轉換裝置1000例如作為在I臺計算機或者通過網(wǎng)絡連接的多臺計算機上 工作的程序實施。源代碼0001和轉換規(guī)則集合0002,例如通過從計算機上的存儲裝置中 讀入的方法、以及用計算機上連接的輸入設備直接輸入的方法等方法輸入。此外,檢查代碼 0005例如通過對計算機上的存儲裝置輸出的方法、以及在計算機的顯示器上顯示的方法輸 出。
輸入部1100進行接受由用戶輸入的數(shù)據(jù)、將輸入的數(shù)據(jù)向轉換處理部1200供給 的處理。輸入部1100接受關于源代碼0001的信息,和關于分割為細粒度后的多個轉換規(guī) 則、即“轉換規(guī)則集合”0002的信息,向轉換處理部1200供給。在某個實施方式中,輸入部 1100也可以接受關于用戶對轉換處理部的驅動和控制、輸出部的驅動和控制的指示。
轉換處理部1200從輸入部供給源代碼0001的信息、以及要應用于源代碼0001的 轉換規(guī)則集合0002的信息,進行對源代碼0001用轉換規(guī)則集合0002進行轉換的處理,將 轉換結果的信息供給到輸出部1300。某個實施方式中,也可以是從輸入部供給的關于轉換 規(guī)則集合0002的信息,僅包括指示存儲部中保存的轉換規(guī)則的識別信息,使用上述識別信 息從存儲部1400取出轉換規(guī)則集合0002的實體用于轉換。
轉換處理部1200具有模型構建部1201、實現(xiàn)-泛化模型轉換部1202、抽象化模型 轉換部1203和泛化-檢查模型轉換部1204。本實施方式中,轉換處理部1200通過使用元 模型和轉換規(guī)則的模型轉換,將源代碼信息1001轉換為檢查模型1008。元實現(xiàn)模型1002、 元泛化模型1003和元檢查模型1004,例如用非專利文獻2中記載的MOF描述。此外,例 如用非專利文獻3中記載的QVT描述實現(xiàn)-泛化轉換規(guī)則1005、抽象化轉換規(guī)則1006、泛 化-檢查轉換規(guī)則1007,進行模型的轉換。上述轉換中,也可以是與已舉例表示的方法不同 的模型轉換方法,或者混雜多個方法。
此外,某個實施例中,也可以使實現(xiàn)-泛化模型轉換部1202、抽象化模型轉換部 1203和泛化-檢查模型轉換部1204不相互獨立,而是用同一部位進行,進而,對于實現(xiàn)模 型1205、泛化模型1206、檢查模型1008,也可以不個別地準備元實現(xiàn)模型1002、元泛化模型 1003和元檢查模型1004,而是用單一的元模型定義實現(xiàn)模型1205、泛化模型1206和檢查模 型1008。此外,某個實施例中,對于元實現(xiàn)模型1002、元泛化模型1003、元檢查模型1004,也 可以用多個方式分別定義實現(xiàn)模型1205、泛化模型1206、檢查模型1008的形式和約束。例 如,各元模型在上述MOF的定義外,也包括非專利文獻4中記載的用OCL記載的約束條件, 進行模型的轉換時,可以是進行是否滿足約束條件的驗證的方法。
模型構建部1201從源代碼輸入部1101接受源代碼信息1001,轉換為實現(xiàn)模型 1205。實現(xiàn)模型1205的形式由作為其元模型的元實現(xiàn)模型1002定義。實現(xiàn)模型1205為 了最大限度得到本發(fā)明的效果,優(yōu)選具有與源代碼信息1001相互轉換所需的充分的信息, 但根據(jù)某個方式,也可以在不脫離輸出檢查代碼的目的的程度上省略、追加信息。
某個實施方式中,模型構建部1201也可以用與源代碼輸入部1101不可分的方式 實現(xiàn),以不產(chǎn)生源代碼信息1001的方式進行處理。
實現(xiàn)-泛化模型轉換部1202用實現(xiàn)-泛化轉換規(guī)則1005、元實現(xiàn)模型1002、元泛 化模型1003將實現(xiàn)模型1205轉換為泛化模型1206。泛化模型具有能夠表現(xiàn)多個編程語言 中的結構和處理的數(shù)據(jù)結構。例如,泛化模型中,對于源代碼0001中的if語句和Switch 語句不加區(qū)別地表現(xiàn)為選擇執(zhí)行語句。某個實施方式中,將實現(xiàn)模型1205轉換為泛化模型 1206時,也可以僅使用實現(xiàn)-泛化轉換規(guī)則1005。此外,某個實施方式中,在實現(xiàn)-泛化轉 換規(guī)則1005包括多個轉換規(guī)則的情況下,也可以是綜合多個變化規(guī)則作為I個變化規(guī)則、 用于從實現(xiàn)模型1205對泛化模型1206轉換的方法。此外,某個實施方式中,實現(xiàn)-泛化轉 換規(guī)則1005包括多個轉換規(guī)則的情況下,也可以是通過多次反復轉換處理而進行從實現(xiàn) 模型1205向泛化模型1206的轉換的流程。
抽象化模型轉換部1203使用抽象化轉換規(guī)則1006、元泛化模型1003,進行泛化模 型1206的抽象化。抽象化的例子,有對于選擇語句中的條件式用恒真、或恒假、或非確定的 選擇置換的方法。某個實施方式中,對泛化模型1206抽象化時,也可以僅使用抽象化轉換 規(guī)則1006。此外,某個實施方式中,在抽象化轉換規(guī)則1006包括多個轉換規(guī)則的情況下,也可以是綜合多個轉換規(guī)則作為I個轉換規(guī)則用于泛化模型1206的抽象化的方法。此外,某 個實施方式中,在抽象化轉換規(guī)則1006包括多個轉換規(guī)則的情況下,也可以是通過多次反 復轉換處理而進行泛化模型1206的轉換的流程。
泛化-檢查模型轉換部1204使用泛化-檢查轉換規(guī)則1007、元泛化模型1003、元 檢查模型1004,將泛化模型1206轉換為檢查模型1008。例如,在檢查代碼0005是Promela 形式的情況下,泛化模型中表現(xiàn)為選擇執(zhí)行語句的元素,在檢查模型中表現(xiàn)為if語句。某 個實施方式中,將泛化模型1206轉換為檢查模型1008時,也可以僅使用泛化-檢查轉換規(guī) 則1007。此外,在某個實施方式中,泛化-檢查轉換規(guī)則1007包括多個轉換規(guī)則的情況下, 也可以是綜合多個轉換規(guī)則作為I個轉換規(guī)則用于從泛化模型1206向檢查模型1008的轉 換的方法。此外,某個實施方式中,在泛化-檢查轉換規(guī)則1007包括多個轉換規(guī)則的情況 下,也可以是通過多次反復轉換處理來進行從泛化模型1206向檢查模型1008的轉換的流 程。
輸出部1300使用從轉換處理部1200供給的轉換結果的信息,輸出檢查代碼0005。 某個實施方式中,輸出檢查代碼0005時,例如也可以從存儲部供給模型檢查器的描述語言 的語法息等息O
檢查代碼輸出部1301使用元檢查模型1004、從存儲部1400的輸出規(guī)則數(shù)據(jù)庫 1403取得的檢查代碼輸出規(guī)則1009,將檢查模型1008轉換為檢查代碼0005。例如,用非 專利文獻5中記載的方法,描述檢查代碼輸出規(guī)則1009,進行從檢查模型1008到檢查代碼 0005的轉換。在某個實施例中,不限于此,也可以是將檢查模型1008轉換為用于檢查的模 型檢查器的描述形式的任意方法。檢查代碼0005例如在使用SPIN作為模型檢查器的情況 下,用作為SPIN的輸入語言的Promela描述。
存儲部1400中,轉換規(guī)則數(shù)據(jù)庫1401、元模型數(shù)據(jù)庫1402、輸出規(guī)則數(shù)據(jù)庫1403 分別用關系數(shù)據(jù)庫或層次數(shù)據(jù)庫等在計算機上實現(xiàn)的任意的數(shù)據(jù)保存方式實現(xiàn)。轉換規(guī)則 數(shù)據(jù)庫1401、元模型數(shù)據(jù)庫1402、輸出規(guī)則數(shù)據(jù)庫1403不需要用相互相同的方式實現(xiàn),也 可以用相互不同的方式實現(xiàn)。此外,檢查規(guī)則數(shù)據(jù)庫1401、元模型數(shù)據(jù)庫1402、輸出規(guī)則數(shù) 據(jù)庫1403分別不需要用單一的方式實現(xiàn),例如也可以將要保有的信息的一部分保存在關 系數(shù)據(jù)庫中,將要保有的信息的一部分包括在實現(xiàn)發(fā)明的計算機程序中等,用分別不同的 方式的組合實現(xiàn)。
存儲部1400供給輸入部1100、轉換處理部1200、輸出部1300進行各處理所需的 信息。例如,存儲部1400存儲關于轉換規(guī)則的信息、關于元模型的信息、關于模型檢查器的 描述語g的語法的息。
轉換規(guī)則數(shù)據(jù)庫1401,如上所述,與元數(shù)據(jù)一同保有轉換規(guī)則。上述元數(shù)據(jù)用于 選擇轉換規(guī)則,可以是具有實現(xiàn)-泛化轉換規(guī)則1005、抽象化轉換規(guī)則1006、泛化-檢查轉 換規(guī)則1007的分別不同的信息的方法。實現(xiàn)-泛化轉換規(guī)則1005的元數(shù)據(jù),例如可以是 轉換源代碼的描述語言的種類。抽象化轉換規(guī)則1006的元數(shù)據(jù),例如可以是為了容易理 解抽象化的簡略表現(xiàn)的名稱、簡單的說明、“數(shù)據(jù)的抽象化” “處理的抽象化”等抽象化的種 類、用自然語言或字母或數(shù)值表現(xiàn)的抽象化引起的狀態(tài)數(shù)量削減效果、用自然語言或字母、 數(shù)值表現(xiàn)的抽象化對性質的影響、抽象化適用的軟件的域。泛化-檢查轉換規(guī)則1007的元 數(shù)據(jù),例如可以是指示用于檢查的模型檢查器的名稱。
以下參照圖4至圖6詳細說明輸入部1100、轉換處理部1200、輸出部1300、存儲部 1400、控制部 1500。
首先,參照圖4和圖6說明本實施例中的源代碼轉換流程的一例。本實施例中的源 代碼轉換流程,由源代碼輸入步驟S101、轉換規(guī)則輸入步驟S102、轉換規(guī)則應用步驟S103 和檢查代碼輸出步驟S104構成。該源代碼轉換流程以控制部1500為主體執(zhí)行。
首先,在源代碼輸入步驟SlOl中,用源代碼輸入部1101將源代碼0001讀入到源 代碼轉換裝置1000,轉換為源代碼信息1001。
源代碼輸入部1101接受由用戶輸入的檢查對象的源代碼0001,轉換為源代碼信 息1001。源代碼0001例如用JIS X3010-1993中公開的C編程語言描述。源代碼信息1001, 具體而言,例如用抽象語法樹的形式保存。源代碼信息1001的形式不限于抽象語法樹,也 可以是保存結構和邏輯等源代碼0001的檢查所需的信息的任意形式。
源代碼輸入步驟SlOl之后,在轉換規(guī)則輸入步驟S102中,用轉換規(guī)則輸入部1102 將分割為細粒度后的多個轉換規(guī)則即轉換規(guī)則集合0002讀入到源代碼轉換裝置1000。該 轉換規(guī)則輸入步驟S102中,定義轉換前的模型元素與轉換后的模型元素的對應關系、以及 通過轉換對轉換前的模型元素施加的操作的一方或雙方。將轉換規(guī)則集合0002讀入到源 代碼轉換裝置1000的處理,不需要通過用戶的一次操作進行,也可以通過反復操作進行。 此外,源代碼輸入步驟SlOl和轉換規(guī)則輸入步驟S102不一定要按該順序完成,只要在用源 代碼輸入部1101生成源代碼信息1001之前輸入源代碼0001,并且轉換規(guī)則輸入部1102為 了轉換規(guī)則輸入處理而要求源代碼信息1001之前輸入源代碼0001即可,因此,也可以以源 代碼輸入步驟SlOl的處理和轉換規(guī)則輸入步驟S102的處理共存的順序進行處理。例如,也 可以是源代碼輸入部1102接受源代碼0001,接著轉換規(guī)則輸入部接受轉換規(guī)則集合0002, 接著源代碼輸入部1102將源代碼0001轉換為源代碼信息1001的流程。
轉換規(guī)則輸入部1102接受由用戶輸入的轉換規(guī)則集合0002。從用戶接受轉換規(guī) 則集合0002的方法,例如可以是以下所示的方法。
第一個轉換規(guī)則輸入方法的例子,是轉換規(guī)則輸入部1102接受用戶直接手動輸 入的轉換規(guī)則作為轉換規(guī)則集合0002的一部分。
第二個轉換規(guī)則輸入方法的例子,如圖5A所示,也可以通過用戶描述的轉換規(guī)則 (描述)0010輸入轉換規(guī)則集合0002的至少一部分?;蛘撸斎氩?100也可以從存儲部 1400取得轉換規(guī)則的一覽0015,以一覽等形式對用戶提示,用戶從上述一覽中選擇,由此 接受轉換規(guī)則集合0002的輸入。即,用戶在輸入轉換規(guī)則前,將轉換規(guī)則的檢索條件0011 輸入(描述)到輸入部1100的轉換規(guī)則輸入部1102,接著,轉換規(guī)則輸入部1102從存儲部 1400具有的轉換規(guī)則數(shù)據(jù)庫1401取得符合上述檢索條件的轉換規(guī)則并作為轉換規(guī)則一覽 0015對上述用戶提示。接著,上述用戶選擇提示的上述轉換規(guī)則一覽中包括的I個以上的 轉換規(guī)則。轉換規(guī)則輸入部1102將該用戶選擇的I個以上的轉換規(guī)則接受為轉換規(guī)則集 合0002的一部分。
第三個轉換規(guī)則輸入方法的例子,也可以首先由使用者在輸入轉換規(guī)則前,將轉 換規(guī)則的檢索條件0011輸入到轉換規(guī)則輸入部1102,接著,轉換規(guī)則輸入部1102從轉換規(guī) 則數(shù)據(jù)庫1401取得符合上述檢索條件的轉換規(guī)則,作為轉換規(guī)則集合0002的一部分接受。
第四個轉換規(guī)則輸入方法的例子,是如圖5B所示,轉換規(guī)則輸入部1102從輸入的源代碼0001中提取、生成轉換規(guī)則的檢索條件0012,進而從轉換規(guī)則數(shù)據(jù)庫1401取得符合 上述檢索條件的轉換條件,作為轉換規(guī)則集合0002的一部分接受。
第二個轉換規(guī)則輸入方法的例子、第三個轉換規(guī)則輸入方法的例子、第四個轉換 規(guī)則輸入方法的例子中,作為轉換規(guī)則檢索條件的因子,例如可以是在如后所述的轉換規(guī) 則數(shù)據(jù)庫1401中保存為轉換規(guī)則的元數(shù)據(jù)的信息。
此外,第五個轉換規(guī)則輸入方法的例子,是轉換規(guī)則輸入部1102用某種方法對輸 入的轉換規(guī)則進行加工,由此接受轉換規(guī)則。上述加工方法的例子,可以是在轉換規(guī)則數(shù)據(jù) 庫1401中,以將源代碼0001中的變量名等參數(shù)化后的狀態(tài)保存轉換規(guī)則,例如通過用戶明 確輸入的方法等,用源代碼0001的信息代入?yún)?shù),包括在轉換規(guī)則集合0002中的方法。第 五個轉換規(guī)則輸入方法的例子中,加工前的轉換規(guī)則的輸入方法,可以是與上述的第一個 轉換規(guī)則輸入方法的例子等對輸入的轉換規(guī)則不加工就使用的情況同樣的方法。
轉換規(guī)則輸入部1102接受轉換規(guī)則集合0002的方法,不限于這些轉換規(guī)則輸入 方法,可以是接受轉換處理部1200中使用的轉換規(guī)則的集合的任意方法,此外,也可以用 這些轉換規(guī)則輸入方法的I個以上的組合接受轉換規(guī)則集合0002。
轉換規(guī)則輸入步驟S102之后,在轉換規(guī)則應用步驟S103中,模型構建部1201將 源代碼信息1001轉換為實現(xiàn)模型1205,接著,實現(xiàn)-泛化模型轉換部1202將實現(xiàn)模型 1205轉換為泛化模型1206 (S1031),接著,抽象化模型轉換部1203對泛化模型1206抽 象化(S1032),接著,泛化-檢查模型轉換部1204將泛化模型1206轉換為檢查模型1008 (S1033)。轉換規(guī)則輸入步驟S102和轉換規(guī)則應用步驟S103,不一定要按該順序完成處理, 只要在實現(xiàn)-泛化模型轉換部1202的處理前輸入實現(xiàn)-泛化轉換規(guī)則1005,并且在抽象化 模型轉換部1203的處理前輸入抽象化轉換規(guī)則1006,并且在泛化-檢查模型轉換部的處理 之前輸入泛化-檢查轉換規(guī)則1007即可。
轉換規(guī)則應用步驟S103之后,在檢查代碼輸出步驟S104中,用檢查代碼輸出部 1301將檢查模型1008作為檢查代碼0005輸出。檢查代碼0005的輸出目標的指定,不一定 要在轉換規(guī)則應用步驟S103之后,只要在檢查代碼0005輸出前即可。例如,也可以是與源 代碼輸入步驟SlOl并行地進行檢查代碼0005的輸出目標的指定的流程。
接著,用圖7、圖8A、圖8B更加詳細地說明轉換的流程。如圖7所示,本發(fā)明中,為 了使用模型轉換技術階段性地進行轉換,進行如下所述的處理。
(I)將源代碼0001轉換為與其(大致)等價的“實現(xiàn)模型” 1205
(2)將“實現(xiàn)模型”轉換為用不依賴于特定的編程語言的形式表現(xiàn)結構和邏輯等程 序信息的“泛化模型”
即,使用不同的多個第一轉換規(guī)則1005-1 1005-n中的至少I個,將“實現(xiàn)模 型”1205轉換為不依賴于特定編程與楊的形式的中間形式的“泛化模型”1206。圖7的例子 中,選擇“‘if語句’一條件分支”、“‘switch語句’一條件分支”、“‘while語句’一‘循環(huán)’”、 “ ‘for語句’一‘循環(huán)’ ”這至少4個不同的轉換規(guī)則作為第一轉換規(guī)則。
(3)對于泛化模型1206,實施用于抽象化的轉換
即,使用不同的多個第二轉換規(guī)則1006-1 1006-n中的至少I個,對與上述中間 形式的泛化模型進行抽象化處理。圖7的例子中,選擇“數(shù)據(jù)讀入一隨機輸入”、“數(shù)據(jù)的抽 象化”這至少2個不同的轉換規(guī)則作為第二轉換規(guī)則。
(4)將泛化模型轉換為“檢查模型”,生成(輸出)代碼
即,使用不同的多個第三轉換規(guī)則1007-1 1007-n中的至少I個,從上述中間形 式的泛化模型1206轉換為具有生成檢查代碼所需的信息的檢查模型1008。圖7的例子中, 選擇與第一轉換規(guī)則對應的“ ‘條件分支’ 一‘if’語句”、“ ‘循環(huán)’ 一‘do’語句”這至少2個 不同的轉換規(guī)則作為第三轉換規(guī)則。
此外,實現(xiàn)模型、泛化模型、檢查模型分別由定義語法的“元模型”定義數(shù)據(jù)結構和語義。
這樣,從實現(xiàn)模型向泛化模型轉換時,例如,轉換對象源代碼的描述語言的語法包 括“for語句”和“while語句”作為循環(huán)處理的描述方法時,用戶使用上述的轉換規(guī)則輸入 方法選擇將“for語句”轉換為“循環(huán)”的規(guī)則、將“While語句”轉換為“循環(huán)”的規(guī)則,作為 第一轉換規(guī)則。在泛化模型的抽象化轉換時,用戶決定檢查水平(抽象化的程度),對于達成 所決定的檢查水平的轉換規(guī)則,例如用上述的轉換規(guī)則輸入方法,選擇將關于外部數(shù)據(jù)讀 入的命令和一系列處理轉換為隨機輸入的規(guī)則、以及將特定的數(shù)據(jù)類型轉換為抽象度更高 的類型的規(guī)則,作為第二轉換規(guī)則。進而,在從泛化模型向檢查模型轉換時,例如在模型檢 查器的輸入語言的語法具有“do語句”作為循環(huán)處理的描述方法時,用戶使用上述的轉換規(guī) 則輸入方法,選擇將“循環(huán)”轉換為“do語句”的規(guī)則作為第三轉換規(guī)則。轉換規(guī)則中,能夠 跨多個軟件應用的通用性的規(guī)則等能夠反復使用的規(guī)則被數(shù)據(jù)庫化。數(shù)據(jù)庫中保存的轉換 規(guī)則,具有域信息和檢查水平(抽象化對檢查的影響)的信息,作為用作用戶檢索和規(guī)則選 擇的判斷材料的元信息。
此外,轉換規(guī)則的選擇方法有如下所述的方法。
( I)通用性規(guī)則總是選擇
(2)依賴于特定的庫的規(guī)則通過輸入使用的庫或檢查對象的域(分類)而一并選
(3)與抽象化對應的規(guī)則根據(jù)(輸入要檢查的性質、檢查水平而得的)轉換規(guī)則一 覽,由用戶選擇,或者用戶自身描述輸入,或者根據(jù)要檢查的性質自動生成。
圖8A、圖SB中分別表示模型的抽象化的一例。通過模型的抽象化,能夠削減狀態(tài) 數(shù)。但是,抽象化可能對模型的性質產(chǎn)生影響。例如,檢測出的缺陷(反例)在原本的系統(tǒng)中 不存在,以及不能夠發(fā)現(xiàn)原本的系統(tǒng)中存在的缺陷等。另一方面,對性質不產(chǎn)生影響的健全 的抽象化,存在狀態(tài)數(shù)削減效果較小的傾向。
根據(jù)本實施例,通過具有輸入分割為細粒度后的多個轉換規(guī)則的接口,用戶對抽 象化水平的變更可以通過輸入轉換規(guī)則的操作容易地實現(xiàn)。即,因為用戶能夠通過輸入接 口選擇多個細粒度的轉換規(guī)則,所以用戶能夠根據(jù)狀況容易地選定、變更圖8A、圖SB所示 的抽象化的水平。
源代碼轉換方法具有使用多個轉換規(guī)則將檢查對象的源代碼轉換為用模型檢查 器的輸入語言描述的檢查代碼的流程,上述轉換規(guī)則分類為實現(xiàn)-泛化轉換規(guī)則、抽象化 轉換規(guī)則、泛化-檢查轉換規(guī)則,轉換階段性地進行。由此,追隨檢查對象的源代碼的設計 變更時,僅對與多個轉換規(guī)則中的變更關聯(lián)的轉換規(guī)則進行變更即可,變更可以抑制在最 小限度。此外,分別用元模型定義實現(xiàn)模型、泛化模型、檢查模型,施加約束,由此能夠驗證 使用轉換規(guī)則的轉換結果沒有錯誤。由此,能夠防止因為通過組合細粒度的轉換規(guī)則實現(xiàn)將檢查對象的源代碼邊抽象化邊轉換為檢查代碼的一系列處理而產(chǎn)生的轉換規(guī)則的驗證 成本增大。
此外,通過具有輸入分割為細粒度后的多個轉換規(guī)則的接口,用戶對抽象化水平 的變更,可以通過用戶根據(jù)要檢查的性質、檢查水平,選擇、輸入轉換規(guī)則的操作容易地實 現(xiàn)。由此,可以解決抽象化水平的變更困難的課題。例如,存在僅在執(zhí)行循環(huán)時發(fā)生的特定 錯誤的情況下,通過除去該循環(huán),盡管不能夠檢測特定的錯誤,但能夠檢測發(fā)生原因中不包 括該循環(huán)的錯誤,能夠大幅削減狀態(tài)數(shù)。
進而,通過在數(shù)據(jù)庫中保存、再次利用模型的轉換規(guī)則,能夠以低成本對應檢查對 象的源代碼的設計變更和對其他軟件的應用。
此外,為了用不同的檢查工具進行檢查,在用檢查工具的形式輸出時,僅生成元檢 查模型和泛化-檢查轉換規(guī)則即可,生成部分可以抑制在最小限度。由此,可以解決用不同 的模型檢查器進行檢查時的成本較高的課題。
(實施例2)
用圖9說明本發(fā)明的第二實施例的源代碼轉換裝置和轉換處理方法。該實施例 中,如圖9所示,也可以是在檢查代碼輸出步驟S104之后,前進到轉換規(guī)則輸入步驟S102, 對于已經(jīng)輸入的源代碼0001,反復使用不同的轉換規(guī)則集合0002進行轉換的流程。此外, 某個實施方式中,也可以在檢查代碼輸出步驟S104之后,前進到轉換規(guī)則輸入步驟S102, 將已經(jīng)輸入的轉換規(guī)則集合0002的全部或一部分與轉換規(guī)則輸入步驟S102中新輸入的轉 換規(guī)則集合0002 —并用作轉換規(guī)則集合0002。
根據(jù)本實施例,具有輸入分割為細粒度后的多個轉換規(guī)則的接口,能夠保存輸入 的源代碼和用于轉換的轉換規(guī)則集合,更換上述轉換規(guī)則集合的一部分對上述源代碼進行 轉換,由此能夠削減在生成不同抽象度的多個檢查代碼等情況下的對同一源代碼反復進行 轉換的工作量。
(實施例3)
用圖10說明本發(fā)明的第三實施例的源代碼轉換裝置和轉換處理方法。本實施例 中,具有用約束條件驗證從源代碼得到檢查代碼的過程中生成的實現(xiàn)模型、泛化模型、檢查 模型的步驟。
用圖10詳細說明轉換的妥當性的驗證流程。
特定的轉換規(guī)則在該轉換時具有對于對象模型的前提條件的情況下,在轉換對象 的模型中,可能因為應用其他轉換規(guī)則而不能滿足上述特定轉換規(guī)則的前提條件。這樣不 能滿足前提條件時,用上述特定轉換規(guī)則實施模型轉換時,可能成為轉換結果的模型錯誤 的狀態(tài)。此外,在轉換規(guī)則中包含錯誤時,也可能成為轉換結果的模型錯誤的狀態(tài)。
本實施例中,具有輸入軟件的源代碼0001的步驟;輸入將具有源代碼的信息的 實現(xiàn)模型1205轉換為不依賴于特定的編程語言的形式的中間形式(泛化模型1206)的第一 轉換規(guī)則的步驟;輸入對中間形式進行抽象化處理的第二轉換規(guī)則的步驟;輸入將中間形 式轉換為具有檢查代碼的信息的檢查模型1008的第三轉換規(guī)則的步驟;分析軟件的源代 碼0001并轉換為實現(xiàn)模型1205的步驟;用上述第一轉換規(guī)則將軟件的源代碼0001轉換為 上述中間形式的泛化模型1206的步驟;用第二轉換規(guī)則對用上述中間形式表現(xiàn)的軟件進 行抽象化的步驟;用第三轉換規(guī)則將上述中間形式轉換為檢查模型1008的步驟;用檢查模型1008生成用驗證工具的輸入語言描述的檢查代碼0005的步驟;和分別用第一約束條件 0030、第二約束條件0031、第三約束條件00302驗證上述各階段的模型的充足性驗證步驟。0125]上述各階段的模型的分別用第一約束條件0030、第二約束條件0031、第三約束條 件0032進行的充足性驗證,例如通過用非專利文獻2中公開的MOF描述元模型、或者用非 專利文獻4中公開的OCL描述對于用元模型定義的模型的約束條件來實現(xiàn)。0126]根據(jù)本實施例,通過使用元模型和約束條件,能夠保證轉換規(guī)則之間的沖突和轉 換規(guī)則的錯誤引起的轉換的妥當性。該模型轉換中,生成用元模型定義的形式的模型。此 外,能夠追加約束條件,用約束條件0030 0032對生成的模型的妥當性進行充足性驗證。0127]符號說明0128]0001源代碼0129]0002轉換規(guī)則集合0130]0003元模型0131]0004輸出規(guī)則0132]0005檢查代碼0133]1000源代碼檢查裝置0134]1100輸入部0135]1200轉換處理部0136]1300輸出部0137]1400存儲部0138]1001源代碼信息0139]1002元實現(xiàn)模型0140]1003元泛化模型0141]1004元檢查模型0142]1005實現(xiàn)-泛化轉換規(guī)則0143]1006抽象化轉換規(guī)則0144]1007泛化-檢查轉換規(guī)則0145]1008檢查模型0146]1009檢查代碼輸出規(guī)則0147]1101源代碼輸入部0148]1102轉換規(guī)則輸入部0149]1201模型構建部0150]1202實現(xiàn)-泛化模型轉換部0151]1203抽象化模型轉換部0152]1204泛化-檢查模型轉換部0153]1205實現(xiàn)模型0154]1206泛化模型0155]1301檢查代碼輸出部0156]1401轉換規(guī)則數(shù)據(jù)庫0157]1402元模型數(shù)據(jù)庫
1403輸出規(guī)則數(shù)據(jù)庫
1500控制部
SlOl源代碼輸入步驟
S102轉換規(guī)則輸入步驟
S103轉換規(guī)則應用步驟
S104·檢查代碼輸出步驟
權利要求
1.一種利用源代碼轉換裝置進行的源代碼轉換方法,其特征在于,包括輸入軟件的源代碼的步驟;輸入不同的多個轉換規(guī)則的步驟;和用所述不同的多個轉換規(guī)則將所述源代碼轉換為用驗證工具的輸入語言描述的檢查代碼的步驟。
2.如權利要求1所述的源代碼轉換方法,其特征在于所述不同的多個轉換規(guī)則,將一系列處理分割為細粒度,該一系列處理是將檢查對象的所述源代碼轉換為所述檢查代碼并抽象化的一系列處理。
3.如權利要求1所述的源代碼轉換方法,其特征在于所述轉換規(guī)則,包括將源代碼轉換為作為不依賴于特定的編程語言的形式的中間形式的第一轉換規(guī)則;對所述中間形式進行抽象化處理的第二轉換規(guī)則;和從所述中間形式轉換為所述檢查代碼的第三轉換規(guī)則,所述的源代碼轉換方法包括輸入軟件的源代碼的步驟;輸入至少I個所述第一轉換規(guī)則的步驟;輸入至少I個所述第二轉換規(guī)則的步驟;輸入至少I個所述第三轉換規(guī)則的步驟;用所述第一轉換規(guī)則將所述軟件的源代碼轉換為所述中間形式的步驟;用所述第二轉換規(guī)則對用所述中間形式表現(xiàn)的所述軟件進行抽象化的步驟;和用所述第三轉換規(guī)則將所述中間形式轉換為用驗證工具的輸入語言描述的驗證用代碼的步驟。
4.如權利要求3所述的源代碼轉換方法,其特征在于具有用約束條件驗證所述中間形式的步驟。
5.如權利要求1所述的源代碼轉換方法,其特征在于所述轉換規(guī)則包括將C語言的條件分支轉換為所述檢查代碼的條件分支的語法轉換。
6.如權利要求1所述的源代碼轉換方法,其特征在于所述轉換規(guī)則包括將C語言的循環(huán)語句轉換為所述檢查代碼的循環(huán)的語法轉換。
7.如權利要求1所述的源代碼轉換方法,其特征在于所述不同的多個轉換規(guī)則的至少一部分,從所述源代碼轉換裝置內部保存的多個轉換規(guī)則中選擇輸入。
8.如權利要求1所述的源代碼轉換方法,其特征在于所述不同的多個轉換規(guī)則的至少一部分,是通過用戶的描述輸入的。
9.一種利用源代碼轉換裝置進行的源代碼轉換方法,其特征在于,包括輸入軟件的源代碼的步驟;輸入不同的多個轉換規(guī)則的步驟;和用所述不同的多個轉換規(guī)則將所述源代碼轉換為用驗證工具的輸入語言描述的檢查代碼的步驟,所述多個轉換規(guī)則的至少一部分,從所述源代碼轉換裝置內部保存的多個轉換規(guī)則中選擇輸入。
10.如權利要求9所述的源代碼轉換方法,其特征在于所述不同的多個轉換規(guī)則包括將所述源代碼轉換為不依賴于該源代碼的描述語言的具有泛化后的程序信息的模型的實現(xiàn)-泛化轉換規(guī)則;對所述泛化模型進行抽象化的抽象化轉換規(guī)則;和將所述泛化模型轉換為所述驗證工具的描述語言的泛化-檢查轉換規(guī)則。
11.如權利要求10所述的源代碼轉換方法,其特征在于將所述檢查對象的源代碼轉換為所述檢查代碼的一系列處理中,作為內部保存的信息的模型由元模型定義其形式,所述模型包括具有與檢查對象的源代碼對應的信息的實現(xiàn)模型;所述泛化模型;和具有與所述驗證工具的描述語言對應的信息的檢查模型,所述實現(xiàn)模型由作為其元模型的元實現(xiàn)模型定義,所述泛化模型由作為其元模型的元泛化模型定義,所述檢查模型由作為其元模型的元檢查模型定義,所述各元模型具有關于數(shù)據(jù)結構的定義和數(shù)據(jù)中包含的元素間的約束的信息。
12.如權利要求10所述的源代碼轉換方法,其特征在于關于所述轉換規(guī)則的信息,僅包括指示源代碼轉換裝置的存儲部中保存的轉換規(guī)則的識別息,使用所述識別信息從所述存儲部取出所述轉換規(guī)則的實體,將其用于轉換。
13.如權利要求10所述的源代碼轉換方法,其特征在于從所述輸入的源代碼提取并生成所述轉換規(guī)則的檢索條件,從源代碼轉換裝置的存儲部取得符合所述檢索條件的轉換規(guī)則,將其作為所述轉換規(guī)則接受。
14.如權利要求10所述的源代碼轉換方法,其特征在于所述實現(xiàn)模型、所述抽象程序模型和所述檢查模型的各中間模型,分別由定義語法的元模型定義數(shù)據(jù)結構和語義。
15.一種源代碼轉換程序,其在至少I臺計算機上動作、構成源代碼轉換裝置,所述源代碼轉換程序的特征在于使所述計算機作為以下單元發(fā)揮作用輸入軟件的源代碼的單元;輸入不同的多個轉換規(guī)則的單元;和用所述不同的多個轉換規(guī)則將所述源代碼轉換為用驗證工具的輸入語言描述的檢查代碼的單元。
全文摘要
為了在軟件的模型檢查中,降低用模型檢查器的輸入語言描述檢查代碼的成本,存在將軟件的源代碼轉換為檢查代碼的方法。因為用戶只能選擇單一的轉換方式,所以存在抽象化水平的變更困難、用于追隨源代碼的設計變更的規(guī)則修正成本較高、用于用不同檢查工具檢查的規(guī)則修正成本較高等課題。本發(fā)明在將源代碼轉換為檢查代碼時,提供選擇多個轉換規(guī)則的單元,用戶能夠容易地變更抽象化的水平。此外,多個轉換規(guī)則包括將源代碼轉換為中間形式的轉換規(guī)則、在中間形式中進行抽象化的轉換規(guī)則和從中間形式轉換為檢查代碼的轉換規(guī)則。
文檔編號G06F9/44GK103052943SQ20118003878
公開日2013年4月17日 申請日期2011年8月8日 優(yōu)先權日2010年9月9日
發(fā)明者市井誠, 近久真章, 野口秀人, 長野岳彥 申請人:株式會社日立制作所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1