この規格 プレビューページの目次
※一部、英文及び仏文を自動翻訳した日本語訳を使用しています。
序章
このドキュメントは、プログラミング言語に依存しない仕様に関する概念の開発における彼のリーダーシップとビジョン、およびこの分野で一連のドキュメントを作成した彼の努力に感謝の意を表し、Brian L. Meek に捧げられます。彼のコミットメントがなければ、この文書は出版されなかったでしょう。
0.1背景
このドキュメントは、言語に依存しない方法で、特に標準として、サービスの仕様、およびサービスへのインターフェースの仕様を作成する人にガイダンスを提供します。これは、ISO/IEC TR 10182 を補完するものと見なすことができます。ISO/IEC TR 10182 は、そのようなサービスとそのインターフェイスの言語バインディングを実行する人にガイダンスを提供します。
注記 1ここおよび全体を通して、「言語」は、それ自体または「言語に依存しない」のような複合語で、「プログラミング言語」を意味し、明示的に述べられていない限り、「仕様言語」や「自然 (人間の) 言語」ではありません。
注記 2 「言語に依存しない」サービスまたはインターフェースの仕様は、英語のような自然言語または VDM-SL や Z のような正式な仕様言語のいずれかまたは両方を使用して表現できます。ある意味では、仕様は「依存」と見なすことができます。たとえば、VDM-SL で。 「言語に依存しない」という用語は、サービスまたはインターフェースを定義する際にプログラミング言語を別の方法で使用できる状況のみを指すため、それ以外を意味するものではありません。
このドキュメントの開発は、以前のドラフト IEEE テクニカル レポート (IEEE TCOS-SCC Technical Report on Programming Language Independent Specification Methods, ドラフト 4, 1991 年 5 月) の存在によって促進されました。 TCOS ドラフトは、POSIX システム環境でのサービスの仕様に関係していたため、POSIX 固有の詳細なガイダンスが含まれていました。それにもかかわらず、詳細ではないにしても、原則の多くがより一般的に適用できることは明らかでした.このドキュメントは、そのようなより一般的なガイダンスを提供する手段として考案されました。非常に異なるフォーマットと、TCOS ドラフトの POSIX 関連の詳細のため、以下の言語に依存しない原則の利点に関する議論を除いて、2 つのドキュメント間に直接的な対応はほとんどありません。しかし、TCOS 草案の精神と原則は、このドキュメントを開発する上で非常に価値があり、大幅に変更され、より一般的な形式ではあるものの、再登場します。
注 3 TCOS ドラフトは、他の POSIX 分野に活動を集中させるという IEEE の決定の結果として、実際には公開されていません。
0.2原則
特定の言語に依存しないサービスまたはインターフェースの仕様は、特に認識されている標準で具現化されている場合、システム コンポーネントの相互運用と代替を促進し、特定の言語プラットフォームへの依存と結果として生じる制限を減らす重要な要素としてますます見なされています。
注記仕様が形式的な意味で特定の言語から「独立」している可能性はありますが、その言語から派生した組み込みの仮定 (他の言語には必ずしも当てはまらない) によって依存している場合もあります。ここでの「言語に依存しない」という用語は、それよりもはるかに強い意味で意味されていますが、すべての組み込みの仮定から完全に独立することは、不可能ではないにしても難しい場合があります。
言語に依存しないサービスまたはインターフェースの仕様には、次のような潜在的な利点があります。
- 言語に依存しないインターフェイス仕様は、そのインターフェイスへのすべての言語バインディングに共通の要件を指定するため、言語バインディングが準拠できる仕様を提供します。
- 言語に依存しないインターフェイス仕様は、言語バインディングを構築するための再利用可能なコンポーネントです。
- 言語に依存しないインターフェイス仕様は、すべてのバインディングが関連付けることができる共通の参照を提供することにより、言語バインディングの構築を支援します。この共通の参照を通じて、データ型やプロシージャ コールなどの共通機能の言語に依存しない標準、および関連する概念を持つ他の言語に依存しない仕様への既存の言語バインディングを利用することができます。
- 言語に依存しないサービスまたはインターフェースの仕様は、言語依存の拡張または制限から分離されたサービスの抽象的な仕様を提供するため、サービスとインターフェースのより厳密なモデリングが容易になります。
- 言語に依存しないサービス仕様は、仕様が異なる言語に依存している場合よりも共通の概念を簡単に関連付けることができるため、あるサービスと別のサービス間の関係の仕様を容易にします。
- 言語に依存しないインターフェース仕様は、共通の参照仕様を提供することにより、共通のサービスへの異なる言語バインディング間の関係の定義を容易にします (共通のサービス実装を共有している異なる言語に基づくアプリケーション間の相互運用性の要件など)すべての言語が関連できます。
- 言語に依存しないインターフェイス仕様により、複数の名前空間の管理に関する要件を含む、複数のサービスへのバインディング間の関係の定義が容易になります。
- 言語に依存しないサービスまたはインターフェースの仕様は、異なる言語での同じサービスの実装間、または同じインターフェースを使用する異なる言語に基づくアプリケーション間の動作の互換性と一貫性を確保するために必要な労力とリソースを削減することにより、経済的利益をもたらします。
Introduction
This document is dedicated to Brian L. Meek in grateful recognition of his leadership and vision in the development of the concepts on programming language independent specifications, and his efforts in producing a set of documents in this area. Without his commitment this document never would have been published.
0.1Background
This document provides guidance to those writing specifications of services, and of interfaces to services, in a language-independent way, in particular as standards. It can be regarded as complementary to ISO/IEC TR 10182, which provides guidance to those performing language bindings for such services and their interfaces.
NOTE 1 Here and throughout, “language”, on its own or in compounds like “language-independent”, means “programming language”, not “specification language” nor “natural (human) language”, unless explicitly stated.
NOTE 2 A “language-independent” service or interface specification can be expressed using either or both of a natural language like English or a formal specification language like VDM-SL or Z. In a sense, a specification can be regarded as “dependent” on VDM-SL, for example. The term “language-independent” does not imply otherwise, since it refers only to the situation where programming language(s) can otherwise be used in defining the service or interface.
The development of this document was prompted by the existence of an earlier draft IEEE Technical Report (IEEE TCOS-SCC Technical Report on Programming Language Independent Specification Methods, draft 4, May 1991). The TCOS draft was concerned with specifications of services in a POSIX systems environment, and as such contained much detailed POSIX-specific guidance; nevertheless it was clear that many of the principles, if not the detail, were applicable much more generally. This document was conceived as a means of providing such more general guidance. Because of the very different formats, and the POSIX-related detail in the TCOS draft, there is almost no direct correspondence between the two documents, except in the discussion of the benefits of a language-independent principles below. However, the spirit and principles of the TCOS draft were of great value in developing this document, and reappear herein, albeit in much altered and more general form.
NOTE 3 The TCOS draft has not in fact been published, as the result of an IEEE decision to concentrate activities in other POSIX areas.
0.2Principles
Service or interface specifications that are independent of any particular language, particularly when embodied in recognized standards, are increasingly seen as an important factor in promoting interoperation and substitution of system components, and reducing dependence on and consequent limitations due to particular language platforms.
NOTE It is possible for a specification to be “independent” of a particular language in a formal sense, but still be dependent on it through inbuilt assumptions derived from that language which do not necessarily hold for other languages. The term “language-independent” here is meant in a much stronger sense than that, though complete independence from all inbuilt assumptions can be difficult if not impossible to achieve.
Potential benefits from language-independent service or interface specifications include:
- A language-independent interface specification specifies those requirements that are common to all language bindings to that interface, and hence provides a specification to which language bindings can conform.
- A language-independent interface specification is a re-usable component for constructing language bindings.
- A language-independent interface specification aids the construction of language bindings by providing a common reference to which all bindings can relate. Through this common reference it is possible to make use of pre-existing language bindings to language-independent standards for common features such as datatypes and procedure calls, and to other language-independent specifications with related concepts.
- A language-independent service or interface specification provides an abstract specification of a service in isolation from language-dependent extensions or restrictions, and hence facilitates more rigorous modelling of services and interfaces.
- Language-independent service specifications facilitate the specification of relationships between one service and another, by making it easier to relate common concepts than is generally possible when the specifications are dependent on different languages.
- A language-independent interface specification facilitates the definition of relationships between different language bindings to a common service (such as requirements for interoperability between applications based on different languages that are sharing a common service implementation), by providing a common reference specification to which all the languages can relate.
- A language-independent interface specification facilitates the definition of relations between bindings to multiple services, including the requirements on management of multiple name spaces.
- A language-independent service or interface specification brings economic benefits by reducing the effort and resources needed to ensure compatibility and consistency of behaviour between implementations of the same service in different languages or between applications based on different languages using the same interface.