[發(fā)明專利]一種基于契約式設計的Java編譯器實現方法無效
| 申請?zhí)枺?/td> | 201110344981.8 | 申請日: | 2011-11-01 |
| 公開(公告)號: | CN103092668A | 公開(公告)日: | 2013-05-08 |
| 發(fā)明(設計)人: | 楊際榮 | 申請(專利權)人: | 鎮(zhèn)江華揚信息科技有限公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 212009 江蘇省鎮(zhèn)江市鎮(zhèn)江新*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 契約式 設計 java 編譯器 實現 方法 | ||
技術領域
本發(fā)明涉及一種基于契約式設計的Java編譯器實現方法,此技術主要通過在原有的Java編譯器上進行一定加工與改造,使VeriJava語法能夠在之中進行編譯,并能夠在編譯過程中驗證語言的邏輯正確性。
背景技術
在Eiffel項目中,Betrand?Meyer提出了基于契約式的設計方法(Design?by??Contract)來提高軟件的可靠度。通過使用DBC的設計方式:可以減少分離開發(fā)各組件系統的常規(guī)邏輯測試強度,并可以細化錯誤的出處以更快地找到錯誤所在,同時與文檔的接口定義可以保持嚴格地一致性。這一設計形式通過對設計方式嚴密和邏輯的定義,保證了軟件開發(fā)與設計的一致與協調。DBC充分鼓勵程序員思考諸如“例程的先驗條件是什么”這樣的問題,幫助了程序員將概念及邏輯流程充分理清。
Java作為一個大范圍應用的編程語言以及面向對象類型語言的典型性代表,使用其作為開發(fā)語言的程序與系統正大量出現。但是由于Java語言本身的限制,造成在開發(fā)基于Java語言的系統過程中,不可避免地遇到很多團隊協作、語言歧義等問題。即使在經常交流與溝通的情況下,也可能產生理解上的偏差。設計文檔的詳細與否固然會影響開發(fā)過程,但即使再詳細的文檔也會由于各類人的因素而造成一定的問題。于是,軟件開發(fā)人員在開發(fā)過程中借助于一些定義的形式化語言與工具對所開發(fā)的系統進行一定定義,并通過嚴格的數學邏輯證明以表達其語義的唯一性。雖然形式化語言的產生對程序的開發(fā)過程起著極大的作用和影響,但是在軟件系統的開發(fā)過程中,開發(fā)人員的人為思考及編寫行為仍然會對代碼的邏輯準確性起決定性的作用,而在這一階段中形式化語言無法起到很好的規(guī)范與檢驗作用,因此,將DBC與開發(fā)語言緊密地結合起來,就成為了一個非常迫切且有效的方法。
VeriJava是一次對于語言的擴展,作為一種新的語言,目前尚未有編譯器及編程環(huán)境支持,因此,設計并開發(fā)一個支持veriJava的編譯器及相關工具是非常迫切并必要的。由于veriJava是對Java語言的一次擴展,他對于Java語言本身并沒有做任何改變,僅僅是通過在語言層面上加上契約形式的約束,使其符合DBc的方式,因此,VeriJava編譯器也實現了對原Java編譯器的擴展,采用一種結合的方式,將VeriJava的契約解析與原Java語言相分離,通過一定的分析方法及轉換方法將其轉換為標準的Java語言,并一同送入標準Java編譯器進行編譯。契約將會以方法的形式嵌入Java程序中,使編譯后的文件包含了契約的約束,同時也可以在普通的Java環(huán)境中運行。
發(fā)明內容
基于上述問題,特此發(fā)明一種基于契約式設計的Java編譯器實現方法;是通過一個基于VeriJava語法與語義檢查、驗證的編譯器,試圖在編譯階段通過對方法,類等先決條件與后置條件的驗證,在邏輯上保證方法的正確性。
具體實施方法
1.編譯器架構:由于VeriJava是對Java語言的一次擴展,在編譯器的架構設計上,也采用了對原有Java編譯器進行擴展的方式,比起重新開發(fā)一個完整的編譯器來說,這樣即保證了不會遺漏原有的特性,又可以在將來對契約式語法進行一定的擴展。其編譯器的架構主要分為了三大部分:
1)VeriJava解析器與編織器:該部分為整個編譯器的骨架。所有的源代碼將首先通過這一解析器,隨后被其分為兩大部分:一部分是Veri?Java中所包含的契約式擴展語言,另一部分則是用戶所編寫的標準Java代碼。雖然代碼在這一部分進行了分離,但是他們之間仍然存在著聯系,這一聯系主要由該解析器維持。在分離之后,解析器會將契約送入契約解析器,而將Java源代碼進行解析并包裝入類。在契約解析器完成其工作后,通過維持的兩者的聯系重新將兩者編織在一起,并以流的形式輸出到最終的編譯器中。
2)契約解析及翻譯器:該部分主要針對新擴展的契約部分,通過對契約式語言的解析,隨后翻譯為對應的Java代碼并輸出。這一部分是整個編譯器的核心部分。他通過可擴展的編程架構,以關鍵字為單位,對契約進行了循環(huán)式解析。在編譯器內部包中提供了所有的關鍵字解析器與關鍵字列表,將契約中所包含的關鍵字均翻譯為Java方法嵌入在源Java程序中,以try-catch形式驗證契約并拋出自定義契約檢查錯誤。同時,根據在VeriJava解析器中所維持的聯系,對應地輸出相應的代碼,以避免不一致性。
3)Java編譯器:該部分接受VeriJava解析器所輸出的文件流,將其輸出的標準Java代碼編譯為class文件并保存。這樣,一個包含契約的標準Java文件就編譯完成了。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于鎮(zhèn)江華揚信息科技有限公司,未經鎮(zhèn)江華揚信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110344981.8/2.html,轉載請聲明來源鉆瓜專利網。





