EiffelStudio - EiffelStudio

EiffelStudio ist eine Entwicklungsumgebung für die von Eiffel Software entwickelte und vertriebene Programmiersprache Eiffel.

EiffelStudio enthält eine Kombination von Tools, die unter einer einzigen Benutzeroberfläche integriert sind: Compiler, Interpreter, Debugger, Browser, Metrik-Tool, Profiler, Diagramm- und Code-Inspector-Tool. Die Benutzeroberfläche basiert auf einer Reihe spezifischer UI-Paradigmen, insbesondere "Pick-and-Drop" für ein effektives Surfen.

EiffelStudio ist auf einer Reihe von Plattformen verfügbar, darunter Windows , Linux , Mac OS , Solaris , VMS und RaspberryPi . Die Quelle ist unter GPL verfügbar . Andere kommerzielle Lizenzen sind ebenfalls erhältlich.

Ein Fenster mit drei Bereichen: ein Editorbereich mit Klassenquellcode, ein Funktionsbereich mit einer Liste der Funktionen des zu bearbeitenden Klassenquellcodes und ein Diagrammbereich, in dem die Klasse als Symbol mit Beziehungen zu anderen Klassen angezeigt wird
EiffelStudio Version 7.2 mit Editor-, Funktions- und Diagrammfenstern

Status, Lizenz und Community-Prozess

EiffelStudio ist eine Open-Source- Entwicklung mit Beta-Versionen der nächsten Version, die regelmäßig verfügbar gemacht werden.

Die Eiffelgemeinschaft beteiligt sich aktiv an ihrer Entwicklung; Die offizielle Website ist Eiffel.org , auf der Projekte und Ressourcen aufgelistet sind. Die Quellcodebasis steht normalerweise zum Auschecken über Subversion oder Git zur Verfügung . Ebenfalls erhältlich sind Diskussionsforen und dergleichen.

Zusammenstellungstechnik

EiffelStudio verwendet eine spezielle Kompilierungstechnologie namens Melting Ice (von Eiffel Software als Marke beansprucht), die die eigentliche Kompilierung mit der Interpretation der seit der letzten Kompilierung geänderten Elemente für eine sehr schnelle Abwicklung integriert (Neukompilierungszeit proportional zur Größe der Änderung, nicht die Größe des Gesamtprogramms). Obwohl solche "geschmolzenen" Programme geliefert werden können, besteht die übliche Praxis darin, vor der Veröffentlichung einen "Finalisierungs" -Schritt durchzuführen. Die Finalisierung ist eine hochoptimierte Form der Kompilierung, die länger dauert, aber optimierte ausführbare Dateien generiert.

Der Interpreter-Teil von EiffelStudio basiert auf einer bytecode- orientierten virtuellen Maschine . Der Compiler generiert entweder C oder .NET CIL (Common Intermediate Language).

Roundtrip-Technik

Das Diagramm-Tool von EiffelStudio bietet eine grafische Ansicht von Softwarestrukturen. Es kann in beiden verwendet werden

  • Forward Engineering als Entwurfswerkzeug zur Erstellung von Software aus grafischen Beschreibungen.
  • Reverse Engineering, das automatisch grafische Darstellungen vorhandener Programmtexte erstellt.

Das Tool garantiert die Integrität von Änderungen, die in beiden Stilen vorgenommen wurden, für eine vollständige "Roundtrip-Technik".

Die grafische Notation ist entweder BON (die Business Object Notation, siehe Bibliographie) oder UML . BON ist die Standardeinstellung.

Paradigma der Benutzeroberfläche

Mit EiffelStudio können viele verschiedene Ansichten von Klassen und Features angezeigt werden : Textansicht (vollständiger Programmtext), Vertragsansicht (nur Schnittstelle, mit Verträgen ), flache Ansicht (einschließlich geerbter Features), Clients (alle verwendeten Klassen und Features) eine bestimmte Klasse oder ein bestimmtes Feature), den Vererbungsverlauf (was passiert mit einem Feature in der Vererbungsstruktur) und viele andere.

EiffelStudio basiert auf einem ursprünglichen Benutzeroberflächenparadigma, das auf "Entwicklungsobjekten", "Kieselsteinen" und "Löchern" basiert. Ebenso wie objektorientierte in Eiffel Objekte während der Ausführung behandeln, behandeln Entwickler Abstraktionen, die Klassen, Features, Haltepunkte (zum Debuggen), Cluster (Gruppen von Klassen) und andere Entwicklungsobjekte darstellen . Ein Entwicklungsobjekt in EiffelStudio kann ausgewählt ( ausgewählt ) werden, wo immer es in der Benutzeroberfläche angezeigt wird, und unabhängig von seiner visuellen Darstellung (Name des Objekts, visuelles Symbol oder anderes).

