PR

論理構成要素間の関係を定義

 引き続き車両盗難防止システムの例で、先ほど明らかになった論理構成要素をブロック定義図で整理してみよう(図9)。ブロック定義図により、検討段階では曖昧だったブロック間の関係や多重度が明らかになる。これにより、論理的な要素の数を含めた関係が明確になる。

図9 論理構造(ブロック定義図)
図9 論理構造(ブロック定義図)
[画像のクリックで拡大表示]

 論理構成要素間の関係を定義する方法として、SysML1.35)では、ブロック間の関係を表現するモデル要素である「ポート」と、ポート間を流れる情報を定義する「アイテムフロー」がある。ポートには「フルポート」と「プロキシポート」がある。「フルポート」は独立した要素としてのポートである。「プロキシポート」は代理ブロックもしくはブロック内部要素のポートを外部公開する場合に定義できる。両者を特に指定しない場合は単なる「ポート」として定義できる。SysML1.2で定義されていた「フローポート」は廃止された。「標準ポート」は定義としては無くなり、「インターフェース」として表記のみ残っている。

 論理アーキテクチャーでは、論理構成要素が責務を果たした結果、どのような情報が出力されるかが重要となる。その情報を次のブロックが受け取り、ブロック間の連鎖によってシステムが成立する。ブロック定義図で定義したブロックの具体的な構成要素と構成要素間を内部ブロック図で定義し、図10に示すようにポートとアイテムフローを用いてブロック間の流れる情報を明らかにする。なお、ブロック間で操作などのサービスを定義する場合は「提供インターフェース」と「要求インターフェース」を使用する。ただし、今回の例ではブロック間のフローに着目したため、これらは使用していない。

図10 論理構造(内部ブロック図)
図10 論理構造(内部ブロック図)
[画像のクリックで拡大表示]

論理構成要素の特徴を整理

 次に、レイヤーの観点から論理構成要素を見てみよう。ここでも車両盗難防止システムの例を用い、他のブロックやデバイスを下位レイヤーに、機能をファンクション層として中間レイヤーに、判断・処理を行うアプリケーション層を上位レイヤーに、それぞれ要素を配置してみた(図11)。

図11 論理アーキテクチャーのレイヤー表現
図11 論理アーキテクチャーのレイヤー表現
[画像のクリックで拡大表示]

 このように、レイヤーによって論理構成要素を整理することで、要素の役割が明確になる。また、アプリケーション層の要素が、ファンクション層の要素を「利用する/される」という関係も明らかになる。さらに、同類の論理要素を近くに配置してくくることによって、システムの全体像が把握しやすくなる。

 SysMLでシステムの構造を定義する際は、単にブロック間をつないで構造を示すのではなく、図面の軸の意味を定義して要素を配置しよう。例えば、機能の抽象度合いを図面の縦軸、機能の時系列的な関係を横軸(左が入力、右が出力)とする。このように、要素の粒度をそろえ、要素の役割や意味、意図、位置付けを視覚的に示すことが重要である。要素の詳細設計時に他の要素の処理を実装して重複に気付かなかったり、互いに他の要素が実装するだろうと思い込んで処理の漏れに気付かなかったり、といった問題を防ぐことができるからである。また、変更や機能追加の際は、要素の変更で済むのか、新しい要素を追加する必要があるのか、要素の変更で意味や意図に変化はないか、といった検討が行えるようになる。

 このように、システムの論理アーキテクチャーを構築する際は、アーキテクチャーの構成要素を論理的に導出し、要素の責務、役割、意味を説明できるレベルまで落とし込もう。論理アーキテクチャーの構成要素の位置付けを明確にすることによって、次の物理アーキテクチャー構築で物理的な要素の検討を行う際に、正しい判断が行えるようになる。

 なお、システムアーキテクチャーの動的側面として、要素の振る舞いを状態機械図、要素間の相互作用をシーケンス図で定義することになるが、これらは誌面の都合上、省略する。