EiffelStudio
   HOME

TheInfoList



OR:

EiffelStudio is a development environment for one
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
,
Eiffel Eiffel may refer to: Places * Eiffel Tower, in Paris, France, designed by Gustave Eiffel *:* Champ de Mars – Tour Eiffel station, Metro station serving the Eiffel Tower * Eiffel Bridge, Ungheni, Moldova, designed by Gustave Eiffel * Eiffel Bri ...
. Both are developed and distributed by Eiffel Software. EiffelStudio includes a combination of tools integrated under one
user interface In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
: compiler, interpreter, debugger, browser, metrics tool, profiler, diagram and code inspector tool. The user interface rests on a number of specific UI paradigms, especially "pick-and-drop" for effective browsing. EiffelStudio is available on many platforms including
Windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
,
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
,
macOS macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
,
Solaris Solaris is the Latin word for sun. It may refer to: Arts and entertainment Literature, television and film * ''Solaris'' (novel), a 1961 science fiction novel by Stanisław Lem ** ''Solaris'' (1968 film), directed by Boris Nirenburg ** ''Sol ...
, VMS,
Raspberry Pi Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
. The
source code In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer. Since a computer, at base, only ...
is
free and open-source software Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
, released under the
GNU General Public License The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
(GPL). Other
commercial software Commercial software, or, seldom, payware, is a computer software that is produced for sale or that serves commercial purposes. Commercial software can be proprietary software or free and open-source software. Background and challenge While ...
licenses are also available.


Status, license and community process

EiffelStudio is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
development with beta versions of the next release made regularly available. The Eiffel community actively participates in its development; its official website i
Eiffel.org
where projects and resources are listed. The source code base is usually available for check-out via
Subversion Subversion () refers to a process by which the values and principles of a system in place are contradicted or reversed in an attempt to sabotage the established social order and its structures of Power (philosophy), power, authority, tradition, h ...
or
Git Git () is a distributed version control system that tracks versions of files. It is often used to control source code by programmers who are developing software collaboratively. Design goals of Git include speed, data integrity, and suppor ...
. 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, with a 12-month delay.


Compiling technology

EiffelStudio uses an enhanced compiling technology named Melting Ice (claimed by Eiffel Software as a trademark) which integrates compiling, with interpreting the elements changed since the prior compiling, for very fast turnaround (recompile time proportional to the size of the change, not that of the full program). Although such ''melted'' programs can be delivered, the common practice before release is to perform a '' finalizing'' step. This is a highly optimized form of compiling, which takes longer and generates optimized executables. The interpreter part of EiffelStudio relies on a
bytecode Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normal ...
-oriented
virtual machine In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
. The compiler generates either C or the
.NET The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
framework's
Common Intermediate Language Common Intermediate Language (CIL), formerly called Microsoft Intermediate Language (MSIL) or Intermediate Language (IL), is the intermediate language binary instruction set defined within the Common Language Infrastructure (CLI) specification. ...
(CIL).


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 the default Business Object Notation (BON, see bibliography), or
Unified Modeling Language The Unified Modeling Language (UML) is a general-purpose visual modeling language that is intended to provide a standard way to visualize the design of a system. UML provides a standard notation for many types of diagrams which can be roughly ...
(UML).


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 A contract is an agreement that specifies certain legally enforceable rights and obligations pertaining to two or more parties. A contract typically involves consent to transfer of goods, services, money, or promise to transfer any of thos ...
), 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 In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
paradigm based on "development objects", "pebbles" and "holes". In the same way that
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
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''. Such an object can be selected (''picked'') wherever it appears in the interface, 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.


Unit and integration testing

EiffelStudio includes an integrated testing facility named ''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 (e.g. unit testing) to entire class systems (e.g. integration). 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 In computer programming, a postcondition is a condition or predicate that must always be true just after the execution of some section of code or after an operation in a formal specification. Postconditions are sometimes tested using assertions w ...
or
class invariant In computer programming, specifically object-oriented programming, a class invariant (or type invariant) is an invariant used for constraining objects of a class. Methods of the class should preserve the invariant. The class invariant constra ...
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. (predecessor of Eiffel Software), 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 (as documented in ''Eiffel: The Language'', see bibliography). 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: * 5.0, July 2001: first version to be "EiffelStudio" proper; integration of previous "EiffelCase" tool for graphical design with EiffelBench, in the form of EiffelStudio's Diagram Tool) * 5.1, December 2001: first version to support .NET
press release
(PDF)). It was called "Eiffel#" before releasin

