EiffelStudio is a development environment for the Eiffel programming language developed and distributed by Eiffel Software.

EiffelStudio includes a combination of tools integrated under a single user interface: compiler, interpreter, debugger, browser, metrics tool, profiler, diagram and code inspector tool. The user interface rests on a number of specific UI paradigms, in particular "pick-and-drop" for effective browsing.

EiffelStudio

EiffelStudio is available on a number of platforms including Windows, Linux, Mac OS, Solaris, VMS, RaspberryPi. The source is available under GPL; other commercial licenses are also available.

EiffelStudio

Status, license and community process

EiffelStudio is an open-source development with beta versions of the next release made regularly available.

EiffelStudio

The Eiffel community actively participates in its development; its official website is Eiffel.org, where projects and resources are listed. The source code base is usually available for check-out via Subversion or Git. Also available are discussion forums and the like.

Since 2019, no new release of the open-source version has been made, and the svn repository has been protected by a password. The code is still available via a GitHub public mirror, but with a 12-month delay.

Compilation technology

EiffelStudio uses a specific compilation technology known as Melting Ice (claimed by Eiffel Software as a trademark) which integrates compilation proper with interpretation of the elements changed since the last compilation, for very fast turnaround (recompilation time proportional to the size of the change, not the size of the overall program). Although such "melted" programs can be delivered, the common practice is to perform a "finalization" step before release. Finalization is a highly optimized form of compilation, which takes longer but generates optimized executables.

The interpreter part of EiffelStudio relies on a bytecode-oriented virtual machine. The compiler generates either C or .NET CIL (Common Intermediate Language).

Round-trip engineering

The Diagram Tool of EiffelStudio provides a graphical view of software structures. It can be used in both Forward engineering, as a design tool for producing software from graphical descriptions. Reverse engineering, automatically producing graphical representations of existing program texts.

The tool guarantees integrity of changes made in either style, for full "roundtrip engineering".

The graphical notation is either BON (the Business Object Notation, see bibliography) or UML. BON is the default.

User interface paradigm

EiffelStudio makes it possible to display many different views of classes and features: text view (full program text), contract view (interface only, with contracts), flat view (which includes inherited features), clients (all the classes and features that use a given class or feature), inheritance history (what happens to a feature up and down the inheritance structure) and many others.

EiffelStudio relies on an original user interface paradigm based on "development objects", "pebbles" and "holes". In the same way that object-oriented in Eiffel deal with objects during execution, developers deal with abstractions representing classes, features, breakpoints (for debugging), clusters (groups of classes) and other development objects. A development object in EiffelStudio can be selected (picked) wherever it appears in the interface, and regardless of its visual representation (name of the object, visual symbol or other).

To pick a development object it suffices to right-click on it. The cursor then changes into a special symbol or pebble corresponding to the type of the object: "bubble" (ellipse) for a class, dot for a breakpoint, cross for a feature etc. As you move the cursor a line is displayed from the original object to the current position. You can then drop the pebble into any matching place: either an icon representing a hole with the same overall shape (class hole, breakpoint hole, feature hole etc.) or a window with a compatible type. The effect of dropping a pebble into a tool is to retarget the entire tool to the development object that was "picked". For example, a class tool will now display the chosen class, in whatever view (text, contract, flat etc.) was selected. This is known as the "Pick-and-Drop" paradigm.

The combination of multiple views and Pick-and-Drop makes it possible to browse quickly through complex systems, and to follow the sometimes extended transformations that features undergo under inheritance: renaming, redefinition, undefinition.