Changes between Version 20 and Version 21 of Eiffel FAQ

Aug 3, 2007, 4:40:35 PM (12 years ago)



  • Eiffel FAQ

    v20 v21  
    1111Many people have noticed that openEHR uses the Eiffel language, and wonder whether openEHR needs to be written in Eiffel, or whether Eiffel is in some way special in openEHR. By way of background, Eiffel is an openly defined language, has its own Non-profit International Consortium for Eiffel (an international user group) and ECMA formal standardisation process. It has a number of commercial implementations (ISE, Object Tools), an official open source compiler ("!SmartEiffel") and large numbers of libraries.
    13 EiffelはopenEHRでは主にCASEツールとして使われています。どうしてプログラミング言語をCASEツールとして使うのか,どのように使っているのか,少し奇妙に感じるかもしれません。実際には,Eiffelは他のプログラミング言語とは少し違うところがあります。まず,型付けが完全になされており、完全なオブジェクト指向言語です。それはUMLのすべてのセマンティクス(特に「総称」(genericity)クラスや多重継承,ポリモルフィズム,selective export)を実装できるという意味で生産性の高い言語であり、C++を除いてこうしたことが可能な唯一の言語です。しかしながら,C++とは異なり、メモリ構造のような実装の詳細には拘束されません。さらに,他に普及している生産的な言語とは異なり,OCL(OMG Object Constraint Language)と同等の実装がなされています。「同等」というのは,OCLが誕生する15年も前からEiffelが実現していたことですから。openEHRに関係のあるOCLの重要な特徴は「アサーション(表明)」とよばれるもので,事前条件,事後条件とクラスアサーションを含みます。これらの命令文によりクラスモデルの状態を正確に定義することができます。
     13EiffelはopenEHRでは主にCASEツールとして使われています。どうしてプログラミング言語をCASEツールとして使うのか,どのように使っているのか,少し奇妙に感じるかもしれません。実際には,Eiffelは他のプログラミング言語とは少し違うところがあります。まず,型付けが完全になされており、完全なオブジェクト指向言語です。それはUMLのすべてのセマンティクス(特に「総称」(genericity)クラスや多重継承,ポリモルフィズム,selective export)を実装できるという意味で生産性の高い言語であり、C++を除いてこうしたことが可能な唯一の言語です。しかしながら,C++とは異なり、メモリ構造のような実装の詳細には拘束されません。さらに,他に普及している生産的な言語とは異なり,OCL(OMG Object Constraint Language)と同等の実装がなされています。「同等」というのは,OCLが誕生する15年も前からEiffelが実現していたことですから。openEHRに関係のあるOCLの重要な特徴は「表明(アサーション)」とよばれるもので,事前条件,事後条件とクラス表明を含みます。これらの命令文によりクラスモデルの状態を正確に定義することができます。
    1515Eiffel is used in openEHR as its primary CASE tool. This may sound a little strange - why use a programming language as a CASE tool; how? In truth, Eiffel is a little bit different from other programming languages. Firstly, it is a fully formal, fully object-oriented language, the only production language apart from C++ which implements all the semantics of UML (in particular, genericity (i.e. 'template' classes), multiple inheritance, polymorphism, selective export). However, unlike C++, it has no connection with implementation details, such as memory structures. In addition, unlike any other production language available, it implements the equivalent of OCL, the OMG Object Constraint Language. "Equivalent" because Eiffel did this 15 years ago, long before OCL came into existence. The key features of OCL which are relevant to openEHR are called "assertions", which include function pre-conditions, post-conditions, and class assertions. These statements allow us to define the correctness conditions of a class model.
    17 これらの特徴によって Eiffel言語は、openEHRの仕様で用いられている形式クラスモデルを表現し、それらをアサーションを含めて完全に検証することができるのです。
     17これらの特徴によって Eiffel言語は、openEHRの仕様で用いられている形式クラスモデルを表現し、それらを表明を含めて完全に検証することができるのです。
    1919These features allow it to be used as a language for expressing formal class models, of the kind used in the specifications written by openEHR, and to completely validate them, including assertions.
    3131However, Eiffel does happen to be an excellent choice for implementation, for two reasons:
    33  * 医療情報(たとえば,ソフトウェアのバグにより「左腎」を表すコードが「右腎」になった場合のような重大な場面を考えてみてください)を扱う上での正確性に対する要求。Eiffelだけがアサーションを実装しています[[FootNote(今ではJavaやRubyでもassertionが実装されています)]]。
     33 * 医療情報(たとえば,ソフトウェアのバグにより「左腎」を表すコードが「右腎」になった場合のような重大な場面を考えてみてください)を扱う上での正確性に対する要求。Eiffelだけが表明を実装しています[[FootNote(今ではJavaやRubyでもassertionが実装されています)]]。
    3535    * the need for correctness when processing health information (e.g. consider the consequences of a software bug causing the coded term for "kidney, left" to be changed to "kidney, right"). Only Eiffel implements assertions