モデリング言語

**モデリング言語**（モデリングげんご、英:Modeling language）、またはソフトウェアモデル（英:Software model）は、ルールの一貫したセットで定義された構造によって情報、知識あるいはシステムを表現するため使われるあらゆる人工言語である。そのルールは、その構造における構成要素の意味を解釈するため使われる。

## 全貌
モデリング言語は、図式またはテキスト形式であり得る.。
* *図式* 概念などを表現する楕円や箱、その関係を表現するライン、及び制約を表現する様々な記号、などといった、形式的なダイアグラムと、それらに付される名前などにより表現する。
* *テキスト形式* 形式言語を文字列により表現する。
（UMLの一部の図のように、形式的でないものもある。形式的でないものは、その意味が曖昧かもしれない）

図式モデリング言語とテキスト形式モデリング言語への対応の一つの例は、EXPRESSである。

全てのモデリング言語は実行可能なわけではなく、そしてそれらが存在することで、それらの使用がもはやプログラマーが要求されないことを必ずしも意味しない。それどころか、実行可能モデリング言語は、熟練したプログラマーが、並列コンピューティングや分散化システムのようにより挑戦的な問題に取り組むため、彼らの生産性を増大させることを意図している。

## モデリング言語のタイプ

### 図式タイプ
コンピュータ科学、プロジェクト管理、及びシステム工学の分野での図式モデリング言語の例には以下がある：
* 振舞ツリー (Behavior Trees)は、システム 及び ソフトウエア工学で主に使われる、公式な図式モデリング言語である。一般に利害関係者に説明するため使われる自然言語による数百あるいは千の要求に共通に使われる明確な表現が、大規模なソフトウエア統合システムのために必要である。
* BPMN（及びBPMNの XML形式）は、プロセス・モデリング 言語の一つの例である。 
* EXPRESS (en)、及びEXPRESS-G (ISO 10303-11) は、一つの国際標準の汎用データモデリング 言語である。
* 拡張エンタープライズ・モデリング言語 (EEML)は、複数のレイヤーにまたがる事業プロセス・モデリングのため一般に使われる。 
* フローチャートは、一つのアルゴリズム、あるいはステップごとプロセスの一つの図的表現である。 
* 基本的モデリング概念 (FMC)は、ソフトウエア指向システムのモデリング言語である。
* IDEFは、機能モデリングのためのIDEF0、情報モデリングのためのIDEF1X、ビジネス・プロセス・モデリングのためのIDEF3、オブジェクト指向設計のためのIDEF4(en)、及びオントロジのモデリングのためのIDEF5(en)を含む、モデリング言語のファミリーである。
* Jackson構造化プログラミング (JSP)は、データ・ストリーム構造とプログラム構造間の対応に基づく構造化プログラミングの一つの手法である。
* LePUS3 (en)は、オブジェクト指向の視的設計記述言語であり、基本的に大規模なオブジェクト指向のJava、C++、C#プログラムおよび設計パターンのモデリングに適した形式仕様記述言語である。
* ソフトウエア工学の分野でのオブジェクト役割モデリング (ORM) は、概念的モデリングの一つの方法であり、情報とルール分析のため使うことができる。
* ペトリネットは、図式技術とトポロジの唯一の表現すなわち2部グラフのバリエーションを使う。その基本的ユーザー・インタフェースの単純さが、長年広範囲な、特にモデルのチェックやグラフ指向シミュレーション、あるいはソフトウエア検証において、ツール支援を可能にした。
* Southbeach Notationは、モデラーの観点から有用または有害かを考えるエージェントの基準で状況を記述するため使われる視的モデリング言語である。その記法は、エージェントがどのようにお互いと相互作用するか、あるいはこの相互作用が状況を改善するか悪化させるかどうかを示す。
* 仕様及び記述言語 (SDL)は、明確な仕様と反応の振舞い記述と分散システムに目標を定めた仕様言語である。
* SysMLは、UMLプロファイル（カスタマイズ）として定義されるシステム工学のためのドメイン固有モデリング言語である。
* 統一モデリング言語 (UML) は、ソフトウエア指向システムを仕様化するための業界標準である一つの汎用モデリング (general-purpose modeling)言語である。現在バージョンのUML2.0は、13の異なったダイアグラム技術をサポートし、広範なツール支援を持っている。
* サービス指向モデリング (SOMフレームワーク)は、事業体仕組、仮想化、サービス指向仕組（SOA）、クラウド・コンピューティング、及びその他の空間における事業体（エンタープライズ）とアプリケーション・レベルの仕組（アーキテクチャ）を設計する一つの全体的言語である。 
* アーキテクチャ記述言語 (ADL) は、システムのシステムアーキテクチャを記述し表現するため使われる一つの言語である。 

他の科学分野における図式モデリング言語の例。
* EAST-ADL(en)は、自動車のシステム設計に特化したドメイン固有モデリング言語である。
* エネルギー・システム言語 (ESL)は、エネルギー論と世界経済のエコロジー的モデル化を目指す一つの言語である。

### 特定タイプ
コンピュータ科学の分野で最近、モデリング言語の更なるタイプが登場してきている。 

