ObectSquare

[技術書籍紹介]


はじめに

 現在日本でも数多くのオブジェクト指向関連の書籍が出版されていますが、その中で数少ないリアルタイムシステムを対象とした書籍です。
日本語に翻訳され出版されてから1年以上経ちますが、未だそれほど多くの方に読まれていないのではないでしょうか。
本書は多数存在するオブジェクト指向の書籍にはないユニークな内容となっています。


INDEX


内容のあらまし

 この本はいわゆるオブジェクト指向分析/設計の「方法論」の本ではありません。
本をパラパラとめくってみると気づくように、クラス図、状態図と言ったオブジェクト指向に良く出てくる図はそれほど登場しません。
そのかわり、(タスクとしての)プロセスやuse-caseパスと呼ばれる制御パスや筆者達が独自に定義した大粒度のコンポーネントや時計などのアイコンが描かれています。
use-caseマップはこれだけで1つの設計Toolとして利用可能ですが、基本的には他のオブジェクト指向方法論を補完する物です。逆にいえば従来の方法論のいずれにも不足していた開発上の視点や記法を紹介し、その有効性を説く書物となっています。
 著者達は、通常散文で記述されるuse-caseを視覚的に表現し、特に高次設計(この著者達は分析という言葉を用いていません。分析や上位設計という言葉に必要以上にこだわらない様にとの配慮と思われます。)において大粒度なシステムの振る舞いを表現する重要性を説き、その為のノーテーション、具体的な作業及びメリットについて詳細に解説しています。

 第1章ではオブジェクト指向技術がリアルタイムシステムで利用される難しさや問題点について大変的確で参考になる解説がなされています。そして、オブジェクト指向技術がリアルタイムシステムで用いられる為に何が問題となっているか、どの様な事を解決しなければならないかを筆者達が問題提起をしています。この章に書かれている内容全てが本書の出発点です。この章でピラミッドの図が出てきますが、以降の章で度々登場し重要な意味を持っていますので少し意識して見てみましょう。
この章を共感を持って読む事が出来れば、この本全体を通して興味を持って読み進む事が出来るのではないでしょうか。この第1章をジックリ読んでみて下さい。

 第2章では、「振る舞いファブリック」という言葉を用いて、システムの大粒度の振る舞いを把握し、表現する事の大切さ、有効性をuse-caseマップを紹介しながら解説しています。この章のテーマはあくまでシステムの大粒度の振る舞いの重要性と有効性を読者に理解させる事であり、具体的なuse-caseマップの解説は次章以降になります。
ここで筆者達が述べている大粒度の振る舞いの重要性は、本書全編を通して強調されています。

 第3章は、use-caseマップのノーテーションと基本的な利用の方法や作業上のポイントが解説されています。
この章のノーテーション、use-caseマップ利用方法、作業上のポイントを理解すれば、基本的なuse-caseマップの利用法を理解し、活用できるようになるでしょう。

 第4章は本書の中で、以後の章を読み進める上での核となる章です。
この章で筆者達がuse-caseマップを現在のオブジェクト指向開発に適用する場合の開発プロセスの定義と作業内容を、1章で出て来たピラミッドを用いて解説しています。開発作業の要件定義から実装までを作業レベルとして定義し、各作業レベル内で「製作ドメイン」、「操作ドメイン」、「組立てドメイン」というカテゴリー定義をしています。各作業レベルおよびドメインの作業の流れが述べられており、開発プロセスに対する筆者達の主張が興味深く解説されています。
 ここでのポイントは第1章で問題提起されたリアルタイムシステム開発とオブジェクト指向開発の相反する開発に対する考えの距離を減らし、どの様に両者を結びつけて行くかです。
筆者達のこの問題に対する解決策を吟味してみて下さい。

 第5章は4章までに出てた解説の例題となっており、4章で出てきた筆者達の作業プロセスに沿って解説がなされています。この章でuse-caseマップを用いた筆者達の提案する開発プロセスの要求分析から実装までを見る事が出来ます。この章の終わりにはC++での実装例も掲載されているので、どの様にC++にマップされるのか理解出来るでしょう。
 この章までが本書の前半と捉えて良いと思います。以降の章はより応用的なuse-caseマップの適用の解説となり、リアルタイムシステム開発で取り扱う問題をuse-caseマップでどの様に応用できるかが解説されています。

 第6章は例題を用いて第5章同様use-caseマップを適用した一連の開発作業を解説しています。
ただし、この章ではオブジェクト指向が最も良く生かされている事で知られる
GUIアプリケーションをあえて例題に選び、use-caseマップのメリットを一層強調するスタイルの解説が行われています。
 話題はフレームワークにまで及び、フレームワーク構築に際してもuse-caseマップが有効である事を説いています。
