UMLをDSLと考えるのは適切ですか?
誰もがUMLを絵を描く方法と考えていることは知っていますが、UMLダイアグラムの「ビュー」の基礎にはモデルがあり、UMLの「L」は言語を表します。
別の質問-SysMLはDSLですか?
UMLをDSLと考えるのは適切ですか?
誰もがUMLを絵を描く方法と考えていることは知っていますが、UMLダイアグラムの「ビュー」の基礎にはモデルがあり、UMLの「L」は言語を表します。
別の質問-SysMLはDSLですか?
UMLはDSLです。
「ドメイン固有言語」を使用すると、アプリケーションの狭い領域で問題または解決策を指定できます。銀行、電話回路設計、.... DSLを区別する1つの方法は、汎用計算を実行できないことです(ただし、実行できるDSLもあります)。Java、C#、Python、およびCOBOLはこのテストに失敗します。(COBOLは「ビジネス」のドメイン固有であると言う人もいますが、それに対する唯一の重大な譲歩は10進データ型であり、C#にもそれがあります。)ColdFusionはこのテストに失敗します。非標準の構文はDSLを作成しませんが、IIRCColdFusionはHTMLの生成をある程度サポートしています。Fortranはこのテストに失敗しますが、そのarray(-section)サブ言語は配列にのみ有効であり、汎用計算には適していません。Verilogは非常にドメイン固有であり、デジタル回路を書き留めることができるように設計されています。
UMLは、ソフトウェアの構造のさまざまな側面を指定することに重点を置いています。[汎用計算はできないことに気付くでしょう。1つの特徴]。(実際には、9つ以上の異なる側面があります:クラス、ステートチャート、デプロイメント、...この議論ではクラスの側面に固執します)。クラス図の側面では、データがどのように編成されているか、およびそのデータに対する操作を説明できます。ソフトウェアについてこれを議論できるので、「ドメイン固有」にすることはできません。何、ソフトウェアの構築は問題のあるドメインではありませんか?
SYSMLは、システムがどのように結合されるかを表現することに重点を置いているため、このカテゴリーにも当てはまります。
IMHOに尋ねるより有用な質問は、「UMLをDSLと考えると、何が得られるか」です。ここで私はあなたが多くを得るとは思わない。DSLの概念は、一般的な問題の表現力を高めるという点で、自分が持っていない(設計または所有している)ものを主張する場合に役立ちます。また、「システムを完全に実装したくない」と主張する場合にも役立ちます。チューリングに対応していないからです。」特別な目的を果たしているという理由だけで、あなたの言語に面白い表記がたくさんあることを説明したい場合にも役立ちます。人々はすでにUMLについてこれを知っているので、...何も学びませんでした。
私はDSLの大ファンですが、GPL(汎用言語)の大ファンでもあります。大規模なシステムでは、必然的に両方の「多く」を見つける必要があると思います。DSLは簡潔にできることを表現し(エンジニアリングとメンテナンスのコストを削減)、GPLは任意の計算とシステムパーツ間の接着を提供します。私にとって、言語で重要なのは次のとおりです。
UMLは(15年後)これらの質問に対するかなり良い答えに到達しました。
自家製のDSLは、設計が不十分なこともあり、ツールのサポートを取得するのが難しいという事実が原因で、うまく機能しないことがよくあります。私の会社は、DSLビルダーにこの状況を改善するための優れたサポートを提供するための機械を提供しています。
UMLはあらゆる垂直ドメイン(保険ソフトウェア、組み込みシステムなど)のモデル化に使用できるため、UMLはDSLではありません。
UMLはソフトウェアシステムをモデル化するための特殊な言語であるため、UMLは(水平)DSLです。
したがって、UMLは、見方によってはDSLであり、DSLではありません。同じ推論をhtmlやSQLのような他の多くの言語に適用することができます。これらは、あらゆる種類のデータを表現/操作するために使用できるため一般的ですが、1つのタスクに焦点を合わせているため具体的です
短い答え - いいえ - 両方の質問に。
UML は、ソフトウェア アーキテクチャやソフトウェアの相互作用などを記述できるツールと考えてください。一般的な方法で、言語にとらわれずに記述できます。
DSL は、特定の問題のセットを簡単に記述できるようにするための特殊な構文です。
最初の質問に対する答えは、「汎用言語」という用語で「一般」をどのように定義するかによって異なると思います。ウィキペディアによると、これは DSL ではありません。
反対は次のとおりです。
C、Java、Python などの汎用プログラミング言語
または、統一モデリング言語 (UML) などの汎用モデリング言語。
私は MDA 愛好家なので、あなたの質問に対して非常に詳細な回答を提供できると思います。UML とは:標準言語とテクノロジの提供を目的とした企業のコンソーシアムであるObject Management Group (OMG) は、「Meta Object Facility」またはMOFと呼ばれるメタメタ モデリング言語を定義しました。(http://www.omg.org/mof)。メタモデルとは、モデルを記述するモデル、つまり語彙 (モデルで使用できる要素)、構文 (相互に関連するもの)、およびそのセマンティクス (各エンティティの意味と方法) を記述するモデルです。その意味は、特定のコンテキストで変化するなど)。メタモデルは、生成される言語に関して、文脈自由文法が果たすのと同じ役割を果たします。したがって、メタメタ モデルは、メタモデルを定義するために使用できる言語と考えることができます。これは、OMG が実際に UML で行ったことです。UML 言語には、 UML インフラストラクチャーとUML スーパーストラクチャー(http://www.omg.org/spec/UML)の 2 つのドキュメントで MOF によって記述されたメタモデルがあります。
UML メタモデルは、さまざまなドメインに属するさまざまなシステムのモデル化に対処するのに十分な汎用性を目指して定義されています。新しい UML モデルを定義すると、UML メタモデルのインスタンスが作成されます。システムのいくつかの特性を分析するため、システムのいくつかの側面を他の利害関係者と共有するためなど、さまざまな理由でこれを行うことができます。ただし、OMG ビジョンの最も重要な側面の 1 つは、モデルの変換です。変換は、モデルを探索して別のものを生成する方法をインタープリターに伝える一連のルールと考えることができます。基本的に、モデルを 2 つの異なる種類のシン、他のモデル (Model2Model、M2M 変換、QVTによって定義される) に変換できます。言語) またはコードやドキュメントなどのテキスト (Model2Text、M2T、MOFM2T 変換言語によって定義された変換)。したがって、UML モデルは図ではないことを理解することは非常に重要です。ダイアグラムは、モデルの内容を絵で表したものにすぎず、人にとっては便利ですが、機械で読み取ることはできません。ダイアグラムに変換を適用することはできません。
Eclipse Modeling Framework (EMF) は、私が言及したすべてのテクノロジーを実装する非常に強力な (そして無料の!) フレームワークです。MOF のサブセットは、Eclipse ECORE 言語で実装されています。ECORE によって UML メタモデルが定義されるため、グラフィカルな UML エディター (Papyrus、TopCased など) は、UML メタモデルの ECORE 表現に準拠するグラフィカルに定義された UML モデルの XMI 表現を実際に作成します。このような表現は、変換エンジンへの入力として提供できます。2 つの変換言語と関連するエンジンは、EMF でも QVTo プラグインとACCELEO (MOFM2T 変換言語を実装) で利用できます。
前述のように、UML は意図的にジェネリックです。ただし、元の言語語彙をドメイン固有の構造で拡張するための軽量拡張メカニズムも提供します。これは、ステレオタイプによって行うことができます。ステレオタイプは、言語で新しいエンティティを作成するためにモデル要素に付けることができる一種のラベル (実際にはメタ属性を持つ) です。たとえば、モデル内で、一部のクラスが要件またはその他のものである可能性があると言えます。もちろん、いくつかのルールがあります。たとえば、メタクラスをステレオタイプ化する場合、元のセマンティクスに違反することはできず、単純に減らしてください。
SySML は、UML http://www.omgsysml.org/のプロファイルです。SysML ブロックはブロックとしてステレオタイプ化された単なる UML クラスであり、SysML 要件はブロックとしてステレオタイプ化された別の UML クラスです。
UML のようなメタモデルのプロファイリングは、UML と互換性のある (つまり、SysML を使用できる) 一種の DSL を作成する非常に簡単な方法です (より一般的な言語に、ドメインに属するいくつかの構造を追加するステレオタイプと同様)。と UML を一緒に)。MOF (ECORE) によってメタモデルを定義する DSL を作成する別の方法があります。この場合、UML 自体と概念的に同じレベルのまったく新しい言語を作成します。
多くの人は、UML は単なるダイアグラムだと言います。多くの場合、何について話しているのか分からないからです。このトピックは、はるかに複雑で、興味深く、有望です。
UML は一般的なモデリング言語であり、どのドメインにも固有ではありませんが、DSL の S は特定を表します。UML は、多目的プログラミング言語でも表現できるモデル システムに使用されます。一方、DSL は、特定のドメインに固有の制約付きプログラミング/スクリプト言語です。