Um ein Entwicklungsobjekt auszuwählen, reicht es aus, mit der rechten Maustaste darauf zu klicken. Der Cursor verwandelt sich dann in ein spezielles Symbol oder einen Kiesel , der dem Objekttyp entspricht: "Blase" (Ellipse) für eine Klasse, Punkt für einen Haltepunkt, Kreuz für ein Feature usw. Während Sie den Cursor bewegen, wird eine Linie von der angezeigt Originalobjekt an die aktuelle Position. Sie können dann einfach auf den Kiesel in jeden passenden Ort: entweder ein Symbol , um ein Loch mit der gleichen Gesamtform (Klasse Loch, Unterbrechungsloch, Feature Loch etc.) oder ein Fenster mit einem kompatibelen Typ darstellt. Durch das Ablegen eines Kiesels in ein Werkzeug wird das gesamte Werkzeug auf das Entwicklungsobjekt ausgerichtet, das "ausgewählt" wurde. Beispielsweise zeigt ein Klassenwerkzeug jetzt die ausgewählte Klasse an, unabhängig davon, welche Ansicht (Text, Vertrag, Wohnung usw.) ausgewählt wurde. Dies ist als "Pick-and-Drop" -Paradigma bekannt.

Die Kombination aus mehreren Ansichten und Pick-and-Drop ermöglicht das schnelle Durchsuchen komplexer Systeme und das Verfolgen der manchmal erweiterten Transformationen, die Features bei der Vererbung durchlaufen: Umbenennen, Neudefinition, Undefinition.

Unit- und Integrationstests

EiffelStudio enthält eine integrierte Testeinrichtung namens EiffelStudio AutoTest [1] , mit der Entwickler einfache bis hochentwickelte Unit- und Integrationstestsuiten erstellen können. Mit den EiffelStudio AutoTest-Funktionen kann der Entwickler Eiffel-Klassencode von der Funktionsebene (z. B. Unit-Test) bis zu ganzen Klassensystemen (z. B. Integration) ausführen und testen. Daher führt die Ausführung dieses Codes auch die Verträge der ausgeführten Features und Attribute aus. Als solches ist EiffelStudio AutoTest ein Mittel zur Durchführung der "Tests" oder Annahmen des Entwurfs durch Vertragsbedingungen. Daher müssen Unit- und Integrationstests nicht durch Behauptungen oder Testorakel erneut getestet werden, was bereits in den Verträgen des Klassentextes als Spezifikation kodiert wurde.

EiffelStudio AutoTest bietet dem Benutzer drei Methoden zur Erstellung von Testfällen.

Zunächst erstellt EiffelStudio AutoTest für manuell erstellte Tests eine Testklasse, die ein Framework für den Test enthält. Der Benutzer muss nur den Testcode selbst angeben.

Zweitens bietet EiffelStudio AutoTest eine Methode zum Erstellen eines neuen Tests basierend auf einem Anwendungsfehler zur Laufzeit. Diese Art von Test wird als extrahiert bezeichnet . Wenn beim Ausführen des Zielsystems ein unerwarteter Fehler auftritt, kann EiffelStudio AutoTest anhand der im Debugger verfügbaren Informationen einen neuen Test erstellen, der den Status und die Aufrufe, die den Fehler verursacht haben, reproduziert. Sobald das Problem behoben ist, kann der extrahierte Test zur Absicherung gegen Regressionen des Problems zur Testsuite hinzugefügt werden.

Die dritte Methode zum Erstellen von Tests erzeugt sogenannte generierte Tests. In diesem Szenario stellt der Benutzer EiffelStudio AutoTest die Klassen zur Verfügung, für die Tests generiert werden sollen, sowie einige zusätzliche Informationen, die zur Steuerung der Testgenerierung verwendet werden. Das Tool ruft dann Routinen in den Zielklassen mit zufälligen Argumentwerten auf. Für jede eindeutige Nachbedingung oder Klasseninvariante Verletzung, erzeugt einen einzigen Autotest Eiffel neuen Test den fehlerhaften Anruf zu reproduzieren.

Geschichte