* 5.2, November 2002: new EiffelBuild for GUI design, extended debugging, new mechanisms for C and C++ integration, better roundtripping facilities for the Diagram Tool
press release
. * 5.3, March 2003: Incremental compiler technology available for Eiffel .NET. Eiffel2Java Java interface, EiffelStore (relational database interface) now available for .NET, first Mac OS version, performance enhancements

. * 5.4, November 2003: new conversion mechanism, major run-time performance improvements (in particular for Eiffel (programming language)#Agents, agents), major compilation speed improvements, improved support for multithreading, major EiffelBuild enhancements, first support for new mechanisms as defined by the ECMA Eiffel committee, support for preconditions and postconditions in external (e.g. C) routines, transparent way to call overloaded .NET routines from Eiffel
press release
. * 5.5, September 2004: docking, improved debugger, new ECMA language features

. * 5.6, August 2005: enhanced diagram tool (UML support, force-directed graphs, better roundtripping), new EiffelCOM wizard for generation of Microsoft COM components, better class completion, faster .NET code generation
press release
. * 5.7, October 2006: ISO/ECMA Eiffel addition (inline agents, new "expanded" semantics, named tuples,
Unicode Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
support), refactoring facilities, new way to configure a project system, metrics
press release
. * 6.0, June 2007: ISO/ECMA Eiffel addition (multiple constraint genericity, octal and binary notation for integers), new tabbed editor, new docking facilities to let user define their workspace, context menu is available in addition to pick and drop, dependency tool

. * 6.1, November 2007:

. * 6.2, May 2008:

. * 6.3, December 2008:

. * 6.4, June 2009:

. * 6.5, November 2009:

. * 6.6, May 2010:

. * 6.7, November 2010:

. * 6.8, May 2011. Includes the first implementation of facilities supporting
SCOOP Scoop, Scoops or The Scoop may refer to: Artefacts * Scoop (machine part), a component of machinery to carry things * Scoop (tool), a shovel-like tool, particularly one deep and curved, used in digging * Scoop (theater), a type of wide area l ...
, ''Simple Concurrent Object-Oriented Programming''.
press release
. * 7.0, November 2011. Includes performance and functional enhancements to the
SCOOP Scoop, Scoops or The Scoop may refer to: Artefacts * Scoop (machine part), a component of machinery to carry things * Scoop (tool), a shovel-like tool, particularly one deep and curved, used in digging * Scoop (theater), a type of wide area l ...
parallel development facility, GUI library and tool support for
ribbon A ribbon or riband is a thin band of material, typically cloth but also plastic or sometimes metal, used primarily as decorative binding and tying. Cloth ribbons are made of natural materials such as silk, cotton, and jute and of synthetic mate ...
interface structures, improved support for void-safe software development, and many other improvements. * 7.1, June 2012. Includes
SCOOP Scoop, Scoops or The Scoop may refer to: Artefacts * Scoop (machine part), a component of machinery to carry things * Scoop (tool), a shovel-like tool, particularly one deep and curved, used in digging * Scoop (theater), a type of wide area l ...
processor garbage collection. Multiple improvements to Eiffel Information System linking application code to appropriate external resources such as requirements documents. * 7.2, February 2013. * 7.3, July 2013. * 13.11, December 2013. This release marks the beginning of using
new version numbering scheme

Release note

press release
. * 14.05, May 2014. Includes new Eiffel Inspector tool (static analysis tool to help maintaining a high code quality).
press release
. * 15.01, January 2015. New SCOOP runtime brings significant performance improvement.
press release
. * 15.08, August 2015. Improved EiffelWeb solution to build web server application.
press release
. * 15.12, December 2015. Language improvements (new agent's type notation).
press release
. * 16.05, May 2016. Maintenance release.
press release
. * 17.01, January 2017. Library capability mechanism to document and enforce supported compilation options. Code templates.
17.01 release
* 17.05, May 2017. Better detection of obsolete features. Pick&drop for local variables.
17.05 release
* 18.01, February 2018. Deeper integrated code analyzer. Improved type rules for conditional expressions and manifest arrays. Class features.
18.01 release
. * 18.07, July 2018. Relaxed rules for class features. Subsequent bracket expressions. Remote project targets.
18.07 release
. * 18.11, December 2018. All containers can be used in the iteration form of a loop, and the linear ones can be initialized from others.
18.11 release
. * 19.05, May 2019. Unicode operators, HiDPI, dead 'class' removal, compiler optimizations.
19.05 release
. * 20.05, May 2020. Multi-branch expression, untyped manifest string evaluation based on content.
20.05 release
. * 20.11, November 2020. Once classes, WrapC.
20.11 release
. * 21.11, November 2021. Moving to GTK3 for Linux, Unix and a better presence on MAC OS, new Source control tool.
21.11 release
. * 22.05, May 2022. Source control tool and UI improvements.
22.05 release
. * 22.12, December 2022. New platform, ARM support
22.12 release
. * 23.09, September 2023. NETcore suppor
23.09 release
. * 24.05, May 2024. Improved NETcore support, and debugging, new Composer commands
24.05 release
. * 25.02, February 2025. Improved Diagram tool, execution parameters, and new mongodb and mariadb libraries
25.02 release
.


Code analyzer

Code analyzer (former ''Inspector Eiffel'') is an automated
Eiffel Eiffel may refer to: Places * Eiffel Tower, in Paris, France, designed by Gustave Eiffel *:* Champ de Mars – Tour Eiffel station, Metro station serving the Eiffel Tower * Eiffel Bridge, Ungheni, Moldova, designed by Gustave Eiffel * Eiffel Bri ...
software testing Software testing is the act of checking whether software satisfies expectations. Software testing can provide objective, independent information about the Quality (business), quality of software and the risk of its failure to a User (computin ...
and
static analysis Static analysis, static projection, or static scoring is a simplified analysis wherein the effect of an immediate change to a system is calculated without regard to the longer-term response of the system to that change. If the short-term effect i ...
program released by Eiffel Software, originally produced as a result of a Masters Thesis project at
ETH Zurich ETH Zurich (; ) is a public university in Zurich, Switzerland. Founded in 1854 with the stated mission to educate engineers and scientists, the university focuses primarily on science, technology, engineering, and mathematics. ETH Zurich ran ...
. Code analyzer is a Rule-based static code analysis tool which operates both from an embedded mode within EiffelStudio and from
command line A command-line interface (CLI) is a means of interacting with software via command (computing), commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user ...
. It utilizes the
abstract syntax tree An abstract syntax tree (AST) is a data structure used in computer science to represent the structure of a program or code snippet. It is a tree representation of the abstract syntactic structure of text (often source code) written in a formal ...
(AST) produced by the Eiffel compiler and then generates a
control-flow graph In computer science, a control-flow graph (CFG) is a representation, using graph notation, of all paths that might be traversed through a program during its execution. The control-flow graph was conceived by Frances E. Allen, who noted that ...
(CFG), 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.


See also

*
Eiffel (programming language) Eiffel is an object-oriented programming language designed by Bertrand Meyer (an object-orientation proponent and author of '' Object-Oriented Software Construction'') and Eiffel Software. Meyer conceived the language in 1985 with the goal of i ...
* List of integrated development environments


References


Bibliography

* Eiffel Software: EiffelStudio manual. Online a
https://www.eiffel.org/documentation
* Bertrand Meyer: ''Eiffel: The Language'', Prentice Hall, 1991 (second revised printing, 1992). * Bertrand Meyer.: An Object-Oriented Environment: Principles and Applications, Prentice Hall. 1995 (describes the principles underlying the original EiffelBench). * Kim Waldén and Jean-Marc Nerson: ''Seamless Object-Oriented Software Architecture'', Prentice Hall, 1995 (contains a description of the BON method and notation).


External links

*
Eiffel CommunityFor open-source contributors: Eiffel home page at ETH ZurichEiffel Software's home page at eiffel.comEiffelStudio at SourceForgeEiffelStudio release notes
{{Integrated development environments Object-oriented programming Free integrated development environments Free and open source compilers Free and open source interpreters Compilers Integrated development environments Linux integrated development environments Free UML tools