EiffelStudio は、Eiffel Software によって開発および配布されているEiffel プログラミング言語の開発環境です。
EiffelStudio には、コンパイラ、インタープリタ、デバッガ、ブラウザ、メトリック ツール、プロファイラ、ダイアグラム、コード インスペクタ ツールなど、単一のユーザー インターフェイスに統合されたツールの組み合わせが含まれています。ユーザー インターフェイスは、効果的なブラウジングのための「ピック アンド ドロップ」など、いくつかの特定の UI パラダイムに基づいています。
EiffelStudio は、Windows、Linux、Mac OS、Solaris、VMS、RaspberryPiなど、さまざまなプラットフォームで利用できます。ソースはGPLで利用できます。その他の商用ライセンスも利用できます。

ステータス、ライセンス、コミュニティプロセス
EiffelStudio はオープンソース開発であり、次のリリースの ベータ版が定期的に提供されます。
Eiffel コミュニティは積極的に開発に参加しており、公式 Web サイトは Eiffel.org で、プロジェクトとリソースがリストされています。ソース コード ベースは通常、SubversionまたはGit経由でチェックアウトできます。また、ディスカッション フォーラムなども利用できます。
2019 年以降、オープンソース版の新リリースは行われておらず、svn リポジトリはパスワードで保護されています。コードは GitHub パブリック ミラー経由で引き続き利用可能ですが、12 か月の遅延があります。
コンパイル技術
EiffelStudio は、Melting Ice (Eiffel Software が商標として主張) と呼ばれる特殊なコンパイル テクノロジを使用します。このテクノロジは、コンパイルと、前回のコンパイル以降に変更された要素の解釈を統合し、非常に高速なターンアラウンドを実現します (再コンパイル時間は、プログラム全体のサイズではなく、変更のサイズに比例します)。このような「溶けた」プログラムは提供できますが、リリース前に「ファイナライズ」手順を実行するのが一般的です。ファイナライズは、コンパイルの高度に最適化された形式であり、時間はかかりますが、最適化された実行可能ファイルを生成します。
EiffelStudio のインタープリタ部分は、バイトコード指向の仮想マシンに依存しています。コンパイラは、Cまたは.NET CIL (共通中間言語) のいずれかを生成します。
ラウンドトリップエンジニアリング
EiffelStudioのダイアグラムツールは、ソフトウェア構造をグラフィカルに表示します。
- グラフィカルな記述からソフトウェアを作成するための設計ツールとしてのフォワードエンジニアリング。
- リバースエンジニアリング。既存のプログラムテキストのグラフィカル表現を自動的に生成します。
このツールは、完全な「ラウンドトリップ エンジニアリング」のために、どちらのスタイルでも行われた変更の整合性を保証します。
グラフィカル表記は、BON (ビジネス オブジェクト表記、参考文献を参照) またはUML のいずれかです。BON がデフォルトです。
ユーザーインターフェースパラダイム
EiffelStudio を使用すると、クラスと機能のさまざまなビューを表示できます。テキスト ビュー (完全なプログラム テキスト)、コントラクト ビュー (インターフェイスのみ、コントラクトを含む)、フラット ビュー (継承された機能を含む)、クライアント (特定のクラスまたは機能を使用するすべてのクラスと機能)、継承履歴 (継承構造の上位と下位の機能に何が起こるか) など、さまざまなビューがあります。
EiffelStudio は、「開発オブジェクト」、「小石」、および「穴」に基づく独自のユーザー インターフェイスパラダイムに依存しています。Eiffel のオブジェクト指向が実行中にオブジェクトを処理するのと同じように、開発者はクラス、機能、ブレークポイント (デバッグ用)、クラスター (クラスのグループ)、およびその他の開発オブジェクトを表す抽象化を処理します。EiffelStudio の開発オブジェクトは、インターフェイスに表示される場所であればどこでも選択 (選択)でき、その視覚的表現 (オブジェクトの名前、視覚的なシンボルなど) に関係なく選択できます。
開発オブジェクトを選択するには、右クリックするだけで十分です。カーソルは、オブジェクトのタイプに対応する特別なシンボルまたは小石に変わります。クラスの場合は「バブル」(楕円)、ブレークポイントの場合はドット、機能の場合は十字などです。カーソルを移動すると、元のオブジェクトから現在の位置までの線が表示されます。次に、小石を一致する任意の場所にドロップできます。一致する場所は、同じ全体的な形状の穴を表すアイコン (クラス ホール、ブレークポイント ホール、機能ホールなど) か、互換性のあるタイプのウィンドウのいずれかです。ツールに小石をドロップすると、ツール全体が「選択された」開発オブジェクトに再ターゲットされます。たとえば、クラス ツールは、選択されたビュー (テキスト、コントラクト、フラットなど) に関係なく、選択したクラスを表示します。これは、「ピック アンド ドロップ」パラダイムとして知られています。
複数のビューとピックアンドドロップを組み合わせることで、複雑なシステムを素早く参照し、継承によって機能が受ける、名前の変更、再定義、定義解除などの拡張された変換を追跡することが可能になります。
ユニットテストと統合テスト
EiffelStudio には、 EiffelStudio AutoTest [1]と呼ばれる統合テスト機能が含まれており、開発者はこれを使用して、単純なものから高度なものまで、単体テストおよび統合テスト スイートを構築できます。EiffelStudio AutoTest 機能により、開発者は機能レベル (単体テストなど) からクラス システム全体 (統合など) まで、Eiffel クラス コードを実行してテストできます。したがって、このコードを実行すると、実行される機能と属性のコントラクトも実行されます。したがって、EiffelStudio AutoTest は、Design by Contract 条件の「テスト」または仮定を実行する手段です。したがって、単体テストおよび統合テストでは、クラス テキストのコントラクトで仕様として既にコード化されているものを、アサーションまたはテスト オラクルを使用して再テストする必要はありません。
EiffelStudio AutoTest は、ユーザーにテスト ケースを作成する 3 つの方法を提供します。
まず、手動で作成されたテストの場合、EiffelStudio AutoTest はテストのフレームワークを含むテスト クラスを作成します。ユーザーはテスト コード自体を提供するだけで済みます。
2 番目に、EiffelStudio AutoTest は、実行時のアプリケーション障害に基づいて新しいテストを作成する方法を提供します。このタイプのテストは、抽出テストと呼ばれます。ターゲット システムの実行中に予期しない障害が発生した場合、EiffelStudio AutoTest はデバッガーで利用可能な情報に基づいて、障害の原因となった状態と呼び出しを再現する新しいテストを作成できます。問題が修正されると、問題の再発に対する対策として、抽出テストをテスト スイートに追加できます。
テストを作成する 3 番目の方法では、生成されたテストと呼ばれるものが生成されます。このシナリオでは、ユーザーは、テストを生成するクラスと、テスト生成を制御するために使用する追加情報を EiffelStudio AutoTest に提供します。次に、ツールはランダム化された引数値を使用して、ターゲット クラス内のルーチンの呼び出しを開始します。固有の事後条件またはクラス不変条件違反ごとに、EiffelStudio AutoTest は失敗した呼び出しを再現する 1 つの新しいテストを生成します。
歴史
EiffelStudio の起源は、1986 年にリリースされた Interactive Software Engineering Inc. (Eiffel Software の前身) による Eiffel の最初の実装に遡ります。現在のテクノロジの起源は、言語の Eiffel 3 バージョンの設計に関連して 1990 年に開始された「EiffelBench」に遡るようです ( Eiffel: The Languageに記載されているように、参考文献を参照)。EiffelBench は 2001 年頃に「EiffelStudio」に改名されました。これは、環境が Unix の起源を超えて Windows やその他のプラットフォームをターゲットにした時期でもあります。
2001 年以降の主なリリースと、それぞれの新機能の一部は次のとおりです。
- 5.0、2001 年 7 月: 「EiffelStudio」としての最初のバージョン。グラフィカル デザイン用の以前の「EiffelCase」ツールを EiffelStudio のダイアグラム ツールの形で EiffelBench に統合しました。
- 5.1、2001 年 12 月: .NET をサポートする最初のバージョン (プレス リリース (PDF))。リリース前は「Eiffel#」と呼ばれていました [2]。
- 5.2、2002 年 11 月: GUI 設計用の新しい EiffelBuild、拡張デバッグ、C および C++ 統合用の新しいメカニズム、ダイアグラム ツール用の改良されたラウンドトリップ機能 (プレス リリース)。
- 5.3、2003 年 3 月: Eiffel .NET でインクリメンタル コンパイラ テクノロジが利用可能になりました。Eiffel2Java Java インターフェイス、EiffelStore (リレーショナル データベース インターフェイス) が .NET で利用可能になりました。最初の Mac OS バージョン、パフォーマンス強化 (プレス リリース)。
- 5.4、2003 年 11 月: 新しい変換メカニズム、実行時パフォーマンスの大幅な改善 (特にエージェント)、コンパイル速度の大幅な改善、マルチスレッドのサポートの改善、EiffelBuild の大幅な機能強化、ECMA Eiffel 委員会によって定義された新しいメカニズムの最初のサポート、外部 (C など) ルーチンでの前提条件と事後条件のサポート、オーバーロードされた .NET ルーチンを Eiffel から呼び出す透過的な方法 (プレス リリース)。
- 5.5、2004 年 9 月: ドッキング、デバッガーの改善、新しい ECMA 言語機能 (プレス リリース)。
- 5.6、2005 年 8 月: ダイアグラム ツールの強化 (UML サポート、力指向グラフ、ラウンドトリップの改善)、Microsoft COMコンポーネントの生成用の新しい EiffelCOM ウィザード、クラス補完の改善、.NET コード生成の高速化 (プレス リリース)。
- 5.7、2006 年 10 月: ISO/ECMA Eiffel の追加 (インライン エージェント、新しい「拡張」セマンティクス、名前付きタプル、Unicodeサポート)、リファクタリング機能、プロジェクト システムを構成する新しい方法、メトリック (プレス リリース)。
- 6.0、2007 年 6 月: ISO/ECMA Eiffel の追加 (複数の制約の汎用性、整数の 8 進表記と 2 進表記)、新しいタブ付きエディター、ユーザーがワークスペースを定義できる新しいドッキング機能、ピック アンド ドロップに加えてコンテキスト メニューが使用可能、依存関係ツール (プレス リリース)。
- 6.1、2007年11月: (プレスリリース)
- 6.2、2008年5月: (プレスリリース)
- 2008年12月6日3日:(プレスリリース)
- 6.4、2009年6月: (プレスリリース)。
- 2009年11月6日(プレスリリース)。
- 2010年5月6日:(プレスリリース)
- 2010年11月6日7日:(プレスリリース)
- 6.8、2011 年 5 月。SCOOP ( Simple Concurrent Object-Oriented Programming)をサポートする機能の最初の実装が含まれています。(プレス リリース)。
- 7.0、2011 年 11 月。SCOOP 並列開発機能のパフォーマンスと機能の強化、リボン インターフェイス構造の GUI ライブラリとツールのサポート、void-safeソフトウェア開発のサポートの改善、その他多くの改善が含まれています。
- 7.1、2012 年 6 月。SCOOPプロセッサ ガベージ コレクションが含まれます。要件ドキュメントなどの適切な外部リソースにアプリケーション コードをリンクする Eiffel 情報システムに複数の改善が加えられました。
- 7.2、2013年2月。
- 7.3、2013年7月。
- 13.11、2013 年 12 月。このリリースは、新しいバージョン番号付けスキームの使用の開始を示しています。(リリース ノート) (プレス リリース)。
- 2014 年 5 月 14.05。新しい Eiffel Inspector ツール (高いコード品質の維持に役立つ静的分析ツール) が含まれています。(プレス リリース)。
- 15.01、2015 年 1 月。新しい SCOOP ランタイムによりパフォーマンスが大幅に向上します。(プレス リリース)
- 2015 年 8 月 15 日。Web サーバー アプリケーションを構築するための EiffelWeb ソリューションが改善されました。(プレス リリース)。
- 15.12、2015 年 12 月。言語の改善 (新しいエージェントのタイプの表記)。(プレス リリース)。
- 2016年5月16日メンテナンスリリース。(プレスリリース)
- 17.01、2017 年 1 月。サポートされているコンパイル オプションを文書化して適用するためのライブラリ機能メカニズム。コード テンプレート。(17.01 リリース)
- 17.05、2017 年 5 月。廃止された機能の検出が改善されました。ローカル変数のピック アンド ドロップ。(17.05 リリース)
- 18.01、2018 年 2 月。コード アナライザーの統合が強化されました。条件式とマニフェスト配列の型ルールが改善されました。クラス機能。(18.01 リリース)。
- 18.07、2018 年 7 月。クラス機能のルールが緩和されました。後続の括弧式。リモート プロジェクト ターゲット。(18.07 リリース)。
- 18.11、2018 年 12 月。すべてのコンテナはループの反復形式で使用でき、線形コンテナは他のコンテナから初期化できます。(18.11 リリース)
- 19.05、2019 年 5 月。Unicode 演算子、HiDPI、不要な「クラス」の削除、コンパイラの最適化。(19.05 リリース)。
- 20.05、2020 年 5 月。マルチブランチ式、コンテンツに基づく型指定されていないマニフェスト文字列の評価。(20.05 リリース)。
- 20.11、2020年11月。一度のクラス、WrapC。(20.11リリース)。
- 21.11、2021 年 11 月。Linux、Unix 用の GTK3 への移行、MAC OS でのプレゼンスの向上、新しいソース管理ツール。(21.11 リリース)。
- 22.05、2022 年 5 月。ソース管理ツールと UI の改善。(22.05 リリース)。
- 22.12、2022 年 12 月。新しいプラットフォーム、ARM サポート (22.12 リリース)。
- 23.09、2023年9月。NETcoreサポート(23.09リリース)。
- 24.05、2024年 5 月。NETcore サポート、デバッグ、新しい Composer コマンドが改善されました (24.05 リリース)。
コードアナライザー
コードアナライザー(旧称Inspector Eiffel)は、Eiffel Softwareがリリースした自動化されたEiffel ソフトウェアテストおよび静的解析プログラムであり、もともとはETHチューリッヒの修士論文プロジェクトの結果として作成されました。[1]
コード アナライザーは、EiffelStudio 内の組み込みモードとコマンド ラインの両方から動作する、ルール ベースの静的コード分析ツールです。Eiffel コンパイラによって生成された抽象構文ツリー(AST)を利用し、ツール内のコード モジュールによって計算される制御フロー グラフ(CFG) を生成します。その後、CFG と AST は、定義されたいくつかのルールによって参照されます。ルール違反は、エラー、警告、またはヒントとしてユーザーに報告されます。各ルール違反は、どのルールに違反したかを正確に報告します。
参照
参考文献
- ^ Zurfluh, Stefan; Tschannen, Julian; Meyer, Bertrand (2014 年 4 月 1 日)、「ルールベースのコード分析(PDF)」、ETH Zurich 、 2014 年5 月 25 日閲覧
文献
- Eiffel ソフトウェア: EiffelStudio マニュアル。https://www.eiffel.org/documentation でオンライン
- ベルトラン・マイヤー:『エッフェル:言語』、プレンティス・ホール、1991年(第2版改訂版、1992年)。
- Bertrand Meyer: オブジェクト指向環境: 原理とアプリケーション、Prentice Hall、1995 (オリジナルの EiffelBench の基礎となる原理について説明しています)。
- Kim Waldén および Jean-Marc Nerson: Seamless Object-Oriented Software Architecture、Prentice Hall、1995 年 (BON メソッドと表記法の説明が含まれています)。
外部リンク
- エッフェルコミュニティ
- オープンソース貢献者向け: ETH Zurich の Eiffel ホームページ
- Eiffel Software のホームページ (eiffel.com)
- SourceForge の EiffelStudio
- EiffelStudio リリースノート