EiffelStudio geht auf die erste Implementierung von Eiffel durch Interactive Software Engineering Inc. (Vorgänger von Eiffel Software) zurück, die 1986 veröffentlicht wurde. Der Ursprung der aktuellen Technologie scheint auf "EiffelBench" zurückzugehen, das 1990 im Zusammenhang mit dem Design der Eiffel 3-Version der Sprache (wie in Eiffel: The Language dokumentiert , siehe Bibliographie). EiffelBench wurde um 2001 in "EiffelStudio" umbenannt; Dies ist auch die Zeit, in der die Umgebung über ihre Unix-Ursprünge hinausging und auf Windows und andere Plattformen abzielte.

Hauptversionen seit 2001 und einige der neuen Funktionen für jede waren:

  • 5.0, Juli 2001: erste Version, die "EiffelStudio" ist; Integration des vorherigen "EiffelCase" -Tools für die grafische Gestaltung mit EiffelBench in Form des Diagramm-Tools von EiffelStudio)
  • 5.1, Dezember 2001: Erste Version zur Unterstützung von .NET ( Pressemitteilung (PDF)). Es wurde "Eiffel #" genannt, bevor es veröffentlicht wurde [2] .
  • 5.2, November 2002: Neues EiffelBuild für GUI-Design, erweitertes Debugging, neue Mechanismen für die C- und C ++ - Integration, bessere Roundtripping-Funktionen für das Diagram Tool ( Pressemitteilung ).
  • 5.3, März 2003: Inkrementelle Compilertechnologie für Eiffel .NET verfügbar. Eiffel2Java Java-Schnittstelle, EiffelStore (relationale Datenbankschnittstelle) jetzt für .NET verfügbar, erste Mac OS-Version, Leistungsverbesserungen ( Pressemitteilung ).
  • 5.4, ​​November 2003: Neuer Konvertierungsmechanismus, wesentliche Verbesserungen der Laufzeitleistung (insbesondere für Agenten ), wesentliche Verbesserungen der Kompilierungsgeschwindigkeit, verbesserte Unterstützung für Multithreading, wesentliche Verbesserungen von EiffelBuild, erste Unterstützung für neue Mechanismen, wie vom ECMA- Eiffel-Ausschuss definiert, Unterstützung Für Vor- und Nachbedingungen in externen (z. B. C) Routinen transparente Möglichkeit, überladene .NET-Routinen von Eiffel aus aufzurufen ( Pressemitteilung ).
  • 5.5, September 2004: Docking, verbesserter Debugger, neue ECMA-Sprachfunktionen ( Pressemitteilung ).
  • 5.6, August 2005: Erweitertes Diagramm-Tool (UML-Unterstützung, erzwungene Diagramme, besseres Roundtripping), neuer EiffelCOM-Assistent zur Generierung von Microsoft COM- Komponenten, bessere Klassenvervollständigung, schnellere .NET-Codegenerierung ( Pressemitteilung ).
  • 5.7, Oktober 2006: ISO / ECMA-Eiffel-Zusatz (Inline-Agenten, neue "erweiterte" Semantik, benannte Tupel, Unicode- Unterstützung), Refactoring-Funktionen, neue Methode zur Konfiguration eines Projektsystems, Metriken ( Pressemitteilung ).
  • 6.0, Juni 2007: ISO / ECMA-Eiffel-Hinzufügung (Generizität mehrerer Einschränkungen, Oktal- und Binärschreibweise für Ganzzahlen), neuer Editor mit Registerkarten, neue Docking-Funktionen zum Definieren des Arbeitsbereichs durch den Benutzer, Kontextmenü sowie Auswahl- und Ablage-Tool für Abhängigkeiten ( Pressemitteilung ).
  • 6.1, November 2007: ( Pressemitteilung ).
  • 6.2, Mai 2008: ( Pressemitteilung ).
  • 6.3, Dezember 2008: ( Pressemitteilung ).
  • 6.4, Juni 2009: ( Pressemitteilung ).
  • 6.5, November 2009: ( Pressemitteilung ).
  • 6.6, Mai 2010: ( Pressemitteilung ).
  • 6.7, November 2010: ( Pressemitteilung ).
  • 6.8, Mai 2011. Beinhaltet die erste Implementierung von Einrichtungen zur Unterstützung von SCOOP ( Simple Concurrent Object-Oriented Programming) . ( Pressemitteilung ).
  • 7.0, November 2011. Inklusive Leistung und funktionale Erweiterungen die SCOOP parallelen Entwicklung Einrichtung, GUI - Bibliothek und Werkzeugunterstützung für Band Schnittstellenstrukturen, verbesserte Unterstützung für hohlraum sicherer Software - Entwicklung, und viele andere Verbesserungen.
  • 7.1, Juni 2012. Beinhaltet die Speicherbereinigung des SCOOP- Prozessors. Mehrere Verbesserungen des Eiffel-Informationssystems, die den Anwendungscode mit geeigneten externen Ressourcen wie Anforderungsdokumenten verknüpfen.
  • 7.2, Februar 2013.
  • 7.3, Juli 2013.
  • 13.11, Dezember 2013. Diese Version markiert den Beginn der Verwendung eines neuen Versionsnummerierungsschemas . ( Versionshinweis ) ( Pressemitteilung ).
  • 14.05, Mai 2014. Enthält das neue Eiffel Inspector-Tool (statisches Analysetool zur Aufrechterhaltung einer hohen Codequalität). ( Pressemitteilung ).
  • 15.01. Januar 2015. Die neue SCOOP-Laufzeit bringt eine erhebliche Leistungsverbesserung. ( Pressemitteilung ).
  • 15.08, August 2015. Verbesserte EiffelWeb-Lösung zum Erstellen von Webserveranwendungen. ( Pressemitteilung ).
  • 15.12. Dezember 2015. Sprachverbesserungen (Typennotation des neuen Agenten). ( Pressemitteilung ).
  • 16.05, Mai 2016. Wartungsversion. ( Pressemitteilung ).
  • 17.01. Januar 2017. Bibliotheksfähigkeitsmechanismus zum Dokumentieren und Durchsetzen unterstützter Kompilierungsoptionen. Codevorlagen. ( 17.01 Release )
  • 17.05, Mai 2017. Bessere Erkennung veralteter Funktionen. Pick & Drop für lokale Variablen. ( 17.05 Release )
  • 18.01., Februar 2018. Tiefer integrierter Code-Analysator. Verbesserte Typregeln für bedingte Ausdrücke und Manifest-Arrays. Klassenmerkmale. ( 18.01 Release ).
  • 18.07. Juli 2018. Entspannte Regeln für Klassenmerkmale. Nachfolgende Klammerausdrücke. Remote-Projektziele. ( 18.07 Release ).
  • 18.11, Dezember 2018. Alle Container können in der Iterationsform einer Schleife verwendet werden, und die linearen können von anderen initialisiert werden. ( 18.11 Release ).
  • 19.05, Mai 2019. Unicode-Operatoren, HiDPI, Entfernung toter Klassen, Compiler-Optimierungen. ( 19.05 Release ).
  • 20.05, Mai 2020. Mehrzweigausdruck, untypisierte Manifest-String-Bewertung basierend auf dem Inhalt. ( 20.05 Release ).

