CINXE.COM
EiffelStudio - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>EiffelStudio - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"59692090-6ee2-4748-8287-000afede6591","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"EiffelStudio","wgTitle":"EiffelStudio","wgCurRevisionId":1275390828,"wgRevisionId":1275390828,"wgArticleId":6443934,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description matches Wikidata","Articles needing additional references from December 2015","All articles needing additional references","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"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en", "wgPageContentModel":"wikitext","wgRelevantPageName":"EiffelStudio","wgRelevantArticleId":6443934,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q16992286","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model", "platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap", "ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.17"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/EiffelStudio_screenshot_v7.2_GPL.png/1200px-EiffelStudio_screenshot_v7.2_GPL.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/EiffelStudio_screenshot_v7.2_GPL.png/800px-EiffelStudio_screenshot_v7.2_GPL.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="450"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/EiffelStudio_screenshot_v7.2_GPL.png/640px-EiffelStudio_screenshot_v7.2_GPL.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="360"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="EiffelStudio - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/EiffelStudio"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=EiffelStudio&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/EiffelStudio"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-EiffelStudio rootpage-EiffelStudio skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="Main menu" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages"><span>Special pages</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=EiffelStudio" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=EiffelStudio" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=EiffelStudio" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=EiffelStudio" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Status,_license_and_community_process" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Status,_license_and_community_process"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Status, license and community process</span> </div> </a> <ul id="toc-Status,_license_and_community_process-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Compilation_technology" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Compilation_technology"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Compilation technology</span> </div> </a> <ul id="toc-Compilation_technology-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Round-trip_engineering" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Round-trip_engineering"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Round-trip engineering</span> </div> </a> <ul id="toc-Round-trip_engineering-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-User_interface_paradigm" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#User_interface_paradigm"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>User interface paradigm</span> </div> </a> <ul id="toc-User_interface_paradigm-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Unit_and_integration_testing" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Unit_and_integration_testing"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Unit and integration testing</span> </div> </a> <ul id="toc-Unit_and_integration_testing-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Code_analyzer" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Code_analyzer"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Code analyzer</span> </div> </a> <ul id="toc-Code_analyzer-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bibliography" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Bibliography"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Bibliography</span> </div> </a> <ul id="toc-Bibliography-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="Table of Contents" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">EiffelStudio</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 1 language" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-1" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">1 language</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%A7%DB%8C%D9%81%D9%84%E2%80%8C%D8%A7%D8%B3%D8%AA%D9%88%D8%AF%DB%8C%D9%88" title="ایفلاستودیو – Persian" lang="fa" hreflang="fa" data-title="ایفلاستودیو" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q16992286#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/EiffelStudio" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:EiffelStudio" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/EiffelStudio"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=EiffelStudio&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=EiffelStudio&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/EiffelStudio"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=EiffelStudio&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=EiffelStudio&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/EiffelStudio" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/EiffelStudio" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=EiffelStudio&oldid=1275390828" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=EiffelStudio&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=EiffelStudio&id=1275390828&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEiffelStudio"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEiffelStudio"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=EiffelStudio&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=EiffelStudio&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q16992286" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Development environment</div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-More_citations_needed plainlinks metadata ambox ambox-content ambox-Refimprove" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>needs additional citations for <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">verification</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/EiffelStudio" title="Special:EditPage/EiffelStudio">improve this article</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and removed.<br /><small><span class="plainlinks"><i>Find sources:</i> <a rel="nofollow" class="external text" href="https://www.google.com/search?as_eq=wikipedia&q=%22EiffelStudio%22">"EiffelStudio"</a> – <a rel="nofollow" class="external text" href="https://www.google.com/search?tbm=nws&q=%22EiffelStudio%22+-wikipedia&tbs=ar:1">news</a> <b>·</b> <a rel="nofollow" class="external text" href="https://www.google.com/search?&q=%22EiffelStudio%22&tbs=bkt:s&tbm=bks">newspapers</a> <b>·</b> <a rel="nofollow" class="external text" href="https://www.google.com/search?tbs=bks:1&q=%22EiffelStudio%22+-wikipedia">books</a> <b>·</b> <a rel="nofollow" class="external text" href="https://scholar.google.com/scholar?q=%22EiffelStudio%22">scholar</a> <b>·</b> <a rel="nofollow" class="external text" href="https://www.jstor.org/action/doBasicSearch?Query=%22EiffelStudio%22&acc=on&wc=on">JSTOR</a></span></small></span> <span class="date-container"><i>(<span class="date">December 2015</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p><b>EiffelStudio</b> is a development environment for the <a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel programming language</a> developed and distributed by Eiffel Software. </p><p>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. </p><p>EiffelStudio is available on a number of platforms including <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="/wiki/Linux" title="Linux">Linux</a>, <a href="/wiki/Mac_OS" class="mw-redirect" title="Mac OS">Mac OS</a>, <a href="/wiki/Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a>, <a href="/wiki/OpenVMS" title="OpenVMS">VMS</a>, <a href="/wiki/Raspberry_Pi" title="Raspberry Pi">RaspberryPi</a>. The source is available under <a href="/wiki/GNU_General_Public_License" title="GNU General Public License">GPL</a>; other commercial licenses are also available. </p> <figure typeof="mw:File/Thumb"><a href="/wiki/File:EiffelStudio_screenshot_v7.2_GPL.png" class="mw-file-description"><img alt="A window containing three panes: an editor pane containing class source code, a features pane containing a list of features of the class source code under edit, and a diagram pane showing the class as an icon with relationships to other classes" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/4b/EiffelStudio_screenshot_v7.2_GPL.png/400px-EiffelStudio_screenshot_v7.2_GPL.png" decoding="async" width="400" height="225" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/4b/EiffelStudio_screenshot_v7.2_GPL.png/600px-EiffelStudio_screenshot_v7.2_GPL.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/4b/EiffelStudio_screenshot_v7.2_GPL.png/800px-EiffelStudio_screenshot_v7.2_GPL.png 2x" data-file-width="1600" data-file-height="900" /></a><figcaption>EiffelStudio version 7.2, showing Editor, Features, and Diagram panes</figcaption></figure> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Status,_license_and_community_process"><span id="Status.2C_license_and_community_process"></span>Status, license and community process</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=1" title="Edit section: Status, license and community process"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>EiffelStudio is an <a href="/wiki/Open-source_model" class="mw-redirect" title="Open-source model">open-source</a> development with <a href="/wiki/Development_stage" class="mw-redirect" title="Development stage">beta versions</a> of the next release made regularly available. </p><p>The Eiffel community actively participates in its development; its official website is <a rel="nofollow" class="external text" href="https://www.eiffel.org/">Eiffel.org</a>, where projects and resources are listed. The source code base is usually available for check-out via <a href="/wiki/Apache_Subversion" title="Apache Subversion">Subversion</a> or <a href="/wiki/Git" title="Git">Git</a>. Also available are discussion forums and the like. </p><p>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. </p> <div class="mw-heading mw-heading2"><h2 id="Compilation_technology">Compilation technology</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=2" title="Edit section: Compilation technology"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>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. </p><p>The interpreter part of EiffelStudio relies on a <a href="/wiki/Bytecode" title="Bytecode">bytecode</a>-oriented <a href="/wiki/Virtual_machine" title="Virtual machine">virtual machine</a>. The compiler generates either <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> or <a href="/wiki/.NET_Framework" title=".NET Framework">.NET</a> CIL (Common Intermediate Language). </p> <div class="mw-heading mw-heading2"><h2 id="Round-trip_engineering">Round-trip engineering</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=3" title="Edit section: Round-trip engineering"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The Diagram Tool of EiffelStudio provides a graphical view of software structures. It can be used in both </p> <ul><li>Forward engineering, as a design tool for producing software from graphical descriptions.</li> <li>Reverse engineering, automatically producing graphical representations of existing program texts.</li></ul> <p>The tool guarantees integrity of changes made in either style, for full "roundtrip engineering". </p><p>The graphical notation is either <a href="/wiki/Business_Object_Notation" title="Business Object Notation">BON</a> (the Business Object Notation, see bibliography) or <a href="/wiki/Unified_Modeling_Language" title="Unified Modeling Language">UML</a>. BON is the default. </p> <div class="mw-heading mw-heading2"><h2 id="User_interface_paradigm">User interface paradigm</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=4" title="Edit section: User interface paradigm"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>EiffelStudio makes it possible to display many different <b>views</b> of classes and features: text view (full program text), contract view (interface only, with <a href="/wiki/Design_by_contract" title="Design by contract">contracts</a>), 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. </p><p>EiffelStudio relies on an original <a href="/wiki/User_interface" title="User interface">user interface</a> paradigm based on "development objects", "pebbles" and "holes". In the same way that <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented</a> in Eiffel deal with objects during execution, developers deal with abstractions representing classes, features, breakpoints (for debugging), clusters (groups of classes) and other <b>development objects</b>. A development object in EiffelStudio can be selected (<b>picked</b>) wherever it appears in the interface, and regardless of its visual representation (name of the object, visual symbol or other). </p><p>To pick a development object it suffices to right-click on it. The cursor then changes into a special symbol or <b>pebble</b> 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 <b>drop</b> 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. </p><p>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. </p> <div class="mw-heading mw-heading2"><h2 id="Unit_and_integration_testing">Unit and integration testing</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=5" title="Edit section: Unit and integration testing"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>EiffelStudio includes an integrated testing facility called <b>EiffelStudio AutoTest</b> <a rel="nofollow" class="external autonumber" href="http://docs.eiffel.com/book/eiffelstudio/autotest">[1]</a>, 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. </p><p>EiffelStudio AutoTest provides the user with three methods of test case creation. </p><p>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. </p><p>Second, EiffelStudio AutoTest provides a method for creating a new test based on an application failure at runtime. This type of test is called <i>extracted</i>. 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. </p><p>The third method of creating tests produces what are called <i>generated</i> 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 <a href="/wiki/Postcondition" title="Postcondition">postcondition</a> or <a href="/wiki/Class_invariant" title="Class invariant">class invariant</a> violation, EiffelStudio AutoTest produces a single new test reproducing the failing call. </p> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=6" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>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 <i>Eiffel: The Language</i>, 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. </p><p>Major releases since 2001, and some of the new features for each, have been: </p> <ul><li>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)</li> <li>5.1, December 2001: first version to support .NET (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20061017131601/http://eiffel.com/general/news/pdf/12-02-2001.pdf">press release</a> (PDF)). It was called "Eiffel#" before releasing <a rel="nofollow" class="external autonumber" href="http://msdn.microsoft.com/en-us/library/ms973898.aspx">[2]</a>.</li> <li>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 (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20061017131507/http://eiffel.com/general/news/12-18-2002.html">press release</a>).</li> <li>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 (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20061017131244/http://eiffel.com/general/news/studio53pressrelease.html">press release</a>).</li> <li>5.4, November 2003: new conversion mechanism, major run-time performance improvements (in particular for <a href="/wiki/Eiffel_(programming_language)#Agents" title="Eiffel (programming language)">agents</a>), major compilation speed improvements, improved support for multithreading, major EiffelBuild enhancements, first support for new mechanisms as defined by the <a href="/wiki/Ecma_International" title="Ecma International">ECMA</a> Eiffel committee, support for preconditions and postconditions in external (e.g. C) routines, transparent way to call overloaded .NET routines from Eiffel (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20061017131510/http://eiffel.com/general/news/studio54pressrelease.html">press release</a>).</li> <li>5.5, September 2004: docking, improved debugger, new ECMA language features (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20061017131400/http://eiffel.com/general/news/studio55pressrelease.html">press release</a>).</li> <li>5.6, August 2005: enhanced diagram tool (UML support, force-directed graphs, better roundtripping), new EiffelCOM wizard for generation of <a href="/wiki/Component_Object_Model" title="Component Object Model">Microsoft COM</a> components, better class completion, faster .NET code generation (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20061017131505/https://www.eiffel.com/general/news/EiffelStudio56pressrelease.html">press release</a>).</li> <li>5.7, October 2006: ISO/ECMA Eiffel addition (inline agents, new "expanded" semantics, named tuples, <a href="/wiki/Unicode" title="Unicode">Unicode</a> support), refactoring facilities, new way to configure a project system, metrics (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20090210140801/http://eiffel.com/general/news/EiffelStudio57pressrelease.html">press release</a>).</li> <li>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 (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20090210122744/http://eiffel.com/general/news/2007/eiffelstudio60_release.html">press release</a>).</li> <li>6.1, November 2007: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20081208075753/http://www.eiffel.com/general/news/2007/eiffelstudio61_release.html">press release</a>).</li> <li>6.2, May 2008: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20081004161137/http://www.eiffel.com/general/news/2008/eiffelstudio62_release.html">press release</a>).</li> <li>6.3, December 2008: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20090211151048/http://eiffel.com/general/news/2008/eiffelstudio63_release.html">press release</a>).</li> <li>6.4, June 2009: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20090716231558/http://www.eiffel.com/general/news/2009/eiffelstudio64_release.html">press release</a>).</li> <li>6.5, November 2009: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20100324054952/http://www.eiffel.com/general/news/2009/eiffelstudio65_release.html">press release</a>).</li> <li>6.6, May 2010: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20120306224201/http://www.eiffel.com/general/news/2010/eiffelstudio66_release.html">press release</a>).</li> <li>6.7, November 2010: (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20120307042047/http://www.eiffel.com/general/news/2010/eiffelstudio67_release.html">press release</a>).</li> <li>6.8, May 2011. Includes the first implementation of facilities supporting <a href="/wiki/SCOOP_(software)" title="SCOOP (software)">SCOOP</a>, <i>Simple Concurrent Object-Oriented Programming</i>. (<a rel="nofollow" class="external text" href="https://web.archive.org/web/20111124112650/http://www.eiffel.com/general/news/2011/eiffelstudio68_release.html">press release</a>).</li> <li>7.0, November 2011. Includes performance and functional enhancements to the <a href="/wiki/SCOOP_(software)" title="SCOOP (software)">SCOOP</a> parallel development facility, GUI library and tool support for <a href="/wiki/Ribbon_(computing)" title="Ribbon (computing)">ribbon</a> interface structures, improved support for <a href="/wiki/Void_safety" title="Void safety">void-safe</a> software development, and many other improvements.</li> <li>7.1, June 2012. Includes <a href="/wiki/SCOOP_(software)" title="SCOOP (software)">SCOOP</a> processor garbage collection. Multiple improvements to Eiffel Information System linking application code to appropriate external resources such as requirements documents.</li> <li>7.2, February 2013.</li> <li>7.3, July 2013.</li> <li>13.11, December 2013. This release marks the beginning of using a <a rel="nofollow" class="external text" href="http://eiffelroom.com/node/673">new version numbering scheme</a>. (<a rel="nofollow" class="external text" href="http://docs.eiffel.com/book/eiffelstudio/release-notes-eiffelstudio-1311">Release note</a>) (<a rel="nofollow" class="external text" href="https://www.eiffel.com/2013/eiffelstudio-13-11-released/">press release</a>).</li> <li>14.05, May 2014. Includes new Eiffel Inspector tool (static analysis tool to help maintaining a high code quality). (<a rel="nofollow" class="external text" href="https://www.eiffel.com/2014/eiffelstudio-14-05/">press release</a>).</li> <li>15.01, January 2015. New SCOOP runtime brings significant performance improvement. (<a rel="nofollow" class="external text" href="https://www.eiffel.com/2015/eiffelstudio-15-01/">press release</a>).</li> <li>15.08, August 2015. Improved EiffelWeb solution to build web server application. (<a rel="nofollow" class="external text" href="https://www.eiffel.com/2015/eiffelstudio-15-08/">press release</a>).</li> <li>15.12, December 2015. Language improvements (new agent's type notation). (<a rel="nofollow" class="external text" href="https://www.eiffel.com/2015/eiffelstudio-15-12/">press release</a>).</li> <li>16.05, May 2016. Maintenance release. (<a rel="nofollow" class="external text" href="https://www.eiffel.com/2016/eiffelstudio-16-05/">press release</a>).</li> <li>17.01, January 2017. Library capability mechanism to document and enforce supported compilation options. Code templates. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_17.01">17.01 release</a>)</li> <li>17.05, May 2017. Better detection of obsolete features. Pick&drop for local variables. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_17.05">17.05 release</a>)</li> <li>18.01, February 2018. Deeper integrated code analyzer. Improved type rules for conditional expressions and manifest arrays. Class features. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_18.01">18.01 release</a>).</li> <li>18.07, July 2018. Relaxed rules for class features. Subsequent bracket expressions. Remote project targets. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_18.07">18.07 release</a>).</li> <li>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. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_18.11">18.11 release</a>).</li> <li>19.05, May 2019. Unicode operators, HiDPI, dead 'class' removal, compiler optimizations. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_19.05">19.05 release</a>).</li> <li>20.05, May 2020. Multi-branch expression, untyped manifest string evaluation based on content. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_20.05">20.05 release</a>).</li> <li>20.11, November 2020. Once classes, WrapC. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_20.11">20.11 release</a>).</li> <li>21.11, November 2021. Moving to GTK3 for Linux, Unix and a better presence on MAC OS, new Source control tool. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_21.11">21.11 release</a>).</li> <li>22.05, May 2022. Source control tool and UI improvements. (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_22.05">22.05 release</a>).</li> <li>22.12, December 2022. New platform, ARM support (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_22.12">22.12 release</a>).</li> <li>23.09, September 2023. NETcore support(<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_23.09">23.09 release</a>).</li> <li>24.05, May 2024. Improved NETcore support, and debugging, new Composer commands (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_24.05">24.05 release</a>).</li> <li><b>25.02</b>, February 2025. Improved Diagram tool, execution parameters, and new mongodb and mariadb libraries (<a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/Release_notes_for_EiffelStudio_25.02">25.02 release</a>).</li></ul> <div class="mw-heading mw-heading2"><h2 id="Code_analyzer">Code analyzer</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=7" title="Edit section: Code analyzer"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Code analyzer (former <i>Inspector Eiffel</i>) is an automated <a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a> <a href="/wiki/Software_testing" title="Software testing">software testing</a> and <a href="/wiki/Static_program_analysis" title="Static program analysis">static analysis</a> program released by Eiffel Software, originally produced as a result of a Masters Thesis project at <a href="/wiki/ETH_Zurich" title="ETH Zurich">ETH Zurich</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p><p>Code analyzer is a Rule-based static code analysis tool which operates both from an embedded mode within EiffelStudio and from <a href="/wiki/Command_line" class="mw-redirect" title="Command line">command line</a>. It utilizes the <a href="/wiki/Abstract_syntax_tree" title="Abstract syntax tree">abstract syntax tree</a> (AST) produced by the Eiffel compiler and then generates a <a href="/wiki/Control-flow_graph" title="Control-flow graph">control-flow graph</a> (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. </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=8" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel (programming language)</a></li> <li><a href="/wiki/List_of_integrated_development_environments" class="mw-redirect" title="List of integrated development environments">List of integrated development environments</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=9" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFZurfluhTschannenMeyer2014" class="citation cs2">Zurfluh, Stefan; Tschannen, Julian; Meyer, Bertrand (April 1, 2014), <a rel="nofollow" class="external text" href="http://se.inf.ethz.ch/student_projects/stefan_zurfluh/report.pdf"><i>Rule-Based Code Analysis</i></a> <span class="cs1-format">(PDF)</span>, <a href="/wiki/ETH_Zurich" title="ETH Zurich">ETH Zurich</a><span class="reference-accessdate">, retrieved <span class="nowrap">May 25,</span> 2014</span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Rule-Based+Code+Analysis&rft.pub=ETH+Zurich&rft.date=2014-04-01&rft.aulast=Zurfluh&rft.aufirst=Stefan&rft.au=Tschannen%2C+Julian&rft.au=Meyer%2C+Bertrand&rft_id=http%3A%2F%2Fse.inf.ethz.ch%2Fstudent_projects%2Fstefan_zurfluh%2Freport.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AEiffelStudio" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Bibliography">Bibliography</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=10" title="Edit section: Bibliography"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Eiffel Software: EiffelStudio manual. Online at <a rel="nofollow" class="external text" href="https://www.eiffel.org/documentation">https://www.eiffel.org/documentation</a></li> <li>Bertrand Meyer: <i>Eiffel: The Language</i>, Prentice Hall, 1991 (second revised printing, 1992).</li> <li>Bertrand Meyer.: An Object-Oriented Environment: Principles and Applications, Prentice Hall. 1995 (describes the principles underlying the original EiffelBench).</li> <li>Kim Waldén and Jean-Marc Nerson: <i>Seamless Object-Oriented Software Architecture</i>, Prentice Hall, 1995 (contains a description of the BON method and notation).</li></ul> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=EiffelStudio&action=edit&section=11" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://www.eiffel.org">Eiffel Community</a></li> <li><a rel="nofollow" class="external text" href="http://dev.eiffel.com">For open-source contributors: Eiffel home page at ETH Zurich</a></li> <li><a rel="nofollow" class="external text" href="http://www.eiffel.com">Eiffel Software's home page at eiffel.com</a></li> <li><a rel="nofollow" class="external text" href="https://sourceforge.net/projects/eiffelstudio">EiffelStudio at SourceForge</a></li> <li><a rel="nofollow" class="external text" href="https://www.eiffel.org/doc/eiffelstudio/EiffelStudio_release_notes">EiffelStudio release notes</a></li></ul> <!-- NewPP limit report Parsed by mw‐api‐ext.eqiad.main‐7f496b5f98‐d6fzk Cached time: 20250212192642 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.222 seconds Real time usage: 0.306 seconds Preprocessor visited node count: 406/1000000 Post‐expand include size: 11925/2097152 bytes Template argument size: 407/2097152 bytes Highest expansion depth: 9/100 Expensive parser function count: 2/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 6093/5000000 bytes Lua time usage: 0.133/10.000 seconds Lua memory usage: 3723487/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 262.317 1 -total 39.13% 102.648 1 Template:Reflist 34.64% 90.854 1 Template:Citation 31.85% 83.535 1 Template:Short_description 28.41% 74.522 1 Template:More_citations_needed 25.93% 68.028 1 Template:Ambox 18.37% 48.195 2 Template:Pagetype 6.95% 18.228 3 Template:Main_other 6.25% 16.400 1 Template:Find_sources_mainspace 5.71% 14.987 1 Template:SDcat --> <!-- Saved in parser cache with key enwiki:pcache:6443934:|#|:idhash:canonical and timestamp 20250212192642 and revision id 1275390828. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&type=1x1&usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=EiffelStudio&oldid=1275390828">https://en.wikipedia.org/w/index.php?title=EiffelStudio&oldid=1275390828</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Object-oriented_programming" title="Category:Object-oriented programming">Object-oriented programming</a></li><li><a href="/wiki/Category:Free_integrated_development_environments" title="Category:Free integrated development environments">Free integrated development environments</a></li><li><a href="/wiki/Category:Free_and_open_source_compilers" title="Category:Free and open source compilers">Free and open source compilers</a></li><li><a href="/wiki/Category:Free_and_open_source_interpreters" title="Category:Free and open source interpreters">Free and open source interpreters</a></li><li><a href="/wiki/Category:Compilers" title="Category:Compilers">Compilers</a></li><li><a href="/wiki/Category:Integrated_development_environments" title="Category:Integrated development environments">Integrated development environments</a></li><li><a href="/wiki/Category:Linux_integrated_development_environments" title="Category:Linux integrated development environments">Linux integrated development environments</a></li><li><a href="/wiki/Category:Free_UML_tools" title="Category:Free UML tools">Free UML tools</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_December_2015" title="Category:Articles needing additional references from December 2015">Articles needing additional references from December 2015</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 12 February 2025, at 19:26<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=EiffelStudio&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">EiffelStudio</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>1 language</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-955f5c9b8-xgtkm","wgBackendResponseTime":148,"wgPageParseReport":{"limitreport":{"cputime":"0.222","walltime":"0.306","ppvisitednodes":{"value":406,"limit":1000000},"postexpandincludesize":{"value":11925,"limit":2097152},"templateargumentsize":{"value":407,"limit":2097152},"expansiondepth":{"value":9,"limit":100},"expensivefunctioncount":{"value":2,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":6093,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 262.317 1 -total"," 39.13% 102.648 1 Template:Reflist"," 34.64% 90.854 1 Template:Citation"," 31.85% 83.535 1 Template:Short_description"," 28.41% 74.522 1 Template:More_citations_needed"," 25.93% 68.028 1 Template:Ambox"," 18.37% 48.195 2 Template:Pagetype"," 6.95% 18.228 3 Template:Main_other"," 6.25% 16.400 1 Template:Find_sources_mainspace"," 5.71% 14.987 1 Template:SDcat"]},"scribunto":{"limitreport-timeusage":{"value":"0.133","limit":"10.000"},"limitreport-memusage":{"value":3723487,"limit":52428800}},"cachereport":{"origin":"mw-api-ext.eqiad.main-7f496b5f98-d6fzk","timestamp":"20250212192642","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"EiffelStudio","url":"https:\/\/en.wikipedia.org\/wiki\/EiffelStudio","sameAs":"http:\/\/www.wikidata.org\/entity\/Q16992286","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q16992286","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2006-08-14T01:31:11Z","dateModified":"2025-02-12T19:26:41Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/4\/4b\/EiffelStudio_screenshot_v7.2_GPL.png","headline":"Development environment"}</script> </body> </html>