![]() |
[1999 年 2 月号] |
[Real-Time UML]
2.UMLを使った一連の開発手順を紹介
内容は全部で約350ページあり全7章から構成されています。著者はRhapsodyと
いうオブジェクト指向CASEツールを作っているI-Logixという会社のエンジニア。
ちなみにこの会社はハレルの状態図で有名なハレル氏も在籍しているそうです。
それでは簡単に各章ごとの内容を紹介していきましょう。
●第1章 リアルタイムシステムとオブジェクトの紹介
主にリアルタイムシステムおよびオブジェクト指向に関する説明が中心で特に目新しい部分はありません。 リアルタイムシステムをオブジェクト指向で開発するメリットとしては「分析から設計・実装まで一貫したモデルで行える」「変更に強く再利用性が高い」「拡張性が高い」等の点を挙げています。
●第2章 リアルタイムシステムの要求分析
リアルタイムシステムの要求分析の方法として、「外部イベントコンテキスト」と「ユースケース」の2種類を使用することを勧めています。 「外部イベントコンテキスト」はいわゆる構造化設計などで使用するコンテキスト図のことを指しています。ユースケースに関する説明は一般のものと特に変わりはなく、リアルタイムシステムによくある「アクターが見つかりにくい」「ユースケースの粒度の基準」などの問題点については触れられていません。
また、シーケンス図やコラボレーション図などをリアルタイムシステム向けに拡張した記法なども紹介されています。
●第3章 分析:オブジェクト構造を定義する
オブジェクトや関連の発見方法、それらを元にしたクラス図の作成などに関する説明が中心。 特徴的なのは、クラスではなくオブジェクトレベルでの発見を非常に重視している点です。分析時のオブジェクト図ではインスタンス数をしっかりと明記します。 これは、物理的なハードウェアをオブジェクトとして扱うことが非常に多いリアルタイムシステムでは理に適った方法といえるでしょう。
また、オブジェクトの発見方法については、具体例を交えながら詳細に渡った説明がなされており、組込み・リアルタイムシステムの分析を始めて行う際などには参考になるでしょう。
●第4章 分析:オブジェクトの振る舞いを定義する
オブジェクトの振る舞いは「オブジェクト毎の状態図」と「オブジェクト同士の協調を表現するシナリオ図」で表現する、としています。 状態図については取り立てて新しい点はありませんが、その説明にはかなりの分量を割いています。 なお私自身は、分析ではオブジェクト間のインタフェースを決めることのほうが重要で、ここで書かれているようなオブジェクト内部の正確な状態図の作成はむしろ設計作業でやるべきこと、と考えています。
シナリオ図としては、シーケンス図以外にもクリティカルなタイミングを表現できるタイミング図などが紹介されています。
●第5章 アーキテクチャ設計
いわゆる本書のハイライト部分(でしょう)。前半はアーキテクチャに関する説明とパターンの紹介、後半は並行性に関する設計方法が中心になっています。 アーキテクチャとしては、「物理的(位置、プロセッサ数など)」「ソフトウェア的(階層化など)」「IPC設計」「タスク設計」などが挙げられています。 階層化を除けば、いずれもまさにリアルタイムシステムの特徴そのもので、参考になるべき点が多いといえます。 しかし、これらの全てをたった1つの章にパッキングしてしまっているので、いずれも簡単な説明だけで終わってしまい内容的に物足りなさは否めません。 また、ここで行った設計内容が次の設計フェーズでどのように実現されるのか、などについても興味のあるところですが、残念ながらこれらの内容はこの章でしか触れていません。
反対に、アーキテクチャの説明に含まれるパターンの説明はいまいち。 マスタースレーブ、階層化、ブローカー、ウォッチドッグなどが示されていますが、既存の概念をパターンという形で紹介しているだけです。 むしろパターンよりも前述の内容をもっと濃くして欲しかったと思います。
●第6章 メカニスティック設計
メカニスティック設計とはあまり言葉としてなじみがありませんが、著者の定義によれば「実装方針に基づくクラス間の構成の設計」ということになります。 内容自体は、いわゆるデザインパターンを中心とした説明で構成されています。 前章と同様に、ここもパターンの内容がいまいちです。 言い方が違ってはいるけどGammaらのデザインパターンで紹介されているものと同じ、というものがやたら多くでてきます。 で、ようやく最後のほうでリアルタイムシステム特有といってもいいようなパターンがいくつか紹介されます。
個人的には、状態遷移表の桝目をそのままオブジェクトにしてしまう「State TablePattern」 が気に入りました。 このパターンには長大なサンプルコードもついており、著者の意気込みも伝わってきます。 実装方法はstaticメソッドに頼ったりしてあんまり美しくはありませんが、この辺はリソースや効率などとのトレードオフとして目を瞑って、むしろ、システムの詳細な制御をオブジェクトの組合せで行ってしまおうという考え方自体に共感を覚えます。
●第7章 詳細設計
詳細設計では、「データ構成」「関連の実装方法」「アルゴリズム」等について定義します。 著者のたとえによれば、アーキテクチャ設計は「どの惑星に行くかを検討すること」、メカニスティック設計は「惑星への飛行進路を決定すること」、詳細設計は「惑星のどの岩で食事をとるかということ」らしいです。 内容自体はリアルタイムに関した話題はあまりなく、普通の説明が中心です。
© 1999 OGIS-RI Co., Ltd. |
|