學術產出-學位論文

題名 以模型導向技術發展的一套高質語言編輯環境生成系統
The Design of a High Quality Editing Environment Generating System Based on Model-Driven Technologies
作者 詹亞騰
Chan, Ya Teng
貢獻者 陳正佳
Chen, Cheng Chia
詹亞騰
Chan, Ya Teng
關鍵詞 Eclipse平台
模型驅動技術
整合式開發環境
Eclipse Platform
Model-Driven Technologies
Integrated Develop Environment(IDE)
日期 2008
上傳時間 17-九月-2009 14:04:07 (UTC+8)
摘要 近年來越來越多資訊應用領域,開始採用領域特定語言(Domain Specific Language)以表達並解決其領域問題。然而這些特定領域語言多數卻缺乏可大大提升生產力的高品質編輯輔助工具。其主因乃因為從頭開發一套高品質編輯輔助工具所費不貲,然這些特定領域語言普及程度卻遠不如一般通用語言,是以缺乏誘因驅使軟體商開發相關工具。為能快速開發輔助工具,現今的工具開發平台如Eclipse、IDEA,以及NetBeans等,均提供整合開發環境(IDE)的發展支援,以利開發者在平台上快速擴增新語言之編輯環境。即使如此,要發展一套IDE,開發者不僅需深入熟悉所用平台,而且仍需繁瑣與長時間之開發過程。基於此,為求更簡化IDE開發過程,本研究嘗試增強、重構先前開發之雛型系統EGOE【9】,發展出一套遵循模型驅動架構(MDA)之高品質語言編輯環境生成系統:EGOE II。經由此系統的輔助,IDE開發者僅需提供程式語言文法定義(Grammar)及IDE輔助機制客制化資訊,即能套用系統內部的模型轉換程式及程式樣板(Templates),自動生成以Eclipse為平台的高效能、高品質,且提供豐富編輯輔助的程式語言IDE。
In recent years more and more fields of applications began to use DSLs(Domain Specific Language) to solve their problems. However, most of these languages were created without accompanying high-quality language specific editors(LSE) to help increase the productivity of the language. The reason for the lack of such tools is mostly economic consideration: because of the very high cost of developing a LSE from scratch, it is not worthwhile to invest a LSE on a less frequently used language. To avoid developing an LSE from scratch, however, most present tool platforms such as Eclipse, IDEA or NetBeans have offered required editor frameworks and APIs to help developers to be able to build LSEs on these platform more quickly and easily. Even so, however, it is still thought hard to develop a LSE by way of platform support since developers need a long and steep learning before they can get adept at a platform and, moreover, the process of developing a LSE remains long, tedious and error-prone. Accordingly, to enable even quicker development of LSEs, we proposed and have developed in this paper a high quality editing environment generating system called EGOE II, which follows the MDA approach and is the refactoring and enhancement of our previous prototype EGOE system. With EGOE II, the developer need only offer an editor-specific specification of the target language, which includes the grammar and editor-related customization informations; he can then apply to it the model translator and program templates provided by the system to automatically produce a high-quality editor on Eclipse platform for the target language.
參考文獻 【1】 J.A. Bergstra, and P. Klint, ”The discrete time Toolbus - A software coordination architecture,” Science of Computer Programming, vol. 31, pp. 205-229, 1998.
【2】 M.G.J van den Brand, Bas Cornelissen, P.A. Olivier, and J.J Vinju, “TIDE: a generic debugging framewor,” Language Design Tools and Applications, 2005.
【3】 M.G.J. van den Brand, A. van Deursen, P. Klint, S. Klusener, and E.A. van der Meulen, “Industrial Applications of ASF+SDF,” Algebraic Methodology and Software Technology, pp. 9-18, 1996.
【4】 M.G.J. van den Brand, H.A. de Jong, P. Klint, and P.A. Olivier, “Efficient Annotated Terms,” Software - Practice & Experience, vol. 30, pp. 259-291, 2000a.
【5】 M.G.J. van den Brand, P. Klint, and P.A. Olivier, “Compilation and Memory Management for ASF+SDF,” Compiler Construction, pp. 198-213, 1999.
【6】 M.G.J. van den Brand, P.E. Moreau, and J.J. Vinju, “A generator of efficient strongly typed abstract syntax trees in Java,” Technical report, SEN-E0306, 2003a.
【7】 Frank Budinsky, David Steinberg, Ed Merks, Raymond Ellersick, and Timo thy J.
Grose, “Eclipse Modeling Framework: A Developer’s Guide,” pp. 15-17, Addison Wesley Pub. Co., 2003.
【8】 Philippe Charles, Julian Dolby, Robert M. Fuhrer, Stanley M. Sutton, and Mandana Vaziri, “SAFARI: A Meta-Tooling Platform for Creating Language-Specific IDEs,” Companion to the 21st ACM SIGPLAN conference on OOPSLA, 2006.
【9】 Cheng-Chia Chen, “EGOE: a Generating System of Multi-View Editing Environments on Eclipse Platform,” In Proceedings of the ICS Conference, 2006.
【10】 S. Efftinge, and M. Völter, “oAW xText: A framework for textual DSLs,” 2006.
【11】 H.A. de Jong, and P.A Olivier, “Generation of abstract programming interfaces from syntax definitions,” Journal of Logic and Algebraic Programming, 2003.
【12】 J. B. Rainsberger, “JUnit Recipes: Practical Methods for Programmer Testing,” Manning Publications.
【13】 ANTLR Parser Generator, http://www.antlr.org/
【14】 Eclipse Foundation Inc., “Folding in Eclipse Text Editors,” http://www.eclipse.org/articles/Article-Folding-in-Eclipse-Text-Editors/folding.html
【15】 Eclipse Foundation Inc., Dynamic Languages Toolkit, http://www.eclipse.org/dltk/
【16】 Eclipse Foundation Inc., Eclipse Home Page, http://www.eclipse.org/
【17】 Eclipse Foundation Inc., Eclipse IDE Meta-tooling Platform,
http://eclipse-imp.sourceforge.net/imp.html
【18】 Eclipse Foundation Inc., Eclipse Modeling Framework Project (EMF),
http://www.eclipse.org/modeling/emf/
【19】 Eclipse Foundation Inc., “Eclipse Platform Technical Overview,”
http://www.eclipse.org/whitepapers/eclipse-overview.pdf
【20】 Eclipse Foundation Inc., “JET Tutorial Part 1,”
http://www.eclipse.orgarticles/Article-JET/jet_tutorial1.html
【21】 Eclipse Foundation Inc., openArchitectureWare, http://www.eclipse.org/gmt/oaw/
【22】 International Business Machines Corp., “Customize generated models and editors with Eclipse’s JMerge,” http://www.ibm.com/developerworks/library/os-ecemf3/
【23】 International Business Machines Corp., “Project Builders and Natures, In Eclipse Corner Article,” http://www.eclipse.org/articles/Article-Builders/builders.html
【24】 Java Compiler Compiler, https://javacc.dev.java.net/
【25】 JetBrains Inc., IntelliJ IDEA : The Most Intelligent Java IDE,
http://www.jetbrains.com/idea/
【26】 LALR Parser Generator, http://sourceforge.net/projects/lpg/
【27】 NetBeans, http://www.netbeans.org/
【28】 Object Management Group Inc., http://www.omg.org/
【29】 Object Management Group Inc., MDA, http://www.omg.org/mda/
【30】 Object Management Group Inc., XML Metadata Interchange,
http://www.omg.org/technology/documents/formal/xmi.htm
【31】 SableCC parser generator, http://sablecc.org/
【32】 Smalltalk group, “Model-View-Controller,”
http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
【33】 SmartTools Software Factories, http://www-sop.inria.fr/smartool/
【34】 Unified Modeling Language, http://www.uml.org/
描述 碩士
國立政治大學
資訊科學學系
95753003
97
資料來源 http://thesis.lib.nccu.edu.tw/record/#G0095753003
資料類型 thesis
dc.contributor.advisor 陳正佳zh_TW
dc.contributor.advisor Chen, Cheng Chiaen_US
dc.contributor.author (作者) 詹亞騰zh_TW
dc.contributor.author (作者) Chan, Ya Tengen_US
dc.creator (作者) 詹亞騰zh_TW
dc.creator (作者) Chan, Ya Tengen_US
dc.date (日期) 2008en_US
dc.date.accessioned 17-九月-2009 14:04:07 (UTC+8)-
dc.date.available 17-九月-2009 14:04:07 (UTC+8)-
dc.date.issued (上傳時間) 17-九月-2009 14:04:07 (UTC+8)-
dc.identifier (其他 識別碼) G0095753003en_US
dc.identifier.uri (URI) https://nccur.lib.nccu.edu.tw/handle/140.119/32691-
dc.description (描述) 碩士zh_TW
dc.description (描述) 國立政治大學zh_TW
dc.description (描述) 資訊科學學系zh_TW
dc.description (描述) 95753003zh_TW
dc.description (描述) 97zh_TW
dc.description.abstract (摘要) 近年來越來越多資訊應用領域,開始採用領域特定語言(Domain Specific Language)以表達並解決其領域問題。然而這些特定領域語言多數卻缺乏可大大提升生產力的高品質編輯輔助工具。其主因乃因為從頭開發一套高品質編輯輔助工具所費不貲,然這些特定領域語言普及程度卻遠不如一般通用語言,是以缺乏誘因驅使軟體商開發相關工具。為能快速開發輔助工具,現今的工具開發平台如Eclipse、IDEA,以及NetBeans等,均提供整合開發環境(IDE)的發展支援,以利開發者在平台上快速擴增新語言之編輯環境。即使如此,要發展一套IDE,開發者不僅需深入熟悉所用平台,而且仍需繁瑣與長時間之開發過程。基於此,為求更簡化IDE開發過程,本研究嘗試增強、重構先前開發之雛型系統EGOE【9】,發展出一套遵循模型驅動架構(MDA)之高品質語言編輯環境生成系統:EGOE II。經由此系統的輔助,IDE開發者僅需提供程式語言文法定義(Grammar)及IDE輔助機制客制化資訊,即能套用系統內部的模型轉換程式及程式樣板(Templates),自動生成以Eclipse為平台的高效能、高品質,且提供豐富編輯輔助的程式語言IDE。zh_TW
dc.description.abstract (摘要) In recent years more and more fields of applications began to use DSLs(Domain Specific Language) to solve their problems. However, most of these languages were created without accompanying high-quality language specific editors(LSE) to help increase the productivity of the language. The reason for the lack of such tools is mostly economic consideration: because of the very high cost of developing a LSE from scratch, it is not worthwhile to invest a LSE on a less frequently used language. To avoid developing an LSE from scratch, however, most present tool platforms such as Eclipse, IDEA or NetBeans have offered required editor frameworks and APIs to help developers to be able to build LSEs on these platform more quickly and easily. Even so, however, it is still thought hard to develop a LSE by way of platform support since developers need a long and steep learning before they can get adept at a platform and, moreover, the process of developing a LSE remains long, tedious and error-prone. Accordingly, to enable even quicker development of LSEs, we proposed and have developed in this paper a high quality editing environment generating system called EGOE II, which follows the MDA approach and is the refactoring and enhancement of our previous prototype EGOE system. With EGOE II, the developer need only offer an editor-specific specification of the target language, which includes the grammar and editor-related customization informations; he can then apply to it the model translator and program templates provided by the system to automatically produce a high-quality editor on Eclipse platform for the target language.en_US
dc.description.tableofcontents 第一章 序論 1
1.1 研究動機與目的 1
1.2 實現策略 2
1.3 論文貢獻與特色 3
1.4 論文章節架構 5
第二章 相關研究探討 7
2.1 ECLIPSE 開發平台 7
2.1.1 Eclipse簡介 7
2.1.2 Eclipse IDE開發架構 8
2.2 相關工具簡介 10
2.2.1 EMF(Eclipse Modeling Framework) 10
2.2.2 Antlr(ANother Tool for Language Recognition) 11
2.3 現代化程式語言文字編輯器應具備之能力 13
2.4 MDA(MODEL-DRIVEN ARCHITECTURE)概念 16
2.5 相似系統的分析與簡介 17
2.5.1 Eclipse IMP(IDE Meta-tooling Platform) 18
2.5.2 SmartTools 19
2.5.3 DLTK(Dynamic Languages Toolkit) 23
2.5.4 oAW xText 26
2.5.5 ASF+SDF Meta-Environment 27
2.6 相似系統的比較 28
第三章 系統架構 31
3.1 IDE生成架構 31
3.2 系統輸入模型 33
3.2.1 標的語言抽象語法(Abstract Syntax) 33
3.2.2 標的語言具體語法(Concrete Syntax) 37
3.2.3 IDE各項輔助機制的客制化資訊 43
3.3 系統生成之標的語言IDE 45
第四章 雛形系統 48
4.1 雛型系統簡介 48
4.2 在雛形系統的基礎上建構本研究目標之實作系統 50
第五章 修補暨改善雛型系統生成之IDE提供的輔助能力 52
5.1 改良多頁編輯器之程式儲存機制 52
5.2 改進醒目提示(SYNTAX HIGHLIGHT)輔助機制之實現方式 54
5.3 改善以XSLT處理器達成之程式碼排版效果 57
5.4 建構結構化與純文字編輯頁面間之高效率即時同步機制 58
5.5 解決因編輯頁面間同步而導致程式碼編輯資訊遺失的問題 61
第六章 擴增系統生成之IDE可提供的輔助機制 63
6.1 程式碼摺疊(FOLDING)輔助機制 63
6.2 程式碼語法錯誤標記(MARKER)輔助機制 66
6.3 程式碼自動完成(CODE COMPLETION)輔助機制 67
6.4 程式碼格式器(CODE FORMATTER)輔助機制 73
6.5 程式範例新增精靈(NEW TEMPLATE WIZARD)輔助機制 79
6.6 型態宣告及引用控管機制 82
6.6.1 型態宣告和引用之間的超連結輔助機制 84
6.6.2 醒目顯示特定型態宣告及其引用輔助機制 86
6.6.3 內容輔助(Content Assistant)機制 87
第七章 其他相關改進及系統實例 90
7.1 開發平台與採用工具的版本更新 90
7.2 改善系統安裝過程 93
7.3 改善系統運行方式 94
7.4 提供屬性設定頁面輔助設置客制化文件 96
7.5 ABSYNT及COSYNT語言實例 99
第八章 結論與未來研究方向 105
8.1 結論 105
8.2 未來研究方向 106
8.2.1 提供浮動說明(Text Hover)輔助機制及相關輔助視圖 106
8.2.2 提供簡化客制化描述文件設計過程之機制 107
8.2.3 其他可擴展方向 107
參考文獻 109
附錄A TINY語言語法定義及輔助機制客制化文件 112
附錄B ABSYNT語言語法定義及輔助機制客制化文件 118
附錄C COSYNT語言語法定義及輔助機制客制化文件 125
zh_TW
dc.format.extent 101433 bytes-
dc.format.extent 126670 bytes-
dc.format.extent 122481 bytes-
dc.format.extent 230693 bytes-
dc.format.extent 258269 bytes-
dc.format.extent 588628 bytes-
dc.format.extent 329998 bytes-
dc.format.extent 286944 bytes-
dc.format.extent 501048 bytes-
dc.format.extent 859709 bytes-
dc.format.extent 912695 bytes-
dc.format.extent 251305 bytes-
dc.format.extent 249271 bytes-
dc.format.extent 290060 bytes-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.format.mimetype application/pdf-
dc.language.iso en_US-
dc.source.uri (資料來源) http://thesis.lib.nccu.edu.tw/record/#G0095753003en_US
dc.subject (關鍵詞) Eclipse平台zh_TW
dc.subject (關鍵詞) 模型驅動技術zh_TW
dc.subject (關鍵詞) 整合式開發環境zh_TW
dc.subject (關鍵詞) Eclipse Platformen_US
dc.subject (關鍵詞) Model-Driven Technologiesen_US
dc.subject (關鍵詞) Integrated Develop Environment(IDE)en_US
dc.title (題名) 以模型導向技術發展的一套高質語言編輯環境生成系統zh_TW
dc.title (題名) The Design of a High Quality Editing Environment Generating System Based on Model-Driven Technologiesen_US
dc.type (資料類型) thesisen
dc.relation.reference (參考文獻) 【1】 J.A. Bergstra, and P. Klint, ”The discrete time Toolbus - A software coordination architecture,” Science of Computer Programming, vol. 31, pp. 205-229, 1998.zh_TW
dc.relation.reference (參考文獻) 【2】 M.G.J van den Brand, Bas Cornelissen, P.A. Olivier, and J.J Vinju, “TIDE: a generic debugging framewor,” Language Design Tools and Applications, 2005.zh_TW
dc.relation.reference (參考文獻) 【3】 M.G.J. van den Brand, A. van Deursen, P. Klint, S. Klusener, and E.A. van der Meulen, “Industrial Applications of ASF+SDF,” Algebraic Methodology and Software Technology, pp. 9-18, 1996.zh_TW
dc.relation.reference (參考文獻) 【4】 M.G.J. van den Brand, H.A. de Jong, P. Klint, and P.A. Olivier, “Efficient Annotated Terms,” Software - Practice & Experience, vol. 30, pp. 259-291, 2000a.zh_TW
dc.relation.reference (參考文獻) 【5】 M.G.J. van den Brand, P. Klint, and P.A. Olivier, “Compilation and Memory Management for ASF+SDF,” Compiler Construction, pp. 198-213, 1999.zh_TW
dc.relation.reference (參考文獻) 【6】 M.G.J. van den Brand, P.E. Moreau, and J.J. Vinju, “A generator of efficient strongly typed abstract syntax trees in Java,” Technical report, SEN-E0306, 2003a.zh_TW
dc.relation.reference (參考文獻) 【7】 Frank Budinsky, David Steinberg, Ed Merks, Raymond Ellersick, and Timo thy J.zh_TW
dc.relation.reference (參考文獻) Grose, “Eclipse Modeling Framework: A Developer’s Guide,” pp. 15-17, Addison Wesley Pub. Co., 2003.zh_TW
dc.relation.reference (參考文獻) 【8】 Philippe Charles, Julian Dolby, Robert M. Fuhrer, Stanley M. Sutton, and Mandana Vaziri, “SAFARI: A Meta-Tooling Platform for Creating Language-Specific IDEs,” Companion to the 21st ACM SIGPLAN conference on OOPSLA, 2006.zh_TW
dc.relation.reference (參考文獻) 【9】 Cheng-Chia Chen, “EGOE: a Generating System of Multi-View Editing Environments on Eclipse Platform,” In Proceedings of the ICS Conference, 2006.zh_TW
dc.relation.reference (參考文獻) 【10】 S. Efftinge, and M. Völter, “oAW xText: A framework for textual DSLs,” 2006.zh_TW
dc.relation.reference (參考文獻) 【11】 H.A. de Jong, and P.A Olivier, “Generation of abstract programming interfaces from syntax definitions,” Journal of Logic and Algebraic Programming, 2003.zh_TW
dc.relation.reference (參考文獻) 【12】 J. B. Rainsberger, “JUnit Recipes: Practical Methods for Programmer Testing,” Manning Publications.zh_TW
dc.relation.reference (參考文獻) 【13】 ANTLR Parser Generator, http://www.antlr.org/zh_TW
dc.relation.reference (參考文獻) 【14】 Eclipse Foundation Inc., “Folding in Eclipse Text Editors,” http://www.eclipse.org/articles/Article-Folding-in-Eclipse-Text-Editors/folding.htmlzh_TW
dc.relation.reference (參考文獻) 【15】 Eclipse Foundation Inc., Dynamic Languages Toolkit, http://www.eclipse.org/dltk/zh_TW
dc.relation.reference (參考文獻) 【16】 Eclipse Foundation Inc., Eclipse Home Page, http://www.eclipse.org/zh_TW
dc.relation.reference (參考文獻) 【17】 Eclipse Foundation Inc., Eclipse IDE Meta-tooling Platform,zh_TW
dc.relation.reference (參考文獻) http://eclipse-imp.sourceforge.net/imp.htmlzh_TW
dc.relation.reference (參考文獻) 【18】 Eclipse Foundation Inc., Eclipse Modeling Framework Project (EMF),zh_TW
dc.relation.reference (參考文獻) http://www.eclipse.org/modeling/emf/zh_TW
dc.relation.reference (參考文獻) 【19】 Eclipse Foundation Inc., “Eclipse Platform Technical Overview,”zh_TW
dc.relation.reference (參考文獻) http://www.eclipse.org/whitepapers/eclipse-overview.pdfzh_TW
dc.relation.reference (參考文獻) 【20】 Eclipse Foundation Inc., “JET Tutorial Part 1,”zh_TW
dc.relation.reference (參考文獻) http://www.eclipse.orgarticles/Article-JET/jet_tutorial1.htmlzh_TW
dc.relation.reference (參考文獻) 【21】 Eclipse Foundation Inc., openArchitectureWare, http://www.eclipse.org/gmt/oaw/zh_TW
dc.relation.reference (參考文獻) 【22】 International Business Machines Corp., “Customize generated models and editors with Eclipse’s JMerge,” http://www.ibm.com/developerworks/library/os-ecemf3/zh_TW
dc.relation.reference (參考文獻) 【23】 International Business Machines Corp., “Project Builders and Natures, In Eclipse Corner Article,” http://www.eclipse.org/articles/Article-Builders/builders.htmlzh_TW
dc.relation.reference (參考文獻) 【24】 Java Compiler Compiler, https://javacc.dev.java.net/zh_TW
dc.relation.reference (參考文獻) 【25】 JetBrains Inc., IntelliJ IDEA : The Most Intelligent Java IDE,zh_TW
dc.relation.reference (參考文獻) http://www.jetbrains.com/idea/zh_TW
dc.relation.reference (參考文獻) 【26】 LALR Parser Generator, http://sourceforge.net/projects/lpg/zh_TW
dc.relation.reference (參考文獻) 【27】 NetBeans, http://www.netbeans.org/zh_TW
dc.relation.reference (參考文獻) 【28】 Object Management Group Inc., http://www.omg.org/zh_TW
dc.relation.reference (參考文獻) 【29】 Object Management Group Inc., MDA, http://www.omg.org/mda/zh_TW
dc.relation.reference (參考文獻) 【30】 Object Management Group Inc., XML Metadata Interchange,zh_TW
dc.relation.reference (參考文獻) http://www.omg.org/technology/documents/formal/xmi.htmzh_TW
dc.relation.reference (參考文獻) 【31】 SableCC parser generator, http://sablecc.org/zh_TW
dc.relation.reference (參考文獻) 【32】 Smalltalk group, “Model-View-Controller,”zh_TW
dc.relation.reference (參考文獻) http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.htmlzh_TW
dc.relation.reference (參考文獻) 【33】 SmartTools Software Factories, http://www-sop.inria.fr/smartool/zh_TW
dc.relation.reference (參考文獻) 【34】 Unified Modeling Language, http://www.uml.org/zh_TW