167:
330:, 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.
25:
343:. 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.
214:
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
367:
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
350:
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
311:
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
131:
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
215:
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.
451:
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
739:(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.
315:
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.
280:), 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.
306:
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
399:
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
205:
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.
372:, 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.
379:
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)
291:
in Eiffel deal with objects during execution, developers deal with abstractions representing classes, features, breakpoints (for debugging), clusters (groups of classes) and other
312:"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.
542:
processor garbage collection. Multiple improvements to Eiffel
Information System linking application code to appropriate external resources such as requirements documents.
392:
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 (
336:
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.
819:
Bertrand Meyer.: An Object-Oriented
Environment: Principles and Applications, Prentice Hall. 1995 (describes the principles underlying the original EiffelBench).
411:), major compilation speed improvements, improved support for multithreading, major EiffelBuild enhancements, first support for new mechanisms as defined by the
415:
Eiffel committee, support for preconditions and postconditions in external (e.g. C) routines, transparent way to call overloaded .NET routines from Eiffel (
896:
876:
517:
502:
495:
488:
481:
467:
460:
434:
339:
Second, EiffelStudio AutoTest provides a method for creating a new test based on an application failure at runtime. This type of test is called
615:
18.01, February 2018. Deeper integrated code analyzer. Improved type rules for conditional expressions and manifest arrays. Class features. (
474:
453:
445:
891:
429:
5.6, August 2005: enhanced diagram tool (UML support, force-directed graphs, better roundtripping), new EiffelCOM wizard for generation of
753:
629:
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. (
423:
416:
401:
881:
299:) wherever it appears in the interface, and regardless of its visual representation (name of the object, visual symbol or other).
727:
Code analyzer is a Rule-based static code analysis tool which operates both from an embedded mode within EiffelStudio and from
383:
393:
871:
89:
601:
17.01, January 2017. Library capability mechanism to document and enforce supported compilation options. Code templates. (
61:
566:
14.05, May 2014. Includes new Eiffel
Inspector tool (static analysis tool to help maintaining a high code quality). (
108:
408:
68:
657:
21.11, November 2021. Moving to GTK3 for Linux, Unix and a better presence on MAC OS, new Source control tool. (
302:
To pick a development object it suffices to right-click on it. The cursor then changes into a special symbol or
693:
681:
672:
665:
658:
651:
644:
637:
630:
623:
616:
609:
602:
46:
75:
748:
710:
622:
18.07, July 2018. Relaxed rules for class features. Subsequent bracket expressions. Remote project targets. (
125:
42:
556:
242:
The
Diagram Tool of EiffelStudio provides a graphical view of software structures. It can be used in both
407:
5.4, November 2003: new conversion mechanism, major run-time performance improvements (in particular for
288:
57:
194:, where projects and resources are listed. The source code base is usually available for check-out via
160:
148:
856:
261:
720:
program released by Eiffel
Software, originally produced as a result of a Masters Thesis project at
440:
5.7, October 2006: ISO/ECMA Eiffel addition (inline agents, new "expanded" semantics, named tuples,
774:
257:
227:
901:
717:
253:
The tool guarantees integrity of changes made in either style, for full "roundtrip engineering".
249:
Reverse engineering, automatically producing graphical representations of existing program texts.
35:
643:
20.05, May 2020. Multi-branch expression, untyped manifest string evaluation based on content. (
430:
608:
17.05, May 2017. Better detection of obsolete features. Pick&drop for local variables. (
276:
of classes and features: text view (full program text), contract view (interface only, with
732:
560:
636:
19.05, May 2019. Unicode operators, HiDPI, dead 'class' removal, compiler optimizations. (
359:
violation, EiffelStudio AutoTest produces a single new test reproducing the failing call.
82:
8:
246:
Forward engineering, as a design tool for producing software from graphical descriptions.
387:
886:
736:
528:
412:
277:
190:
The Eiffel community actively participates in its development; its official website is
287:
paradigm based on "development objects", "pebbles" and "holes". In the same way that
195:
184:
180:
136:
573:
15.01, January 2015. New SCOOP runtime brings significant performance improvement. (
328:
713:
539:
524:
509:
166:
595:
588:
581:
580:
15.08, August 2015. Improved EiffelWeb solution to build web server application. (
574:
567:
444:
support), refactoring facilities, new way to configure a project system, metrics (
333:
EiffelStudio AutoTest provides the user with three methods of test case creation.
356:
223:
851:
284:
231:
826:, Prentice Hall, 1995 (contains a description of the BON method and notation).
865:
422:
5.5, September 2004: docking, improved debugger, new ECMA language features (
375:
Major releases since 2001, and some of the new features for each, have been:
352:
692:, May 2024. Improved NETcore support, and debugging, new Composer commands (
523:
7.0, November 2011. Includes performance and functional enhancements to the
728:
156:
587:
15.12, December 2015. Language improvements (new agent's type notation). (
508:
6.8, May 2011. Includes the first implementation of facilities supporting
532:
807:
783:
721:
773:
Zurfluh, Stefan; Tschannen, Julian; Meyer, Bertrand (April 1, 2014),
170:
EiffelStudio version 7.2, showing Editor, Features, and
Diagram panes
24:
219:
551:
13.11, December 2013. This release marks the beginning of using a
433:
components, better class completion, faster .NET code generation (
552:
441:
152:
527:
parallel development facility, GUI library and tool support for
144:
140:
135:
EiffelStudio is available on a number of platforms including
842:
For open-source contributors: Eiffel home page at ETH Zurich
346:
The third method of creating tests produces what are called
324:
EiffelStudio includes an integrated testing facility called
735:(AST) produced by the Eiffel compiler and then generates a
664:
22.05, May 2022. Source control tool and UI improvements. (
191:
836:
272:
EiffelStudio makes it possible to display many different
199:
846:
841:
295:. A development object in EiffelStudio can be selected (
174:
816:, Prentice Hall, 1991 (second revised printing, 1992).
772:
202:. Also available are discussion forums and the like.
260:(the Business Object Notation, see bibliography) or
382:
5.1, December 2001: first version to support .NET (
49:. Unsourced material may be challenged and removed.
535:software development, and many other improvements.
671:22.12, December 2022. New platform, ARM support (
386:(PDF)). It was called "Eiffel#" before releasing
218:The interpreter part of EiffelStudio relies on a
863:
806:Eiffel Software: EiffelStudio manual. Online at
163:; other commercial licenses are also available.
319:
824:Seamless Object-Oriented Software Architecture
187:of the next release made regularly available.
128:developed and distributed by Eiffel Software.
514:Simple Concurrent Object-Oriented Programming
650:20.11, November 2020. Once classes, WrapC. (
754:List of integrated development environments
531:interface structures, improved support for
368:version of the language (as documented in
267:
897:Linux integrated development environments
847:Eiffel Software's home page at eiffel.com
237:
209:
109:Learn how and when to remove this message
877:Free integrated development environments
165:
680:23.09, September 2023. NETcore support(
594:16.05, May 2016. Maintenance release. (
864:
175:Status, license and community process
124:is a development environment for the
808:https://www.eiffel.org/documentation
234:CIL (Common Intermediate Language).
47:adding citations to reliable sources
18:
892:Integrated development environments
283:EiffelStudio relies on an original
13:
14:
913:
830:
822:Kim Waldén and Jean-Marc Nerson:
256:The graphical notation is either
700:
226:. The compiler generates either
159:. The source is available under
23:
882:Free compilers and interpreters
800:
34:needs additional citations for
766:
1:
759:
749:Eiffel (programming language)
553:new version numbering scheme
320:Unit and integration testing
7:
872:Object-oriented programming
852:EiffelStudio at SourceForge
742:
126:Eiffel programming language
10:
918:
857:EiffelStudio release notes
362:
538:7.1, June 2012. Includes
776:Rule-Based Code Analysis
268:User interface paradigm
16:Development environment
705:Code analyzer (former
264:. BON is the default.
238:Round-trip engineering
210:Compilation technology
171:
501:6.7, November 2010: (
487:6.5, November 2009: (
473:6.3, December 2008: (
459:6.1, November 2007: (
326:EiffelStudio AutoTest
169:
814:Eiffel: The Language
733:abstract syntax tree
370:Eiffel: The Language
43:improve this article
545:7.2, February 2013.
293:development objects
179:EiffelStudio is an
737:control-flow graph
731:. It utilizes the
709:) is an automated
172:
480:6.4, June 2009: (
183:development with
119:
118:
111:
93:
909:
837:Eiffel Community
812:Bertrand Meyer:
794:
793:
792:
790:
781:
770:
714:software testing
707:Inspector Eiffel
494:6.6, May 2010: (
466:6.2, May 2008: (
114:
107:
103:
100:
94:
92:
51:
27:
19:
917:
916:
912:
911:
910:
908:
907:
906:
862:
861:
833:
803:
798:
797:
788:
786:
779:
771:
767:
762:
745:
718:static analysis
703:
548:7.3, July 2013.
365:
357:class invariant
322:
289:object-oriented
270:
240:
224:virtual machine
212:
177:
115:
104:
98:
95:
52:
50:
40:
28:
17:
12:
11:
5:
915:
905:
904:
902:Free UML tools
899:
894:
889:
884:
879:
874:
860:
859:
854:
849:
844:
839:
832:
831:External links
829:
828:
827:
820:
817:
810:
802:
799:
796:
795:
764:
763:
761:
758:
757:
756:
751:
744:
741:
702:
699:
698:
697:
686:
685:
677:
676:
669:
662:
655:
648:
641:
634:
627:
620:
613:
606:
599:
592:
585:
578:
571:
564:
549:
546:
543:
536:
521:
506:
499:
492:
485:
478:
471:
464:
457:
449:
438:
427:
420:
405:
397:
390:
380:
364:
361:
321:
318:
285:user interface
269:
266:
251:
250:
247:
239:
236:
211:
208:
176:
173:
117:
116:
58:"EiffelStudio"
31:
29:
22:
15:
9:
6:
4:
3:
2:
914:
903:
900:
898:
895:
893:
890:
888:
885:
883:
880:
878:
875:
873:
870:
869:
867:
858:
855:
853:
850:
848:
845:
843:
840:
838:
835:
834:
825:
821:
818:
815:
811:
809:
805:
804:
785:
778:
777:
769:
765:
755:
752:
750:
747:
746:
740:
738:
734:
730:
725:
723:
719:
715:
712:
708:
701:Code analyzer
695:
694:24.05 release
691:
688:
687:
683:
682:23.09 release
679:
678:
674:
673:22.12 release
670:
667:
666:22.05 release
663:
660:
659:21.11 release
656:
653:
652:20.11 release
649:
646:
645:20.05 release
642:
639:
638:19.05 release
635:
632:
631:18.11 release
628:
625:
624:18.07 release
621:
618:
617:18.01 release
614:
611:
610:17.05 release
607:
604:
603:17.01 release
600:
597:
596:press release
593:
590:
589:press release
586:
583:
582:press release
579:
576:
575:press release
572:
569:
568:press release
565:
562:
561:press release
558:
554:
550:
547:
544:
541:
537:
534:
530:
526:
522:
519:
518:press release
515:
511:
507:
504:
503:press release
500:
497:
496:press release
493:
490:
489:press release
486:
483:
482:press release
479:
476:
475:press release
472:
469:
468:press release
465:
462:
461:press release
458:
455:
454:press release
450:
447:
446:press release
443:
439:
436:
435:press release
432:
431:Microsoft COM
428:
425:
424:press release
421:
418:
417:press release
414:
410:
406:
403:
402:press release
398:
395:
394:press release
391:
388:
385:
384:press release
381:
378:
377:
376:
373:
371:
360:
358:
354:
353:postcondition
349:
344:
342:
337:
334:
331:
329:
327:
317:
313:
310:
305:
300:
298:
294:
290:
286:
281:
279:
275:
265:
263:
259:
254:
248:
245:
244:
243:
235:
233:
229:
225:
221:
216:
207:
203:
201:
197:
193:
188:
186:
185:beta versions
182:
168:
164:
162:
158:
154:
150:
146:
142:
138:
133:
129:
127:
123:
113:
110:
102:
99:December 2015
91:
88:
84:
81:
77:
74:
70:
67:
63:
60: –
59:
55:
54:Find sources:
48:
44:
38:
37:
32:This article
30:
26:
21:
20:
823:
813:
801:Bibliography
787:, retrieved
775:
768:
729:command line
726:
706:
704:
689:
557:Release note
513:
374:
369:
366:
347:
345:
340:
338:
335:
332:
325:
323:
314:
308:
303:
301:
296:
292:
282:
273:
271:
255:
252:
241:
217:
213:
204:
189:
178:
134:
130:
122:EiffelStudio
121:
120:
105:
96:
86:
79:
72:
65:
53:
41:Please help
36:verification
33:
181:open-source
157:RaspberryPi
866:Categories
784:ETH Zurich
760:References
722:ETH Zurich
222:-oriented
196:Subversion
192:Eiffel.org
132:browsing.
69:newspapers
887:Compilers
533:void-safe
348:generated
341:extracted
278:contracts
743:See also
220:bytecode
789:May 25,
442:Unicode
363:History
149:Solaris
137:Windows
83:scholar
711:Eiffel
529:ribbon
409:agents
304:pebble
297:picked
145:Mac OS
85:
78:
71:
64:
56:
780:(PDF)
690:24.05
540:SCOOP
525:SCOOP
510:SCOOP
274:views
141:Linux
90:JSTOR
76:books
791:2014
716:and
413:ECMA
309:drop
232:.NET
62:news
559:) (
555:. (
516:. (
355:or
262:UML
258:BON
230:or
200:Git
198:or
161:GPL
153:VMS
45:by
868::
782:,
724:.
696:).
684:).
675:).
668:).
661:).
654:).
647:).
640:).
633:).
626:).
619:).
598:).
591:).
584:).
577:).
570:).
563:).
520:).
512:,
505:).
498:).
491:).
484:).
477:).
470:).
463:).
456:).
448:).
437:).
426:).
419:).
404:).
396:).
155:,
151:,
147:,
143:,
139:,
612:)
605:)
452:(
400:(
389:.
228:C
112:)
106:(
101:)
97:(
87:·
80:·
73:·
66:·
39:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.