オブジェクト制約言語( OCL ) は、IBMで開発された統一モデリング言語(UML) モデルに適用されるルールを記述する宣言型言語であり、現在は UML 標準の一部となっています。当初、OCL は UML の形式的な仕様言語拡張に過ぎませんでした。[1] OCL は現在、UML を含む任意のメタオブジェクト機能(MOF)オブジェクト管理グループ(OMG)メタモデルで使用できます。[2]オブジェクト制約言語は、ダイアグラム表記では表現できない任意の MOF モデルまたはメタモデルに対する制約およびオブジェクト クエリ式を提供する正確なテキスト言語です。OCL は、モデルを変換するための新しい OMG 標準勧告であるクエリ/ビュー/変換 ( QVT ) 仕様の主要コンポーネントです。
説明
OCLは、第二世代のオブジェクト指向分析および設計手法であるSyntropyの後継です。OCL 1.4の定義では制約言語が指定されていました。OCL 2.0では、定義が拡張され、一般的なオブジェクトクエリ言語の定義も含まれるようになりました。 [3]
OCL ステートメントは 4 つの部分で構成されます。
- 文が有効となる限定された状況を定義する文脈
- コンテキストのいくつかの特性を表すプロパティ(たとえば、コンテキストがクラスの場合、プロパティは属性である可能性があります)
- プロパティを操作または修飾する操作(例:算術、集合指向)
- 条件式を指定するために使用されるキーワード (例: if、then、else、and、or、not、implies)。
関係
OCL と UML
OCLは、自然言語の曖昧さや複雑な数学の使用に伴う固有の難しさのない表現を提供することでUMLを補完します。 [3] OCLはグラフベースモデルのナビゲーション言語でもあります。
OCLとMOF
OCL は、アサーションをメタ要素に関連付けることで、 メタオブジェクト機能モデルをより正確にします。
OCLとQVT
モデル駆動エンジニアリング(MDE) またはモデル駆動アーキテクチャにとって特に重要なのは、モデル変換の概念です。OMGは、モデル変換の特定の標準を定義しており、これをMOF/QVTまたは略してQVTと呼びます。現在、 GReAT、VIATRA、Tefkatなどのモデル変換言語がいくつかあり、それぞれ QVT 標準への準拠レベルが異なります。これらの言語の多くは、 QVT準拠の主要部分である OCL 上に構築されています。
代替案
ルールベースの検証言語であるSchematronは、 OCL の代替として考えられます。しかし、 Schematron は拡張マークアップ言語(XML) ツリーで機能しますが、 OCL はMOFベースのモデルとメタモデル (つまり、 XML メタデータ交換 ( XMI ) ツリー)をナビゲートできます。言い換えると、 OCL はSchematron がXMLに関係するのと同じようにUMLまたは MOF に関係します。(Schematron はXML ツリー内をナビゲートするためにXPath を使用することに注意してください。) OCL は、設計者が副作用のない注釈を使用してモデルまたはメタモデルを装飾することを可能にするモデル仕様言語であるため、Alloyなどの言語に置き換えることができます。自然言語からの自動 OCL 生成は原理的に可能です。[4]
拡張機能
Eclipse OCL [5]は、追加の演算子とマップの型を追加して標準OCLを拡張します。AgileUMLは、マップと関数型を追加して標準OCLを拡張します。[6]これらの拡張は、PythonやSwiftなどの最新のプログラミング言語に存在するマップと関数型と一致しています。
参照
- コンピュータモデル
- データマッピング
- ドメイン固有言語 (DSL)
- ドメイン固有モデリング(DSM)
- 日食GMT プロジェクト
- ジェロ表現言語
- 統一モデリング言語用語集
- 意図的プログラミング(IP)
- UMLツールのリスト
- メタモデリング
- メタモデリング技術
- メタオブジェクト機能(MOF)
- メタデータ
- モデルベーステスト(MBT)
- モデル駆動型アーキテクチャ(MDA)
- モデル駆動エンジニアリング(MDE)
- モデル変換言語(MTL)
- モデリング言語
- モデリングの視点
- モーフム2T
- オブジェクト指向分析と設計(OOAD)
- MOF クエリ/ビュー/変換(QVT)
- 意味翻訳
- 変換言語(TL)
- UMLツール
- 語彙ベースの変換
- XMI
- XML 変換言語(XTL)
参考文献
- ^ オブジェクト管理グループ (OMG);オブジェクト制約言語仕様、OMG 統一モデリング言語仕様の第 7 章、バージョン 1.3、2000 年 3 月 (初版)
- ^ オブジェクト管理グループ (OMG);オブジェクト制約言語 OMG 利用可能な仕様バージョン 2.0、2006年 5 月
- ^ ab この記事は、 2008 年 11 月 1 日より前にFree On-line Dictionary of Computing のObject+Constraint+Language から取得した資料に基づいており、 GFDLバージョン 1.3 以降 の「再ライセンス」条件に基づいて組み込まれています。
- ^ Imran Sarwar Bajwa ( 2010 年 10 月)。「自然言語仕様からの OCL 制約生成、2010」。IEEE。doi : 10.1109/EDOC.2010.33。S2CID 7495256 。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - ^ 「Eclipse OCL™ (オブジェクト制約言語)」。2013年1月31日。
- ^ ラノ、ケビン; コラドゥーズ・ラヒミ、シェクーフェ (2021)。「マップと関数型による OCL の拡張」。ソフトウェア エンジニアリングの基礎。コンピュータ サイエンスの講義ノート。第 12818 巻。pp . 108–123。doi :10.1007 / 978-3-030-89247-0_8。ISBN 978-3-030-89246-3. S2CID 239029860。
外部リンク
- OMG OCL仕様
- OCLポータル - OCL関連情報のセンター
- CSUSB のコンピュータ サイエンス学部の OCL ページ (簡単な OCL 2.0 構文)
- Octopus: 正確な UML 仕様のための OCL ツール (OCL チェッカー)
- ドレスデン OCL ツールキット (OCL ツールキット、さまざまな OCL 関連出版物)
- HOL-OCL (OCL 用の対話型定理証明環境、OCL 関連のさまざまな出版物)
- ParlezUML に関する Java 用 OCL チュートリアル
- Java コードで EMF の OCL を使用する方法に関する記事
- cetus-links.org の UML リンク ページ
- USE (UML ベースの仕様環境) (モデル検証用の OCL ツール、OCL 関連のさまざまな出版物)
- OCLチュートリアル
- NL2OCL (NL から不変式を生成する OCL ツール)
