入場/出場ポイント昨日、お話しました物作りに強く関係しますが、OMGでは現在、組込み系の資格試験であるOCRESの準備をしております。組込み系の試験と言っても、現在様々なものが実施もしくは実施予定されていますが、OCRESは、基本的にアーキテクチャ中心の試験であり、他の試験のカバレッジとは、ほとんどかぶりません。良く言われるように、システム開発は、複雑度が増すにつれて、次のような3段階を経ます。1)コーディング中心、コーディングが全ての世界2)デザインが必要な段階、デザインの良し悪しが重大なインパクトを与える3)アーキテクチャ的アプローチが必要な段階、アーキテクチャが品質を決めてしまう段階そして、OCRESは、2)と3)の段階のデザイナーやアーキテクトに必要な能力を評価する試験です。入場/出場ポイント入場ポイント、出場ポイントは、図D18の(a)や(c)のように、ステートマシン図やコンポジットステートの境界線上に描き、入場もしくは出場の遷移を表します。図D18の(b)や(d)の様な書き方も許されます。((a)と(b)、(c)と(d)は等価です。海外へ行くと痛感するのが、日本の強い経済力のありがたさです。様々な国籍の人々が行き交う中、同じような能力を持ちながら、国による貧富の差が如実に出て来てしまうのも国際社会の現実です。現在、日本人が国際社会の中で豊かな部類に属するのは、決して経済学者や政治家が優秀な訳ではなく、畢竟、物作りの強さである事は、万人の認める所です。その物作りの面でも、後進の国々に追いせまられています。有名な韓国企業の経営者の講演を聞く機会があったのですが、韓国のその企業は長年、日本企業に追いつこうと日本企業のまねを一生懸命やっていたそうですが、アナログの世界では、いくら一生懸命やっても中々追いつけなかったそうです。ステートマシンの中での様々な遷移を抽象化したものです。本日から数回に分けて、疑似状態を見て行きたいと思います。図D19の(a)は、開始疑似状態のシンボルです。コンポジット・ステートでのデフォルト状態への遷移を表します。この遷移にアクションを定義する事も可能です。(入場アクション)一つの領域(リージョン)は、最大1個の開始疑似状態を持ちます。図D19の(b)と(c)は、履歴を表す疑似状態です。深い履歴は、コンポジット・ステートの最後にアクティブであった状態(もしくはその組み合せ)への遷移を意味します。当該コンポジット・ステートが、一度もアクティブになった事がない場合は、デフォルト状態へ遷移します。コンポジット・ステートは、最大一個の深い履歴を持ちます。他の遷移と同様に、入場アクションを定義できます。浅い履歴は、コンポジット・ステートの最後にアクティブであった直近の下部状態(サブステート)もしくは、その組み合せへの遷移を意味しますが、直近のサブステートの更に下にあるサブステートは無視されます。(場合に応じ、サブステートのサブステートはデフォルト状態へ遷移します。)他の条件は、深い履歴と同じです。昨日のブログで、高層ビルの最上階にあるフィットネス・クラブの話を書きましたが、そのプールの窓の真下に、TBSと言う放送局があります。関東平野にお住まいの方以外には、放送波が伝播しないので、なじみがないかも知れませんが、筆者の年代ですと、ウルトラQやウルトラセブンと言った往年の名作を放送した放送局であり、こういう形の再会には、中々感慨深いものがあります。数十年前、ウルトラQを非常に斬新に感じていた頃の日本では、プールの窓越しに放送局を見下ろす風景は、未来都市そのものだったと思います。(放送局のビルそのものも、決して低い建物ではありません。図D17のシンボルで表されます。この記号は、アクティビティ図のアクティビティ終了ノードと同一です。(意味は、もちろん違います。定義されていたのが、UML2.0になって、状態遷移図から完全に離れた経緯があります。従って、終了状態以外にも、ステートマシン図とアクティビティ図では、非常に良く似たシンボルが使われています。終了状態は、属する領域(リージョン)が完了している事を示しています、全ての領域が完了している場合は、それを包含する状態は、完了していると見做されます。最近は、書き物系の仕事が多く、生活が深夜帯のデスクワーク中心になってきたために、以前にも増して運動不足の状態に陥ってしまっております。幸いにも、先日、オフィスの近所にフィットネス・クラブがあるのを偶然見つけ、さっそく入会しました。以前ですと、このような出費は、馬鹿馬鹿しく感じ、飲み代に廻した方がましだと考えていたのですが、年のせいか、周囲に身体の不調を嘆く人も出始めて来ており、病院代だと思えば安いと、素直に払う気になりました。入会したフィットネス・クラブは、都市部のそれらしく、高層ビルの最上階にあり、プールで泳ぎながら、外の風景を見下ろしたりしていると、一種不思議な感じがします。遷移は、「遷移を引き起こすトリガー」、「ガード条件」、「遷移に伴うアクティビティ」の3つの要素によって定義され、一般的に、ステートマシーン図中では、トリガー名[ガード条件]/アクティビティ名の形で表現されます。図D15の様に、トリガーをシグナルの表現で表す事も可能です。(プレゼンテーション・オプション)また、同図のように、遷移に伴うアクティビティを、アクションを示す4角形や、シグナル送信(通常は、イベントの発生を意味し、そのイベント発生が他の遷移を引き起こすトリガーになる事ができます)の形で表現する事が可能です。遅延可能トリガーは、トリガーの発生が保存され、別の状態への遷移があった時に再現される特殊なトリガーです。(遅延トリガーがさらに遅延される事も可能)そして、遅延トリガーが受け入れ可能になり、遷移を引き起こすまでプールされます。遅延トリガーは、トリガー名の後ろに、'/'とキーワード’Defer'を付けて表現します。図D16は、[明かりが消える」トリガーは、2度遅延され、「コーヒーを注ぐ」状態への遷移を引き起こすまで、プールされる事を示します。先月末に、新しい街にオフィスを移転したのですが、ようやく慣れて来た感じです。本来は、都内の別の場所に移る予定だったのですが(お茶の水近辺が第一候補でした)、いくつかの偶然の結果、最後の最後に赤坂に移る事になりました。六本木や渋谷、新宿に比べ、赤坂は何となくマイナーな感じがしていたのですが、住めば都で、移転して一月も経つと、なかなか住みやすい街だな、と思えるようになってきました。そのうちに、赤坂の紹介記事も書いて見たいと思っております。一般の分類子と同じ様に、ステートマシーンも般化が可能です。特化されたステートマシーンでは、元のステートマシーンの全てのエレメントを引き継ぎながら、かつ、遷移や状態、領域(リージョン)の追加や再定義が行われます。これによって、シンプルなステートマシーンを、(リージョンの追加、再定義により)コンポジット・ステートマシーンに特化する事も可能です。同じように、内部のサブマシーンを別のサブマシーンに入れ替える事も可能です。その場合は、少なくとも、元の入口点/出口点と同一の互換性を維持する必要があります。(入口点/出口点の追加は可能)ステートマシンの特化の事を、拡張(Extend)と呼び、拡張されたステートマシーンである事を、指し示すために、キーワード"Extended"が使われます。ATM{Exteded})を表しています。図D13の中で、キーワード{final}が付いた状態がありますが、これは、これらの状態が最終形である事を示し、拡張や再定義ができない事を示しています。図D14では、D13のステートマシーン「金額読取」に状態と遷移が付け加えられ、金額の選択だけではなく、入力も可能なように、拡張されています。(Atom)プロマネBlogのホスト変更についてこちらは古いプロマネBlogの置き場です。