SysMLはUML(Unified Modeling Language:統一モデリング言語)を拡張して作られたシステム記述言語です。UMLがソフトウェア、特にオブジェクト指向プログラミング言語を利用したものに適しているモデリング言語であるのに対して、SysMLはハードウェアなど、システムのあらゆる側面をモデル化できるように拡張されています。SysMLの利用はそれほど進んではいませんが、強力なモデリング言語です。
2022年11月の時点でSysMLの解説書はいくつか出版されていますが、その多くがソフトウェア開発の知識やUMLの使用経験があることを前提としているような内容であり、これらの知識がないと理解しづらい内容になっています。また、英語の翻訳本には元が英文独特の文章であるため、日本語訳も難解な文章になっているものもあります。そこで本書は、UMLの知識がなくても理解できる日本語の本を目指して執筆しました。
本書はSysMLの入門用の内容として、よく使われる図のみに絞って記述しています。SysMLの文法は非常に大きいこともあり、あまり使われないと思われる記述方法や理解が困難だと考えられる内容は大幅に省いています。詳細に書くといくら紙面があっても足りないため、この点はご容赦願います。詳細な文法はSysMLの仕様書や他の解説書を参考にしてください。特にユースケース図、アクティビティ図、ステートマシン図、シーケンス図はUMLでもほぼ同じ文法なので、高度な状態やアクティビティの記述を知りたい方は、他のUML解説書を参照していただけるようにお願いします。
至らない点が多いかと思いますが、本書が少しでもシステムモデリングの手助けになれば幸いです。
2022年11月 筆者
近年、製品・サービスの開発環境は以前と比べて大きく変化しています。システムの大規模化や複雑化が進み、それに伴って考慮しなければならないステークホルダ(利害関係者)が増加してきました。
この好例は自動車でしょう。現在の自動車はインターネットの接続や自動運転など、以前にはなかった複雑な機構が組み込まれています。これに従って開発に必要な領域が広くなり、多くの専門家が開発に参加するようになりました。加えて対応しなければならない法令や規格も増え、ステークホルダ間の意見の合意も困難になってきています。現在のシステム開発は、以前とは比べられないほど複雑になりつつあります。
このような状況に対応してシステム開発を成功に導くために、システムズエンジニアリングと呼ばれる手法が存在しています。システムズエンジニアリングは、システム開発を成功させるための複数の専門分野にまたがるアプローチと手段と定義されます。
システムズエンジニアリングは航空、宇宙開発での規格、開発アプローチを体系化したもので、ISO/IEC/IEEE 15288:2015で標準化されています。対象となるシステムはソフトウェア、ハードウェア開発だけでなく、新規事業の展開や社会システムの設計など、幅広い分野にわたります。
システムズエンジニアリングによる開発の特徴は、次の4つのポイントで説明されます。1システムズエンジニアリングでは、この4つの視点からシステム開発にアプローチしていきます。
・目的志向と全体俯瞰
目的志向とは、システムが何のために存在しているのか目的を明らかにして、本来の役割を明確に定義していく手法です。常にシステム本来の目的を考え、システムに求められている事柄の達成を目指します。
全体俯瞰は、視点と視野を変えながらシステム全体を見て、システムと外部との関係性をとらえる手法です。視点とは、システムに関係する外部の要素(ユーザーの使用方法や外部の別システムなど)です。関係する外部要素を変化させてシステムに求められることを分析することによって、新たな問題と解決策を考察していきます。
・多様な専門分野を統合
様々な専門知識をシステムに取り入れていく手法です。単純に専門知識を結合するだけでなく、相互作用できるように統合することで、システムに高い付加価値を与えることができます。
・抽象化・モデル化
抽象化、モデル化とは、システムを目的に適合したレベルで単純化していくことです。抽象化の粒度によって、システム本体の目的の明確化に適したモデルや、全体の俯瞰に適したモデルを作成することができます。また、関係者間の意見の違いをすり合わせるためには、システムの構造を容易に理解できるモデルとして表すことが求められます。
・反復による発見と進化
繰り返し開発を行うことで、システムを洗練させていく手法です。開発初期段階ではシステムには多くの不確定要素が含まれています。不確定要素は開発が進むにつれ明らかになっていきますので、開発サイクルを繰り返すことでシステムは洗練されていきます。また、開発中に外部環境が変化した場合(たとえば、新たな技術が利用できるようになった)でも、繰り返し開発ならシステムを変化に適応させていくことが容易です。
システムズエンジニアリングを成功させるためには、開発するシステムの構造を理解することと、多様なステークホルダ間でシステムについての意思疎通ができることが必要になります。このためには、システム構造を理解しやすい形状で記述することが求められます。この目的には、文章による記述は適していません。なぜなら、自然言語にはどうしてもあいまいな部分があるからです。同じ文章であっても、読む人によって異なった意味に解釈されることがよくあります。
そのため、自然言語以外の方法でシステムを一義的に記述する、人工的な言語が求められました。必要とされるものは、開発するシステムをモデル化できるモデリング言語です。
モデルとは一般的によく使われる言葉ですが、ここでの定義は「対象の情報を抽象化して表したもの」とします。そして、対象から不要な情報を取り除き、必要な情報だけで表すことがモデリングです。
たとえば、自動販売機システムを開発しているとします。開発に関わるステークホルダ間で共通の認識を持つためには、開発しようとしている自動販売機がどのようなものなのかを書き表す必要があります。この目的として、実際の外見や機構を忠実に書き表すことは求められていません。システムを構成する要素はもっと単純化した形でよく、四角を書いて中に要素の名前を書けば、十分に何を表しているのかがわかります。このような図を集めて記述すると、図1.1のようになります。この図でもそれが自動販売機を表していることがわかるので、自動販売機のモデルといえます。このように、対象を抽象化した形に描きなおすことがモデリングです。
モデルは、たいていの場合は図として表記されます。文章と比べると、図による表記のほうが読み手による解釈の違いが少なくなるからです。また、図の方が読み手の知識の過多にかかわらず、内容を理解することが容易になります。
ソフトウェア開発でのモデリングにはUML(Unified Modeling Language:統一モデリング言語)が広く使われていました。UMLは図を使ってソフトウェアの構造と振る舞いを記述するモデリング言語であり、ソフトウェア開発では広く普及して使われています。UMLを使ってソフトウェア以外のシステムを表現することも可能ですが、UMLをシステムズエンジニアリングの用途に使うためには、いくつか不足する点がありました。
・要求を表現する手段が少ない
UMLには、要求そのものを記述する図がありません。ユースケース図などを利用してある程度は記述できますが、ソフトウェアの機能に関係しない要求(たとえば使いやすさ等)は記述できませんでした。
・ハードウェアを含めたシステムの表現が困難
もともとUMLは、ソフトウェアの構造を記述するために開発されたモデリング言語です。そのため、ソフトウェア以外のシステム要素を記述することには向いていません。
そこで、これらの欠点を補ったモデリング言語として、UMLの仕様を拡張したモデリング言語であるSysMLが策定されました。SysMLはUMLをベースにしており、一部の図はUMLから引き継ぐ形でSysMLにも導入されています。SysMLは以下の図で構成されています。
・UMLに含まれる図をそのまま導入した図
・UMLの図を修正して導入した図
・SysMLで新たに定義された図
SysMLとUMLの関係は図 1 2の網掛けとして表されます。SysMLにはUMLで定義されている図の一部が取り込まれており、加えてSysMLで新たに追加された図によって構成されています。
SysMLの特徴として、図中に記述するモデル要素が厳密に定義されているので、異なる図で同じものを表しているモデル要素を調べて追跡できることがあげられます。また、ある図の要素を別の図の異なる要素として用いることもできます。
SysMLには表1.1に示す9つの図(ダイアグラム)が含まれています。
SysMLの図にはこの9つの図にコンテキスト図(ブロック定義図の記述方法を利用して描かれる)を加えることがあります。コンテキスト図はSysMLの仕様としては定義されていませんが、システムの構造が理解しやすくなる図として、SysML図に含めて取り上げられることもあります。ただし、本書ではコンテキスト図はSysMLの仕様にないこともあり、取り扱っていません。
図 | 型名 | 表現する分野 | UMLとの比較 | 用途 |
要求図 | req | 要件 | 新規 | 要求の検討 |
ユースケース図 | uc | 振る舞い | UMLから流用 | ユースケース分析 |
ブロック定義図 | bdd | 構造 | UMLから修正 | 物理構成の検討 |
内部ブロック図 | ibd | 構造 | UMLから修正 | 物理構成の検討 |
アクティビティ図 | act | 振る舞い | UMLから修正 | 振る舞いの検討 |
シーケンス図 | sd | 振る舞い | UMLから流用 | 振る舞いの検討 |
ステートマシン図 | stm | 振る舞い | UMLから流用 | 振る舞いの検討 |
パラメトリック図 | par | 構造 | 新規 | トレードオフ分析 |
パッケージ図 | pkg | 構造 | UMLから流用 | 物理構成の検討 |
SysMLに含まれる図には、図1.3の関係があります。図はシステムがどのように成り立っているのかという構造を表す図と、システムがどのように動作するのかという振る舞いを表す図に大別できます。これに加えて、システムに課された要求を表す要求図が定義されています。システムをモデリングする際に9つの図をすべて描く必要はありませんが、構造と振る舞いの両方の図を描いたほうがシステムの成り立ちを明確にすることができます。
SysMLの例として、内部ブロック図とシーケンス図を示します。UMLを知っている方は、UMLによく似た記述であることがわかると思います。