SysML 2.0 概要紹介 (1)

システムを対象にしたモデリング言語SysMLは、現在バージョン1.6が最新です。メジャーバージョンアップとしてバージョン2.0の作成が進んでいます。先日、ドラフト版として現時点での仕様(案)の一部がOMG会員向けに公開されましたので、その概要を自分自身のメモとして残す意味も含めて書いていきます。

なお、仕様自体が確定したものではなく、今後変わる可能性が少なからずあります。また、このメモは仕様の翻訳を目的としたものではなく、仕様の理解に役立つ概要のみを採りあげるつもりです。私の英語力の問題で間違い・理解違いがあるかもしれませんので、ご注意ください。

SysML 2.0は、現行の1.xと比較すると大きな変更が行われます。全く異なるものになると言っても過言ではないかもしれません。ただ、「異なるものになる」のはメタモデルと呼ばれるSysMLの定義部分になりますので、多くの方が実際に利用し、また興味を持つ表記については大きな変化はないかもしれません。

その「異なるものになる」点の1つとして、SysML 1.xは、UMLのメタモデル(定義)をベースに拡張する形で定義されていますが、SysML 2.0はUMLから離れて定義される点があります。これにより、UMLの制約によってSysMLが実現できなかったことをSysML 2.0で実現できる、というメリットがあります。

一方で、SysMLのような表記方法を定義する場合、その定義のためにはメタモデルは必須です。文章での定義には、どうしても厳密性を欠いたり漏れが発生したりします。メタモデルを利用して定義することで、こうした問題を軽減できます。SysML 2.0では、独自の「カーネルメタモデル(Kernel Metamodel・KerML)」を定義し、その定義の元に、ブロックなど実際の設計者が利用するSysML 2.0の要素や関係を定義することになります。

その全体構成は、以下のようになります。

(この図は仕様書に記載されているものとは異なります。全体概要を把握するために必要な内容のみに絞っています。今後の図も同様です。)

この3階層で、SysML 2.0の仕様を定義するための仕様を定義する、という話です。この3つのパッケージで定義されている内容を元に、SysML 2.0の仕様が定義される、ということです。実際にSysML 2.0を使う人には正直言って必要がない知識でもありますが、概要を理解しておくと良い面もあると思います。


Rootパッケージは、定義の根本となる定義が含まれています。(その定義の定義方法はないので、(仕方なく?)クラス図と同じようなMOFの表記になっています。)

Elementは、要求・ブロック・制約ブロックなどすべての要素の根本です。Relationshipは、それらの要素間を結ぶ線の根本です。Relationship自体もElementです。そして、ある要素が別の要素を保持するような関係がOwnershipです。OwnershipはRelationshipであり、結果的にOwnershipもElementです。このように、全ての定義の根本はElementです。OwnershipとRelationshipの違いは、Ownershipの場合は親(含まれる側)の要素が削除されると、全ての含む要素も削除される、という動作があります。

Commentは、いわゆるノート要素と思います。Annotationは、いわゆるノートリンクの関係でしょう。このあたりはUMLやSysML 1.xにありますね。

Packageに関する関係は以下のように定義されています。

Packageに要素が含まれる、という関係はMembershipという関係で示されます。ここでちょっと興味深いのは、パッケージ内に要素が含まれるような従来の形のownedMemberElementの関係の他に、memberElementということでパッケージに要素は含まれないが「メンバー」である要素が定義できる点です。他のパッケージ内の要素を参照し利用するような場合の関係と思います。

なお、PackageにはUML等と同じImportの関係もありますが、ここは大きな違いなないようなので、割愛します。

長くなりそうなので、その2に続きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です