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

2006年11月15日水曜日

UML中級講座 第101回 ステートマシンのメタモデル

最近は、組込み系のソフトウエアが話題に多くのぼるようになってきました。
自動車の開発コストも、既にソフトウエアの方がハードウエアを凌駕してしまい、品質・コストにおける重要度は増す事はあっても、当面減ずることはないでしょう。
かつては、自動車のエンジンはアナログ技術のかたまりであり、今では信じられない事ですが、1970年代になって、エンジンの制御をマイクロ・プロセッサで行なう試みが為された時も賛否両論が渦巻いたと聞きます。

何を持って時代の推移を最も感じるかは人によって異なると思いますが、アナログからデジタルへの移行は、ここ数十年のテクノロジーの時代変化を象徴する一つのエポックだと思います。

筆者は、70年代を、関西の港町で過ごしましたが、街に初めてシンセサイザーがやってきた時のときめきは今でも忘れ難いものがあります。
あの頃のシンセサイザーは巨大で、訳の分からない電線がのたくって繋がっており、真空管のほのかな光りは、当時の高校生の目には神秘的にさえ映りました。
その当時、年長者の方は、電子楽器そのものを嫌う人が多かったのですが、我々の世代だとあまり抵抗がありません。
しかし、シンセサイザーも真空管から半導体になって小型化し、アナログだったものがすべてコンピュータ制御になった今、アナログ式、真空管式のシンセサイザーに郷愁を感じるのも事実です。
筆者の自宅にも一台、キーボード型のシンセサイザーがあり、たまに弾いてみたりするのですが、音や機能に何の不足もないのですが(恐らく、高校時代初めて遭遇したシンセサイザーの数百倍の機能があると思います)、あの頃感じたときめきは残念ながらよみがえって来ません。

ステートマシンのメタモデル

図15-02はステートマシンのメタモデル図です。
各項目は、既に取り上げたものが多いので、本日は、このメタモデル図上のエレメントで、本講座で触れなかった点を中心に解説したいと思います。

ステートマシンは、最低1つの領域(リージョン)を持ち、領域内にはいくつかの状態や疑似状態を持ちますが、メタモデル中では、状態と疑似状態をまとめて頂点(Vertex)と呼んでいます。
各頂点は遷移で結ばれており、遷移は、トリガー、ガード条件(Contraint)、アクション(Behavior)を持ちます。また、状態には、入場アクション、出場アクション、Doアクティビティなどの振舞いを伴う事が可能です。

疑似状態に関しては、ターミネートを除いて、全て解説しましたので、ここではターミネート(terminate)のみを解説します。

ターミネート疑似状態

ターミネートは特殊な疑似状態であり、ターミネート疑似状態に入ると言うことは、ステートマシンの実行が終了してしまう、あるいは実行主体のオブジェクトが終了してしまう事を暗示し、いかなる状態へも遷移せず、出場アクションも実行されません。
ターミネート疑似状態に入る事は、以前解説したDestroyObjectActionを呼び出す事と等価に扱われます。
ターミネート疑似状態は、図D19の(h)で示される記号" × "で示されます。



図15−02


図D19



2006年11月8日水曜日

UML中級講座 第100回 選択(チョイス)疑似状態

先月の終わり頃に、携帯電話の番号ポータビリティがスタートし、携帯電話の話が職場でも盛んに行われるようになりました。
筆者も、以前電話会社に勤務していた事もあり、今でも電話には関心が高い方です。
しかしながら、筆者のまわりは、携帯電話に無頓着な人が多く、中には自分が使っている電話会社が分からないと言う人までいます。
何でも、昔、祭りの縁日か何かで携帯電話を只で貰い、その後、電話会社の名前がころころ変わって行って、覚えられなくなってしまったそうです。
どのキャリアを選ぶかは、極めて個人的な好みや条件の問題であり、たとえ世間的に評判が良くても、自宅など自分が使いたいと思った所で使えなければ無価値です。
筆者の場合は、繋がりやすさはもちろんの事、比較的、音声の品質や遅延の小ささにも拘る方ですが、元電話会社社員として、決してカタログや仕様は鵜呑みにせず、実地に比較しないと気が済まない方です。

以前は、普通の携帯電話とPHSを両方使っていたのですが、最近はPHSしか使わなくなりました。
これは、筆者のオフィスや自宅が、電波の混み合う都心に近いせいであり、PHSが比較的電波の混雑に強い特性を持つ結果だと思います。
また、ワイヤレス電話機を出発点として簡易電話としてスタートしたPHSが、様々な悪条件を技術的に克服して行き、以前は移動体上では殆ど使えなかったものが、今では十分に実用に耐えるようになり、また、電波の密集する地域での技術的チャレンジを克服して行く姿は、まるで「プロジェクトX」のノンフィクション版を見るようで、思わず応援したくなります。
事実、特定の方向にしか電波を送らない方式など、広い地域に渡って強い電波を発して周波数帯を占領してしまう一般の携帯電話に比べ、日本の国土事情に合ったテクノロジーだと思います。
と、書いて行くうちに思わずPHSをべた褒めしてしまいましたが、先に書きましたように、携帯電話の選択は、個人的な好みと条件の問題ですので、ここに書いた事は、あくまで参考意見程度に。

