ストラタジーナム メニュー

2006年7月19日水曜日

UML中級講座 第72回 構造化アクティビティノード

本日は、構造化アクティビティノードについて解説致します。

6-6 構造化アクティビティノード
構造化アクティビティノードは、内部にアクティビティを含むノードです。

図 A10



内部のアクティビティの形式によって、コンディショナルノード、ループノード、シーケンスノードの3種類があります。
内部の従属するノードは、必ず1つだけの構造化アクティビティノードに所属し、他の構造化アクティビティノードと従属ノードを共有する事はできません。
また、エッジに関しても、ソース側、ターゲット側の両端は必ず同一の構造化アクティビティノード内で有る必要があります。

コンディショナルノード

図A10(a)は、コンディショナルノードで、複数の節(clause)から構成され、1つの節は テスト : ボディーの形をしており、テスト部分に指定された条件が成り立つ時のみボディー部分が実行されます。
複数のテストが真を返した場合でも、実行されるボディーは一つだけですが、どのボディーが実行されるかは特段の条件がない限り(例えばテストの実行順序の指定など)予測出来ません(非決定的)。
またすべてのテストが偽を返した場合には、ボディーは実行されません。
複数のテストが真を返したり、すべてのテストが偽を返したりするする事態は、セマンティクス上の誤りである可能性はありますが、文法的には許されます。

コンディショナルノードのメタモデル

属性

isAssured : trueの場合は、 モデラーが少なくとも1つのテストが真を返すことを保証した状態を示す。
isDeterminate : trueの場合は、モデラーが最大1つのテストのみが真を返し、どのボディーが実行されるかが決定的である事を保証した状態です。

節(Clause)の間の関連(predecessorClauseとsuccessorClause)は、テストの実行順序を指定した場合の前後関係を示します。

ループノード

図A10(b)は、ループノードの形式を示しており、セットアップ、テスト、ボディーの三つの部分(アクティビティ)からなっています。セットアップ部分は、ループノードにトークンが入った時点で一度だけ実行され、その後は、テスト条件が真である限りボディーが実行されます。

ループノードのメタモデル

属性
isTestedFirst : trueの場合、最初のボディーの実行前にテストが実行されます。falseの場合、最初のテスト前にボディーが一度実行されます。

シーケンスノード

図A10(b)は、シーケンスノードを示しており、指定された順番にアクティビティが実行されるノードです。

図 12−21 構造化アクティビティノードのメタモデル

図 12−22