Abstract: | Eclipse平台是近年來最成功竄起的一個整合式軟體開發環境。它是一個可擴充的開放式軟體工具整合平台,本身可免費使用、複製與散播,且開放其源碼。由於經營策略的成功以及技術上的優勢,Eclipse已成為最多程式開發者使用的平台;更由於其可擴充性與可免費衍生使用的關係,越來越多的開發者希望將其軟體工具以所謂的外掛軟體方式整合至此平台。然而實際經驗顯示,以該平台目前提供的工具直接發展外掛軟體,還是相當困難。究其原因,一方面,龐大的應用程式介面(API)往往使開發者不知如何著手;另一方面眾多而繁雜的軟體框架設計,常常使開發者難以了解與應用。 我們因而希望提供工具以創建一套以模型而非以程式為主的外掛程式開發環境,讓開發者得以改用模型為基礎發展外掛工具或客戶端應用程式。在此環境下,開發者得以自由運用比程式更高階的Eclipse平台元件模型以組合出其所需要的外掛程式模型,接著利用我們計劃實做的程式產生器以合成外掛程式骨幹,最後再內崁必要的其他輔助類別或方法而得到完整的外掛程式實做。這種做法的特徵是開發者發展外掛程式時,只需關注自己專長的工具邏輯設計,而不需要知道Eclipse平台的各種框架與元件的太多細節,其好處就如同是使用視覺化的建構器而非直接使用API來開發GUI程式。 Eclipse, a well known IDE released for only five years, has quickly become the dominating product in the market. It is not only open source but in fact also an extensible tool integration platform, allowing free use, copy, and royalty-free redistribution. With the success of its business strategy and competitive technical advantages, it has gained the use of most Java developers; moreover, thanks to the features of extensibility and royalty-free reuse, it has also been drawing the attention of more and more developers, desiring to integrate their tools into Eclipse. However, as our experience manifested, it is not easy by using existing tools provided by Eclipse community for developers to construct and/or package their software into so-called plug-ins for installation on Eclipse. The reasons are largely due to the bulk and complication of the platform: on one hand, every developer is perplexed by the huge amounts of APIs; on the other hand, lots of complicated frameworks make it difficult for developers to understand and utilize. We hence plan to develop tools for the construction of a model-driven plug-in development environment, allowing developers to use model instead of traditional program to construct their plug-ins. Within such environment, developers can freely compose models for their plug-ins conforming to selected Eclipse component metamodels to be defined by us. Compared with source code, model has the advantage of more abstract and more specification-oriented: in a model developers need only specify their system in terms of the high-level concepts offered by Eclipse component metamodels; on the other hand, the details of how the high-level concepts and relations among them are realized in frameworks of Eclipse platform are abstracted away from the model. The know-how of realizing model concepts by Eclipse frameworks is encoded in various model transformations and code generators, which, after feeding a model definition, will be able to generate the part of framework completion code of a plug-in. Finally, after embedding optionally other business classes and methods which developers are usually very familiar with, complete plug-ins are formed. Analogous to using a visual builder instead of direct APIs to build GUI applications, our approach has the advantage of requiring developers to know much less details of Eclipse components and frameworks than would be needed with present existing tools |