章末には実装コードも掲載されています。

 第7章はリアルタイムシステムで特に重要な時間制約について解説した章です。プロセス、ISR、並行性などをuse-caseマップを用いてどの様に扱うかを解説しています。
ただし、この章では時間制約、タスク、並行性を表現するノーテーションの解説が中心で、具体的な作業プロセスとノウハウは第8章、第9章、第10章、11章で重点的に解説されています。

 第8章から第10章までは、リアルタイムシステム特有の問題、つまり時間制約、タスク、並行性をどの様にuse-caseマップで表現し、良い設計を行うかのポイントの解説です。 第8章は高次設計における時間制約、タスク、並行性の問題を取り扱う場合のuse-caseマップの有効性を具体的な例をあげて解説し、9章で更に詳細にタスク、並行性を扱っています。数々のタスク間の同期の取り方やその表現方法及び長所、欠点を詳しく解説しているので大変参考になります。
第10章ではケーススタディーとして、プロセスの抽出や通信の方法を示し、オブジェクト指向のクラスへと結び付けて行く解説がなされています。
 第8章から10章まではこの本の最大の目的の部分です。筆者達の本書を書いた目的はこれらの章にあると思われます。そして第11章のパターンへと体系化させています。第8章から10章及び11章は時間をかけて読むだけの価値があるでしょう。
難しい箇所が多いですがuse-caseマップの真骨頂となっています。
 エンジニア間では従来からタスク間の協調を表現するノーテーションが不足していました。第8章から第10章で紹介されているシンボル、アイコンを用いてタスク間の協調関係を表現することで、ノーテーション不足の問題点解決の1つになるのではないでしょうか?

 第12章は、代表的なオブジェクト指向方法論の簡単な解説と、各方法論にどの様にuse-caseマップを補足的に利用出来るかのガイドラインが示されています。著者達はuse-caseマップのみを利用して、システム開発を行う事は主張せず、他のオブジェクト指向開発方法論と合わせて用いる事を提案しています。
 この章を参考に読者自身のプロジェクトにどの様にuse-caseマップを利用して行くか検討するのに役に立つでしょう。


INDEX


終わりに

 本書全般にわたって内容の概要及び有効性を紹介して来ました。
ただし、本書には読み進める上で少なからず注意点もあります。それは、

1、内容が専門的で難しい
2、文章表現に難解な点がある

という点です。
 本書は、オブジェクト指向の入門的書籍ではないので、内容は決して簡単な本ではありません。読者は何か1つのオブジェクト指向分析/設計方法論を知っているか、実際にオブジェクト指向開発およびオブジェクト指向言語の利用経験がないと、著者達の問題提起やそれに対する解決法の提案が理解しづらいかも知れません。
また、仮にオブジェクト指向による開発経験があっても、リアルタイム系のシステム開発に携わった経験が無いとピンと来ない箇所も多いかも知れません。
それは、例えばISRやRTOSなど読者が既知として話を進めているからです。

 ただし、use-caseマップのアイディア自体はリアルタイム系以外のシステム開発でも十分利用可能な汎用的なものです。リアルタイム系以外のシステム開発の方でも充分参考になると思います。また、専門知識と言ってもRTOS、ISRの概略を理解すれば、それ以上の深い知識は要求されないので、読み進める上で不安はありません。

 2番目の注意点については、何度か繰り返して読むか、学校/社内で輪講形式で議論しながら、じっくり読み進めてみるのも良いでしょう。
 最近、use-caseマップを用いたオブジェクト指向の論文や記事をたびたび見掛ける事がありました。
いずれも組込みシステムやリアルタイムシステムに関するものでしたが、use-caseマップが有効であるとエンジニア達から支持されている証拠と言えるでしょう。

 なお、本書の著者達の最新本
 「An Introduction To REAL-TIME SYSTEM From Design To Networking with C/C++」
が出版されています。これは、本書「ユースケースマップ」の続編ではなく、学生向けに書かれたリアルタイムシステムの教科書となっています。「ユースケースマップ」に登場する多くのシンボル、アイコンを用いてプロセスやスレッド、コンポーネントへのタスクの配置、タスク間通信の解説がなされています。
オブジェクト指向の話も出てきますが、あくまでリアルタイムシステムの解説が内容の中心です。そういう意味で、そちらの本を先に読むと「ユースケースマップ」を比較的楽に読み進められるかも知れません。


© 1999 OGIS-RI Co., Ltd.


INDEX