Code-Analysator

Code Analyzer (ehemals Inspector Eiffel ) ist ein automatisiertes Eiffel- Softwaretest- und statisches Analyseprogramm von Eiffel Software, das ursprünglich als Ergebnis eines Masterarbeitsprojekts an der ETH Zürich erstellt wurde .

Code Analyzer ist ein regelbasiertes statisches Code-Analyse-Tool, das sowohl in einem eingebetteten Modus in EiffelStudio als auch über die Befehlszeile ausgeführt wird . Es verwendet den vom Eiffel-Compiler erstellten abstrakten Syntaxbaum (AST) und generiert dann ein Kontrollflussdiagramm (CFG), das von einem Codemodul im Tool berechnet wird. Die CFG und AST werden dann von einer Reihe definierter Regeln besucht. Verstöße gegen eine Regel werden dem Benutzer als Fehler, Warnungen oder Hinweise gemeldet. Jeder Regelverstoß gibt genau an, gegen welche Regel verstoßen wurde.

Siehe auch

Verweise

Literaturverzeichnis

  • Eiffel Software: EiffelStudio Handbuch. Online unter https://www.eiffel.org/documentation
  • Bertrand Meyer: Eiffel: Die Sprache , Prentice Hall, 1991 (zweiter überarbeiteter Druck, 1992).
  • Bertrand Meyer.: Eine objektorientierte Umgebung: Prinzipien und Anwendungen, Prentice Hall. 1995 (beschreibt die Prinzipien, die der ursprünglichen EiffelBench zugrunde liegen).
  • Kim Waldén und Jean-Marc Nerson: Nahtlose objektorientierte Softwarearchitektur , Prentice Hall, 1995 (enthält eine Beschreibung der BON-Methode und der Notation).

Externe Links