連載
» 2012年04月26日 10時54分 UPDATE

ゼロから学べる SysML入門【実践編】(3):ポートとフロー (1/2)

連載第3回では、ブロック定義図や内部ブロック図で利用できるポートや関連するモデル要素について詳しく解説する。

[鈴木茂、高橋貴明(株式会社 オージス総研),@IT MONOist]

 本連載では、「SysML」の構造図である、ブロック定義図や内部ブロック図で用いる言語要素やその表記方法について、モデルの具体例を挙げながら解説してきた。読者の方々がSysMLを活用してモデリングができるよう理解の一助となれば幸いだ。

 SysMLは、UMLをベースとしている。UMLを理解していればSysMLもより理解しやすいが、UMLをご存じない読者でも理解できるように、本連載ではUMLと共通する部分についてもある程度解説していく。

 前回までの内容で、SysMLの構造図であるブロック定義図内部ブロック図の基本的な部分を説明した。

 最終回となる今回は、ブロック定義図や内部ブロック図で利用できるポート関連するモデル要素について解説する。

※注:本稿では、SysMLのモデル要素を説明するために掲載している図の中で、ピンク色の吹き出しや赤い点線を使って、説明を補足している箇所がある。しかし、これはあくまで補足のためのものであり、SysMLモデルの一部ではない。また、本稿で紹介するモデルは、SysMLの言語要素やその表記方法を解説するためのものであり、特定の開発プロセスや工程、特定のシステムを想定したものではない。



ポートとは

 ブロック定義図内部ブロック図を使うことによって、システムをその構成要素の集合として表現したり、構成要素間の関係を表現したりすることができる。これについては、前回までの内容で示してきた通りだ。

 本稿で紹介する「ポート(Port)」とは、ブロック定義図や内部ブロック図に登場するモデル要素である。ポートは、ブロックやパート(パート・プロパティの略称)など、システムの構成要素に属しており、構成要素とその外部との相互作用のための接続点として機能する。相互作用のための接続点を、ポートとして明確に定義することによって、構成要素がより再利用しやすくなる。

 例えば、目覚まし時計に搭載する乾電池(以下、電池)について考えてほしい。電池は、外部との接続点となる正極/負極において一定の電圧を出力することで、目覚まし時計の内部に電力を供給する。この電池は、出力電圧や形状が同等の別の電池と交換することもできる。このとき、重量や容量といった他の特性が異なる電池であっても、代替の電池として使うことが可能だ。また、この電池は同じ出力電圧、同じ形状の電池を必要とする懐中電灯などにも搭載できる。

 このようにシステムの構成要素が、外部と相互作用するための接続点の仕様を明確にすることで、構成要素を別のモノと交換したり、構成要素を他の環境で再利用したりすることが容易となる。

ポートの使用例

 ここでは「バイナリーサイクル地熱発電所」を題材として考えてみよう。

 バイナリーサイクルとは、ペンタン(気体)などの水よりも沸点の低い媒体を利用することによって、地下の温度が比較的低温な場所であっても発電を可能とする地熱発電方式である。

 バイナリーサイクル地熱発電所の中では、蒸発器で気化したペンタンが、タービンを回して発電したり、冷却によって液化したりしながら循環している。バイナリーサイクル地熱発電所の構造を表す内部ブロック図は図1の通りだ。

バイナリーサイクル地熱発電所 図1 バイナリーサイクル地熱発電所

 以降、図1を基に、ポートや関連するモデル要素について説明していく。

ポートの種類

 SysMLには、「フローポート(Flow Port)」と「標準ポート(Standard Port)」という2種類のポートがある。また、フローポートには「アトミック・フローポート(Atomic Flow Port)」と「非アトミック・フローポート(Nonatomic Flow Port)」の2種類がある。

ポートの種類 図2 ポートの種類

 以降、これらポートについて順番に解説していく。

フローポート

フローポート 図3 フローポート

 図1に示した通り、タービンに高圧の気体が入り、低圧の気体とトルクが出力されるという一連の流れを、図3のように表現している。このようにシステムの構成要素において、さまざまなデータ、材料、エネルギーなどが出入りする接続点をフローポートと呼ぶ。

 フローポートは、図3の赤色の破線で示した箇所のように、矢印を内包する正方形で表記する。

 内部ブロック図中のフローポートの付近には、以下のような形式でラベルを記載する。

ポート名: 型名



 ブロック定義図では、フローポートをグラフィカルに表記するだけではなく、図4のように“flow ports”区画中に記載できる。この場合、ポート名の左側に入出力の方向を表す「in(入力)」「out(出力)」、または「inout(入出力)」のいずれかを記載できる。

ブロック定義図におけるフローポート 図4 ブロック定義図におけるフローポート

アトミック・フローポートとアイテムフロー

アトミック・フローポート

 フローポートの一種であるアトミック・フローポートは、ブロックや値型、シグナルで型付けされた、単一種類の流体や情報などの流れを中継する。ここでいう“シグナル”とは、UMLで定義されている概念であり、要素から要素へ送信される非同期の要求を表す。

 図3に登場しているフローポートは、全てアトミック・フローポートである。アトミック・フローポートは、そのポートの所有者であるブロックに対する入力、出力、または入出力のいずれかを表現する。図3では、入力と出力の場合を矢印の向きで表している。これに対し、入出力の場合は、図5のように双方向の矢印を用いる。

入出力用のアトミック・フローポート 図5 入出力用のアトミック・フローポート

 図5 は、図1全体で表現している「バイナリーサイクル地熱発電所」をブロック定義図の形式で示したものである。バイナリーサイクル地熱発電所に対して、冷却用気体が入力され、かつ出力されることを示している。

アイテムフロー

 「アイテムフロー(Item Flow)」は、関連やコネクタを通して、ブロック間やパート間を実際に流れるモノや情報などを表す。フローポートが、そのポートを持つブロックやパートの入力/出力として「何を流すことができるか」を表現するのに対し、アイテムフローは特定の文脈において、ブロック間やパート間で「何が実際に流れるのか」を表現する。

アイテムフロー 図6 アイテムフロー

 図3図4では、タービンが「高圧気体」を入力として受け付けると規定しているのに対し、図6では、バイナリーサイクル地熱発電所の中でタービンが利用される際に、「ペンタン(気体)」が流れることを表現している。

 ここで「ペンタン(気体)」は“型”の名称である。もし、同じ方向の複数の流れを表現したい場合には、複数の型の名称をカンマ区切りで記載する。

 フローポートとアイテムフローを適切に区別することで、ブロックの再利用性を高めることができる。例えば、図1の文脈では、蒸発器からタービンに対してアイテムフロー「ペンタン(気体)」を流しているが、タービンが持つフローポート自体は「高圧気体」を受け入れている。すなわち、このタービンを異なるシステムに持っていけば、ペンタンとは別の気体でも使えると考えられる。もちろん実際には、再利用のためのさまざまな条件や、制約を規定しておかなければならない。

 アイテムフローは、アクティビティ図内のオブジェクトフロー(データなどの流れ)などから割り当てることができる。なお、アクティビティ図や割り当て(Allocation)については、別の機会に解説する。図7は、割り当ての一例である。あるアクションから別のアクションへのオブジェクトフローがあった際に、そのオブジェクトフローを、アイテムフローに対応付けできるという考え方を示したものだ。

フローの割り当て 図7 フローの割り当て
       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.