An Eiffel IDE

Note: Some initial work on this project was done as a 2005 Summer Internship by Rory McCann (report).


  • Supervisor Dr. Joseph Kiniry
  • Subject Area Software Engineering
  • Pre-requisites Very good knowledge of Java
  • Co-requisites (things you must learn along the way) Good knowledge of the Eclipse Platform and the Visual Eiffel and SmartEiffel GNU Eiffel compilers
  • Subject Coverage Integrated Development Environments, Programming Languages, Compilers
  • Project Type Design and Implementation
  • Hardware/Software PC, laptop or workstation capable of running Java and Eclipse

Description

The Eclipse Platform is a generic, plug-in based framework for developing Integrated Development Environments. While Eclipse is written in Java, and is primarily used for Java program development, rich plugins have been written to support other programming languages. In particular, the CDT Project (C/C++ Development Tools) has developed a powerful IDE for writing C and C++ programs in the Eclipse Platform.

The Eiffel programming language is often cited as the premier strongly typed object-oriented programming language. Eiffel is easy to learn, has many rich programming language features like automatic memory management, parameterised classes with class-constraints, first-order methods, and much more, and shows very high performance (the only languages regularly faster than Eiffel are C and OCaml). There are also a large number of libraries available for writing applications in Eiffel.

There are three main Eiffel compilers, one commercial and two free.

Eiffel Software's EiffelStudio is a rich commercial IDE which can be used for research and teaching, but is relatively expensive for commercial development.

The FLOSS alternatives are both released under the GNU Public License. They are Object Tools' Visual Eiffel and INRIA/LORIA's SmartEiffel compiler.

Unfortunately, both of these systems are just "raw" compilers, much like gcc. They provide high quality command-line interfaces, but no FLOSS graphical IDE exists today to support the Eiffel programming language.

The aim of this project is to write an Eiffel plugin for the Eclipse Platform to support both GNU Eiffel compilers. Thus, this work will entail learning the Eclipse Platform, writing a (set of) plugin(s) for it in Java, and interfacing with the Visual Eiffel and SmartEiffel compilers.

Students interested in this project need to be very proficient in Java, capable of learning about and programming to large, rich APIs, and must be comfortable with the ideas behind plugin-centric, modular frameworks like Eclipse. No familiarly with Eclipse or Eiffel is necessary, but experience with either is a plus.

Mandatory Goals

  1. Gain familiarity with the Eclipse Platform, particularly writing plugins for such.
  2. Gain familiarity with the I/O interface of the Visual Eiffel and SmartEiffel compilers.
  3. Design, implement, and test an Eiffel plugin for the Eclipse Platform supporting the SmartEiffel compiler.
  4. Release the plugin to the world under an appropriate FLOSS license.

Discretionary Goals

  1. Design, implement, and test an Eiffel plugin for the Eclipse Platform supporting the Visual Eiffel compiler.
  2. Design, implement, and test a generic Eiffel compiler plugin for the Eclipse Platform that supports arbitrary Eiffel compilers.
  3. Support plugin indefinitely and help kickstart community for such.
  4. Coauthor, submit, and publish a paper on this work.

Exceptional Goals

  1. Modify the Visual Eiffel and SmartEiffel compilers (and related tools) to accomodate their use as plugins more readily.

Sources of Information and Preparatory Reading

  1. Eclipse Platform
  2. Visual Eiffel
  3. SmartEiffel
  4. Eiffel programming language
  5. The draft ECMA Eiffel Standard