図1中の「: 凝縮器」というパートが持つポートに着目してほしい。ここでは凝縮器に対して、複数種類の冷却液の出入りがあることを表現している(図8)。
このように、複数のモノや情報などの流れを中継できるフローポートを、非アトミック・フローポートと呼ぶ。
アトミック・フローポートがブロックや値型、シグナルで型付けされるのに対し、非アトミック・フローポートは後述のフロー仕様で型付けされる。フロー仕様を使って複数の要素を列挙することで、非アトミック・フローポートを複数の要素と対応付けできる。
なお、入出力(inout)の向きを持つアトミック・フローポートと、非アトミック・フローポートの表記を混同しないよう注意してほしい(図9)。
「フロー仕様(Flow Specification)」は、非アトミック・フローポートが中継する流れの入出力の仕様を表現するものだ。図1では、「冷却水仕様」というフロー仕様で型付けされた非アトミック・フローポートが使われている。フロー仕様「冷却水仕様」を図10のようにブロック定義図で定義する。
フロー仕様は、「フロープロパティ(Flow Property)」の集合として定義する。フロープロパティは、ポートが中継する単一の要素を表す。ブロックもしくはフロー仕様がフロープロパティを保持できる。フロープロパティは「入力(in)」「出力(out)」「入出力(inout)」のいずれかの方向を持つ。フロープロパティを表記するには、図10のようにブロックやフロー仕様に“flowProperties”という区画を設けて表記する。
「冷却水仕様」の例では、「未使用冷却水」と「使用済み冷却水」という2つのフロープロパティを定義している。これは、1つの「冷却水仕様」型のフローポートを介して、2種類の冷却水が中継されることを表現している。
コネクタで接続された2つの非アトミック・フローポートの型は、入出力の方向が互いに逆向きになることが多い。このような場合に、入出力の向きが逆向きの2つのフロー仕様を用意して対応することもできるが、「共役(Conjugated)」フローポートを用いれば、1つのフロー仕様のみを使って表現できる。共役フローポートでは、フロー仕様で定義された入出力が反転する。すなわち、入力が出力に、出力が入力として解釈される。
図1の例では、凝縮器から出力される使用済み冷却水は、冷却塔に対する入力となる。逆に、未使用冷却水は凝縮器の入力であり、冷却塔の出力である。このように入出力が反転した2つのフローポートを、1つのフロー仕様「冷却水仕様」と共役フローポートを使って図11のように表現している。
共役フローポートは、型名に接頭辞として波線符号(~)を付けて表記する。
「標準ポート(Standard Port)」は、そのポートを保持するブロックが、外部に対して提供または要求する“サービス”を表現する。この標準ポートという名称は、UMLの「ポート」をフローポートと区別するためにSysMLで呼び替えたものである。意味と表記方法はUMLの「ポート」を踏襲している。図12に、標準ポートの表記方法と対応するインターフェイスの表記方法の例を示す。
「提供インターフェイス(Provided Interface)」や「要求インターフェイス(Required Interface)」を記述することによって、標準ポートに対応するサービスを仕様化できる。標準ポートは、提供インターフェイスと要求インターフェイスの両方、またはいずれかを持つことができる。図12に示すように、提供インターフェイスは「ロリポップ」、要求インターフェイスは「ソケット」の記号で表す。
図12の例では、「: 変圧器」パートが「電圧操作」インターフェイスを外部に対して提供している。すなわち、外部から「: 変圧器」パートに対して「電圧操作」インターフェイスで定義したサービスを呼び出すことができる。また、「: 変圧器」パートは「電圧データ」インターフェイスを要求している。すなわち、「: 変圧器」パートは外部の「電圧データ」インターフェイスを呼び出すことを必要とする。そして、「: 集中管理室」パートは、その逆のインターフェイスを提供・要求する。このように、提供側と要求側のインターフェイス型を適合させながら、標準ポートを持つブロックやパート同士を結び付けることができる。
標準ポートとフローポートの使い分けに迷う場合もあるかもしれない。標準ポートはサービスベースでシステム全体の構造を検討することに使うことができる。また、電圧管理の例のように、電気的な情報のやりとりは標準ポートで表現し、他の物理的な流れはフローポートで表すというように使い分ける方法が考えられる。あるいは、情報のやりとりも含めて、全てフローポートのみで表現することもできるだろう。このように、標準ポートとフローポートの使い分け方には、さまざまな方法が考えられる。状況に応じた使い分け方を工夫してほしい。
「インターフェイス」というモデル要素は、UMLからSysMLに引き継がれたものである。SysMLでは、図13の例で示すようにブロック定義図を使って、その詳細を表現する。
図13では、集中管理室が変圧器を操作する際、目標電圧を設定することを示している。また、変圧器が集中管理室に対して、実際の出力電圧やタップ(巻線上の接続ポイント)の位置情報を通知することを示している。
インターフェイスが持つサービスの仕様は、操作(Operation)として定義する。操作区画に記述する操作の書式については、連載第1回の「操作区画」を参照してほしい。
インターフェイスは、ブロックが提供、または要求するサービスの「宣言」を表し、そのサービスの具体的な実現方法については定めない。インターフェイスに基づいてモデル化を行うことによって、「宣言」と「実装」を分離でき、部品(コンポーネント)の再利用や差し替えを助ける。
今回は、ブロックやパートと外部との接続点の仕様を表現するためのモデル要素である、ポートとフローについて解説した。ポートは、ブロック定義図や内部ブロック図において、システムの構成要素間の“モノや情報などの流れ(フロー)”や構成要素が提供するサービスの仕様を表現する。ポートやフローを使って、システムエンジニアリングのさまざまな段階において、物理的、または論理的な部品間の接続関係をモデル化できる。
本連載では、SysMLの構造図である、ブロック定義図や内部ブロック図について詳細にわたって解説した。これらの図を使うことで、システムエンジニアリングの一環の中でシステムの構造を詳細に仕様化することができる。一方、構造だけでなく要求や振る舞い、制約関係など、さまざまな側面からシステムを捉える上で、SysMLの他の図を活用していくことができる。このようなSysMLのさまざまな図について、詳しくは参考文献[4]を参照されたい。
Copyright © ITmedia, Inc. All Rights Reserved.