This article needs additional citations for verification .(December 2015) |
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.
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 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.
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).
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 (the Business Object Notation, see bibliography) or UML. BON is the default.
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.
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 (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 or class invariant violation, EiffelStudio AutoTest produces a single new test reproducing the failing call.
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:
Code analyzer (former Inspector Eiffel) 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. [1]
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 (AST) produced by the Eiffel compiler and then generates a control-flow graph (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.
Eiffel is an object-oriented programming language designed by Bertrand Meyer and Eiffel Software. Meyer conceived the language in 1985 with the goal of increasing the reliability of commercial software development; the first version becoming available in 1986. In 2005, Eiffel became an ISO-standardized language.
An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.
A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.
Software development is the process used to create software. Programming and maintaining the source code is the central step of this process, but it also includes conceiving the project, evaluating its feasibility, analyzing the business requirements, software design, testing, to release. Software engineering, in addition to development, also includes project management, employee management, and other overhead functions. Software development may be sequential, in which each step is complete before the next begins, but iterative development methods where multiple steps can be executed at once and earlier steps can be revisited have also been devised to improve flexibility, efficiency, and scheduling.
Finale is a discontinued proprietary music notation software developed and released by MakeMusic for Microsoft Windows and macOS from 1988 until 2024, when it was discontinued.
C++Builder is a rapid application development (RAD) environment for developing software in the C++ programming language. Originally developed by Borland, as of 2009 it is owned by Embarcadero Technologies, a subsidiary of Idera. C++Builder can compile apps for Windows, iOS, macOS, and Android. It includes tools that allow drag-and-drop visual development, making programming easier by incorporating a WYSIWYG graphical user interface builder.
Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.
Windows Management Instrumentation (WMI) consists of a set of extensions to the Windows Driver Model that provides an operating system interface through which instrumented components provide information and notification. WMI is Microsoft's implementation of the Web-Based Enterprise Management (WBEM) and Common Information Model (CIM) standards from the Distributed Management Task Force (DMTF).
In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of Low-code development platforms.
Laboratory Virtual Instrument Engineering Workbench (LabVIEW) is a graphical system design and developmentplatform produced and distributed by National Instruments, based on a programming environment that uses a visual programming language. It is widely used for data acquisition, instrument control, and industrial automation. It provides tools for designing and deploying complex test and measurement systems.
eric is a free integrated development environment (IDE) used for computer programming. Since it is a full featured IDE, it provides by default all necessary tools needed for the writing of code and for the professional management of a software project.
Racket is a general-purpose, multi-paradigm programming language. The Racket language is a modern dialect of Lisp and a descendant of Scheme. It is designed as a platform for programming language design and implementation. In addition to the core Racket language, Racket is also used to refer to the family of programming languages and set of tools supporting development on and with Racket. Racket is also used for scripting, computer science education, and research.
PICkit is a family of programmers for PIC microcontrollers made by Microchip Technology. They are used to program and debug microcontrollers, as well as program EEPROM. Some models may also feature logic analyzers and serial communications (UART) tools.
Visual Studio is an integrated development environment (IDE) developed by Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms including Windows API, Windows Forms, Windows Presentation Foundation (WPF), Microsoft Store and Microsoft Silverlight. It can produce both native code and managed code.
OpenText™ UFT One, an AI-powered functional testing tool, accelerates test automation across desktop, web, mobile, mainframe, composite, and packaged enterprise-grade applications.
The Wing Python IDE is a family of integrated development environments (IDEs) from Wingware created specifically for the Python programming language with support for editing, testing, debugging, inspecting/browsing, and error-checking Python code.
Embedded Wizard is a graphical user interface tool developed and distributed by TARA Systems GmbH for creating graphical user interface (GUI) applications mainly for embedded systems, including microcontroller and microprocessor units. It provides a WYSIWYG front-end for editing graphics, effects and logic of the user interface and generates source code for particular target hardware. Embedded Wizard is independent of a specific graphics hardware, color format or input mechanism. It supports object oriented programming and does not require a Real-time operating system/Operating system, allowing GUIs to run on bare metal.
Mono is a free and open-source software framework that aims to run software made for the .NET Framework on Linux and other OSes. Originally by Ximian which was acquired by Novell, it was later developed by Xamarin which was acquired by Microsoft. In August 2024, Microsoft transferred ownership of Mono to WineHQ.
Sparx Systems Enterprise Architect is a visual modeling and design tool based on the OMG UML. The platform supports: the design and construction of software systems; modeling business processes; and modeling industry based domains. It is used by businesses and organizations to not only model the architecture of their systems, but to process the implementation of these models across the full application development life-cycle.