EiffelStudio


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 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.

Status, license and community process

EiffelStudio is an open-source development with beta versions of the next release made regularly available.
The Eiffel community actively participates in its development; its official website is , 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.

Compilation technology

EiffelStudio uses a specific compilation technology known as Melting Ice which integrates compilation proper with interpretation of the elements changed since the last compilation, for very fast turnaround. 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.

Round-trip engineering

The Diagram Tool of EiffelStudio provides a graphical view of software structures. It can be used in both
The tool guarantees integrity of changes made in either style, for full "roundtrip engineering".
The graphical notation is either BON or UML. BON is the default.

User interface paradigm

EiffelStudio makes it possible to display many different views of classes and features: text view, contract view, flat view, clients, inheritance history 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, clusters and other development objects. A development object in EiffelStudio can be selected wherever it appears in the interface, and regardless of its visual representation.
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" 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 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 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.

Unit and integration testing

EiffelStudio includes an integrated testing facility called EiffelStudio AutoTest , whereby developers may build simple to sophisticated unit and integration testing suites. The EiffelStudio AutoTest facilities enable the developer to execute and test Eiffel class code from the feature level to entire class systems. As such, execution of this code also executes the contracts of the features and attributes executed. As such, EiffelStudio AutoTest is a means to exercising the "tests" or assumptions of the Design by Contract conditions. Therefore, unit and integration testing need not re-test through means of assertions or test oracles what has already been coded as specification in the contracts of the class text.
EiffelStudio AutoTest provides the user with three methods of test case creation.
First, for manually created tests EiffelStudio AutoTest creates a test class containing a framework for the test. The user needs only supply the test code itself.
Second, EiffelStudio AutoTest provides a method for creating a new test based on an application failure at runtime. This type of test is called extracted. If while running the target system, an unexpected failure occurs, EiffelStudio AutoTest can work from the information available in the debugger to create a new test that will reproduce the state and the calls that caused the failure. Once the problem is fixed, the extracted test can be added to the test suite as a hedge against regressions of the problem.
The third method of creating tests produces what are called generated tests. In this scenario, the user provides EiffelStudio AutoTest with the classes for which tests should be generated and some additional information used to control the test generation. The tool then begins calling routines in the target classes using randomized argument values. For every unique postcondition or class invariant violation, EiffelStudio AutoTest produces a single new test reproducing the failing call.

History

EiffelStudio traces its roots to the first implementation of Eiffel, by Interactive Software Engineering Inc., released in 1986. The origin of the current technology appears to go back to "EiffelBench", started in 1990 in connection with the design of the Eiffel 3 version of the language. EiffelBench was renamed "EiffelStudio" around 2001; this is also the time when the environment went beyond its Unix origins to target Windows and other platforms.
Major releases since 2001, and some of the new features for each, have been:
Code analyzer is an automated Eiffel software testing and static analysis program released by Eiffel Software, originally produced as a result of a Masters Thesis project at ETH Zurich.
Code analyzer is a Rule-based static code analysis tool which operates both from an embedded mode within EiffelStudio and from command line. It utilizes the abstract syntax tree produced by the Eiffel compiler and then generates a control flow graph, which is computed by a module of code in the tool. The CFG and AST are then visited by a number of defined rules. Violations of any rule are reported to the user as Errors, Warnings, or Hints. Each rule violation reports precisely which rule was violated.