選択(チョイス)疑似状態

選択疑似状態は、出力側のガード条件を動的に評価し次の状態が決定されます。
これは、動的条件分岐と呼ばれ、第98回で触れたジャンクションとは、異なった振舞いをします。
選択(チョイス)疑似状態では、出力側の複数のガード条件が満たされた場合には、次にどのパスをたどるのかは非決定的であるのに対し、ジャンクションでは、条件が満たされる全てのパスが有効になり、複数の状態へ遷移します。
また、選択(チョイス)では、出力側の全てのガード条件が満たされない場面は許されず、必ず一つは条件が満たされる必要があります。(そのために、elseと言うキーワードを使用する事が可能です。)
図D22は、選択疑似状態の表記例です。
右側が、通常の表記方法ですが、この例のようにガード条件のオペランドが共通の場合は、左図の様に、共通するオペランド(この例では Id )を、選択疑似状態シンボルの中に記入し、ガード条件でオペランドの記載を省略する書き方も許されます。



図D23



2006年11月3日金曜日

UML中級講座 第99回 フォークとジョイン

随分前になりますが、このブログで、Intel Macのお話をした事がありました。
その時に、モバイル用のPHSモデムがIntelMacに対応しておらず、オフラインの状態になってしまったと書きました。
実は、筆者もそのことをほとんど忘れていたのですが、先日お会いしたある方に、その後どうなりましたかと聞かれ、多少はこのブログの読者のお役に立つのではないかと思い、後日談をお話したいと思います。
と言うのも、その方も、IntelMacとPHSモデムの問題に直面し、ネットで解決方法を検索しているうちに、偶然このブログを発見し、それ以降、時々覗くようになったそうあり、他にもそう言う方が多そうな気がします。
ネットの統計資料を見ると、各種サーチエンジンで、IntelMacとかPHSモデムの名前で検索した結果、このブログにたどりついたと言う方が、筆者の事前の予想を超えて、結構いらっしゃいます。

さて、IntelMacとPHSモデムAH-F401Uの問題ですが、モデム側でIntelMacをサポートする気配がないため(本日再度確認したのですが、サポートはまだのようです)、結局、このモデムを使うのをやめ、手持ちのPHS電話WX300KをパソコンにUSB接続して使っています。
こちらも、実はメーカーやキャリアの正式サポートがある訳ではなく、個人の方がネット上に公開されているドライバーを見つけて、ダウンロードして使わせてもらっています。
この個人のサイトへ直接リンクを張るのは憚れるのですが、ネット上で検索して行くとすぐに見つかると思います。
公式なものでもサポート付きでもないのですが、何の問題もなく、非常に良くできたソフトだと思います。改めて、作者の方に感謝申し上げます。(と言っても、作者の方は、このブログを見てないと思いますが。)

フォークとジョイン

フォークとジョインは、アクティビティ図でも同じ記号、同じ名称で使われていますので、直感的にも捉えやすいと思います。

フォーク

フォークは、入力側の遷移を、複数の直交領域、即ちコンポジット・ステートの異なるリージョンへの遷移に
転換します。
出力側には、ガード条件やトリガーを付ける事はできません。

ジョイン

複数の直交領域からの遷移をまとめます。入力側にはガード条件やトリガーを設定する事は許されません。



D22

2006年11月1日水曜日

UML中級講座 第98回 ジャンクション

秋もだんだんと深まり、今日の東京地方は快晴で、紅葉にはまだ早いものの、久しぶりに秋らしい一日でした。
先ほど乗ったタクシーの運転手さんが青森県の出身で、車中、十和田湖の紅葉の素晴らしさを熱弁されておられたせいもあり、筆者もそぞろ紅葉の映える風景を見たくどこかへ行きたくなって来ました。
残念ながら、青森県地方はもう紅葉のシーズンは終わってしまい、初冬となってしまったようですが、皆様の中には紅葉を愛でながら過ごされている方も多いと思います。

さて、紅葉で思い出したのですが、今から十数年前、秋のカナディアンロッキーを訪れた際の紅葉は、日本のとは随分趣が異なり、暴力的とも感じるほどの力で、大自然が紅葉する姿に圧倒され、しばしぼう然として見とれてしまいました。
迫力ある紅葉に加え、秋のつるべ落としもすさまじく極端で、まわりに街灯が全くないせいもあって、日没後はあっという間に真っ暗闇になってしまい、ほとんど這うようにして駐車場までもどり、やっとの思いで車までたどりついた時は、心底ほっとしました。

ジャンクション

ジャンクションは、遷移を表す辺の合流・分岐点で、図D21の様に小さな黒丸で表します。
遷移は、トリガー、ガード条件、アクションから構成されます。
図中のState0からジャンクションへの遷移を例として見てみると、e2が遷移を引き起こすトリガーとなるイベントを示し、b<0がガード条件となります。この図では、遷移に伴うアクションはありません。



図D21