#### 代数
代数モデリング言語 (AML)は、大規模な数学的計算（例えば、大規模最適化問題）のための高度に複雑な問題を記述し解決するためのハイレベル・モデリング言語である。AIMMS、AMPL、GAMS、 LPL、 MPL、OPL 及び OptimJ のような代数モデリング言語 (AML)の一つの特定な利点は、最適化問題の数学的表記とのその構文の類似性である。これは、集合、インデックス、代数式、強力な希薄インデックスと任意名を持つ変数や定数を取扱うデータのような一定の言語要素によってサポートされた、最適化のドメインにおける問題の簡潔でかつ読易い定義を可能にする。モデルの代数形式は、どのようにそれを処理するかのどんなヒントも含まない。

#### 専門分野特定
専門性特定モデリング（DspM）言語は、特定のソフトウエア開発ライフサイクル段階での付随する提供可能物に焦点を当てる。そこで、そのような言語は、しばしば各段階のため、発見、分析、設計、仕組、契約などの異なる語彙、構文、及び表記を提供する。例えば、プロジェクトの分析段階のため、モデラーは分析提案ダイアグラムを提供する特定の分析記法を採用する。設計段階では、しかしながら、論理設計記法はソフトウエア・エンティティ間の関係を描くため使われる。加えて、専門性特定モデリング言語のベストプラクティスは、単一ダイアグラム上でのさまざまな表記を結びつけることから実務者を拒まない。

#### ドメイン固有
ドメイン固有モデリング (DSM)は、ほとんどがコンピュータ・システムのようなITシステムを設計し開発するためのソフトウエア工学手法である。それは、システムの様々な側面をあらわすためのグラフィカルなドメイン固有言語 (DSL) の体系的利用を含む。DSM言語は、汎用モデリング言語より高いレベルの抽象をサポートする傾向があり、そこで、それらは与件システムを特定するため、より少ない努力と数少ない低レベルの詳細を要求する。

#### フレームワーク特定
フレームワーク特定モデリング言語 (FSML)は、オブジェクト指向アプリケーション・フレームワークのため設計された一種のドメイン特定モデリングである。FSMLは、フレームワーク提供の抽象概念を定義し、そしてその抽象概念を機能特性に分割する。機能特性は実装ステップあるいは選択を表す。

FSML概念は、機能特性の選択と機能特性のための値を提供することによって構成され得る。そのような概念構成は、どのように概念がコードに実装されるべきかを表現する。別の言葉では、概念構成は、フレームワークが、如何にその概念の実装を創り出すため完全であるべきかを記述する。

#### オブジェクト指向
オブジェクト・モデリング言語 (Object modeling language)は、オブジェクト指向ソフトウエア設計あるいはシステム設計（の一部）をモデル化する、標準化されたシンボルのセットとそれらの編成の方法に基づくモデリング言語である。

いくつかの組織はそれらを、初期仕様から実装計画に進化させ、その計画を開発者のチーム全体と利害関係者にコミュニケートするため、ソフトウエア開発手法と組み合わせて、幅広い範囲で利用する。モデリング言語は視覚的でコードより高度な抽象であることから、モデルの利用は、開発における後の異なった解釈の問題を防止するかもしれない共有ビジョンの生成を推奨する。しばしばソフトウエア・モデリング・ツールは、後にコードに自動変換する能力を持つかもしれない、これらのモデルを構築するため使われる。

#### 仮想現実 (VR)
1995年以前は仮想現実マークアップ言語として知られていた仮想現実モデリング言語 (VRML) は、特に World Wide Web を念頭に置いて設計された、3次元 (3D) の相互作用ベクター画像を表現するための標準ファイル・フォーマットである。

#### その他
* アーキテクチャ記述言語
* 顔面モデリング言語 (Face Modeling Language)
* 生成的モデリング言語 (Generative Modelling Language)
* Javaモデリング言語 (Java Modeling Language)
* Promela
* Rebecaモデリング言語 (Rebeca Modeling Language)
* サービス・モデリング言語 (Service Modeling Language)
* Webサービス・モデリング言語 (Web Services Modeling Language)
* X3D

## アプリケーション
各種のモデリング言語は、コンピュータ科学、情報管理、事業プロセス・モデリング、ソフトウエア工学、及びシステム工学を含む 異なる専門分野に適用される。モデリング言語は、以下を特定することができる：
* システム要求 
* 構造、及び 
* 振舞い 
モデリング言語は、利害関係者（例えば、顧客、運用者、分析者、設計者）がモデル化されたシステムをより良く理解するため、正確にシステムを規定するのに使われることを意図されている。

更に成熟したモデリング言語は、正確で、整合性があり、そして実行可能である。描画ツールを伴って適用された情報図面化技術は、システム要求、構造、及び振舞いの有用な絵的表現を作り出すことが期待され、それ以上のものではない。正しいツールのサポートを伴う実行可能なモデリング言語は、しかしながら、同じ表現からシステムの検証と承認 (verification and validation)、シミュレーション、及びコード生成を自動化することが期待される。

## 関連項目
* 類似モデル (Analogical models)
* 図式言語 (Graphical language)
* メタモデリング (Metamodeling) 
* モデル・ベース・テスト (MBT)
* モデル駆動型仕組 (Model-driven architecture)
* モデル駆動型工学 (MDE)
* モデリング観点 (Modeling perspectives)
* 科学的モデリング (Scientific modelling|Scientific modeling)
* 仮想モデリング (Visual modeling)
* 専門分野特定モデリング (Discipline-Specific Modeling)

## 参照


## 外部リンク
 
* Fundamental Modeling Concepts
* Software Modeling Languages Portal
* BIP -- Incremental Component-based Construction of Real-time Systems