[レポート]
ESC2000 参加報告
株式会社 オージス総研
オブジェクト技術ソリューション事業部
渡辺 博之ESC2000
先月の 9/24 から 9/28 の 5 日間に渡り、カリフォルニアのサンノゼでESC2000 が開催されました。
ESC とは、Embedded Systems Conferences の略で、その名の通り US における「組込み・リアルタイム分野」のコンピュータシステム開発者を対象とした、製品展示と技術セミナーを主体としたカンファレンスです。
毎年全米各地で、場所を変えながら 計 3 回ほど開催されているのですが、その中でもここ西海岸で行われるカンファレンスが最大級で、昨年は1 万 4 千人の参加者がありました(現時点では、今年の参加者は未発表)。
昨年は、開催以来ちょうど 10 年目ということで、大きな盛り上がりを見せていましたが、US でも組込み関係はたいそう盛り上がっているようで、今年はさらに昨年を上回る規模で開催されました。この報告では、主に技術セミナーの内容を中心にレポートしてみたいと思います。
ESCメイン会場のコンベンションセンター ESCサブ会場のシビックセンター
展示会と今年のESCの特徴
上にも書いたように、ESC では、新製品の展示会と技術セミナーが同時に開催されます。今年の場合、展示会の出展社数はざっと350 社、セミナーの数は約 140 クラスでした。この数字から見ても、その規模の大きさを感じていただけるのではないかと思います。
展示会の方は、ハードウェアからソフトウェアまで多岐に渡る製品が展示されていましたが、技術セミナーの方はどちらかというとソフトウェアエンジニア向けの内容が中心となっていました。今年の ESC の特徴としては、
といったあたりがあげられるでしょう。
- Linux などのオープン・ソース化への対応
- モデルを中心とした開発形態とそれをサポートする開発環境
- 携帯端末などモバイル機器向けのソリューション(デバイスおよび RTOS やソフトウェアなど)
その中でも、Linux への対応やモデル中心開発といったあたりは、比較的これからの浸透を図るデモンストレーションといえるような展示が多かったのですが、モバイル向けのソリューション展示のほうは、実際に適用した製品を所狭しと並べた非常に現実感のある内容でした。例えば、デバイスメーカーは、PCと組込み共用で使えるチップを、RTOS ベンダーは小さな機器向けの搭載事例を、開発環境ベンダーは、新しいデバイスを対象としたシミュレーションベースのクロス開発環境を、といった具合です。MSも日本だと CE がもっぱら話題の中心ですが、こちらでは NT Embedded の適用事例を積極的に流していました。
そういえば、蛇足ですが、あの昔懐かしい Z80 のZILOG 社も、TCP/IPやブラウザ用のチップとして、Z80 を大々的にPRしていました。名前も 「extreme Z80」、略して 「eZ80」 とかいう、何ともいまふうでかっこいいものに大変身を遂げていました(中身は、相変わらず8 ビット CPU らしいですが...)。また、職業柄、CASE ツールの動向も見て回ったのですが、UML をサポートしたツールとしては主に、Rational、i-Logix、ARTiSAN、Telelogicといったあたりが 積極的なPRを行っていました(他にも、UML をサポートしているツールは数多くありましたが)。日本からは、富士通、キャッツが出展しており、こちらはRose-ZIPC-Softune、Rose-ZIPC といった、ともに Rose と自社ツールの連携を主に展示していました。
これらのツールは、いずれも組込み・リアルタイム向けということで、ほぼ全てがUML と状態遷移の組み合わせをサポートしており、その情報を元にモデルを論理実行できるアニメーション機能がウリとなっています。また、ほとんどのツールがコード生成を前提としており、「UMLでモデル作成 → シミュレーション(アニメーション)でデバッグ → 最後にほぼフルのコード生成」といった流れがこれからのトレンドのようでした。
技術セミナー
今年は合計約 140 クラスもの技術セミナーが開かれました。セミナーの内容で分類すると、大体次のようなカテゴリに分かれます。
- マルチタスク、スケジューリング、デバイスドライバ設計
- プログラミング(C、C++、Java)
- オブジェクト指向、UML
- ネットワーク(CORBA、Bluetooth、IrDA)
- ファームウェア開発
- ハード設計
これらのうち、C++、Java、オブジェクト指向、UML といった、いわゆる「オブジェクト指向関連」は、合計で35 クラスほどありました。全体の割合からすれば、約 1/4 を占めることになるわけで、かなり多めと言えるでしょう。しかし、その内容自体は、あまり高度なものよりも入門もしくは初級程度のものが多く、まだまだこちらでもオブジェクトやJava は(C++ さえも !!)ようやく根付き始めたばかり、といった状況のようです。実際、UMLの基本的な説明や、C++ の入門講座的なものは、非常に多くの参加者を集めていました。
なお、UML のリアルタイム拡張やアクションセマンティクスに関する話題をあつかったクラスはありませんでした。
以下では簡単に、私の受けたオブジェクト関連のセミナーのサマリを記述することにします。
Real-Time Unified Modeling Language by Bruce Douglass
これは、ESC 初日に開かれた、書籍「Real-Time UML」を書いた Douglassさん(写真右側の方)の同名タイトルのチュートリアルです。90 分を 4 回に分けて計6 時間に渡る、一日コースの長〜い内容でした。
内容は、「Real-Time UML」の内容に沿ったもので、基本編として「クラス」、「関連」、「要求のまとめ方」、「ステートチャート」などを、高度編として「制約」、「配置図」、「パッケージ図」などを説明しました。ここでは最後に触れられた、「Using UML to Develop Real-Time Systems」としてまとめられた内容から数項目を簡単に紹介します。□Embedded Real-Time システムは他と較べて何が特殊か?
要求として、 システムのサービス品質要求(QoS)をきちんと定義することが大切な点。これは、例えば、いかに早く、いかに予測可能で、いかに小さく、いかに信頼性を上げ、いかに安全性を持たせるか、ということ。□時間の正確性とパフォーマンスについて
Real-Time は文字通りのリアルタイムということではない。十分に予測可能、ということである。また、デッドラインは以下3 種類に分類される。
- Hard Real-Time (絶対に満たされなければならないパフォーマンス要求があるもの)
- Soft Real-Time (平均的な応答時間やレスポンスが満たされていればよいもの)
- Firm Real-Time (短期的なレンジでは soft だが、長期的なレンジではhard に分類されるもの)
□Embedded Real-Time システムにおける設計のポイント
設計に際しては、以下の 4 点がポイントとなる。
- 並行性 (主に、アクティブオブジェクトの設計)
- 安全性や信頼性を実現するための設計やパターン
- サブシステムやコンポーネントの設計
- ノードの設計とコンポーネントの割り当て
□サービス品質要求(QoS)の記述方法
UMLの制約やタグ付き値を駆使して、QoS を記述することが可能。
操作に関しては、Execution time、 Blocking time、 Deadline などを記述できる。
例) { exec time < 25 ms}など。
メッセージに関しては、Transmission Time、Reliability rates など。
例) { reliability of message transfer 99.5%} など。
アクティブオブジェクトについては、Period、Minimum interactive time、Deadline of function など。
例) { period = 30 ms: deadline = 25 ms } など。総じて、かなり初歩的な UML の説明に終始していましたが、
非常に参加者が多く(200名程度は入っていたのではないかと思います)、まだまだ US でもオブジェクト指向やUML は始まったばかり、といった印象を受けました。
質問も活発に行われており(向こうは最後にまとめて QA を取らずに、途中でもバンバン質問が飛び交います)、特に質問が集中したのは、
- ユースケース
- 状態図
- 開発プロセス
といったあたりでした。
なお、このセミナーのベースとなった書籍「Real-Time UML 2nd Edition」ですが、現在オージス総研で翻訳を行っており、来年 1 月頃に翔泳社から出版される予定になっています。お楽しみに。
The Case for Using Use Case by Steve Mellor
こちらは、オブジェクト指向方法論の1つであるシュレイア・メラー法の提唱者、Steve Mellor さんによる 組込み向けのユースケースを解説したクラスです。今回のESC では、オブジェクト指向の上流に関するクラスは、先の Bruce Douglass さんとこのMellor さんの二人が中心になっていました(元 ObjecTime 社で現在 Rational 社に在籍している ROOM 手法の Bran Selic さんは、オブジェクトと直接関係ないクラスを2つ担当していただけでした)。以下、このクラスの内容を簡単にまとめます。
□Embedded システム開発におけるユースケースの意義
- 要求をまとめることが出来る
- 分析や設計時のモデリングの指針として使える
- 要求に漏れがないかどうかを確認することが出来る
- テストに使える
□アクターについて
- アクターとしては、人、機械、センサーなどがある。
- 但し、アクチュエータ(モーターなど)はアクターではない!!
※ここのところですが、Mellor さんは、アクターをシステムに要求を出すもの、として定義していました。□ユースケースの見つけ方
アクターからの要求に対して行われる処理は、すべてユースケースである。たとえば、エレベータシステムの場合は、
- エレベータへのリクエスト
- モーターを制御する
- ドアを閉める
- 人を感知してドアを開く
などがユースケースになる。□事前条件、事後条件
ユースケース記述の事前条件、事後条件は、システムに状態がある、ということを示唆している。□ユースケースは抽象度に合わせて分割する
たとえば、「乗員がエレベータのリクエストボタンを押す」といったユースケースの場合、
- 乗員がエレベータを要求する
- ボタンデバイスを押下する
の2つの抽象度に分解出来る。前者は、抽象度の高い「エレベータ制御ドメイン」に、後者はより低レベルの「プロセス I/O ドメイン」の、ドメイン用ユースケースとして分解される。
※ここでいっているドメインはシュレイア・メラー法の用語で、UML のパッケージに該当します。□ユースケース使用上の注意
我々の目的は、完全なモデルを作ることであり、完全なユースケースのセットを作ることではない。総じて、これといった新しい見解はなかったものの、事前条件・事後条件から状態を見つけだす方法、ユースケースを抽象度に合わせて分割する方法などは、なかなかいいヒントではないかと思いました。
Real-Time Architectures by Doug Locke
最後に紹介するのは、TimeSys 社という、主にスケジューリング分析用のCASEツールを作っている会社のエンジニアが行った、アーキテクチャに関する分類と比較を中心としたクラスで、個人的には今回のカンファレンスで一番面白い内容でした。
参加者も非常に多く、一番大きな会場にほぼ満員でした。しかも US には珍しく、途中退席者がほとんど出ないという好評ぶりでした。
なお、話の最初で、講師が「どんな種類の組込み開発を行っていますか?」と手を挙げさせたのですが、軍事・宇宙開発関係が一番多く、逆にFA や OA などの民生機器は非常にまばら、といった結果でした。やはり、小さな組込みはわれわれ日本がメインなのかもしれませんね。頑張らねば。以下、ほんの少しだけですが、主だった内容をまとめます。
□ Real-Time システムのアーキテクチャの分類
大きく以下の4つに分類される。
- Timeline or Cyclic Exective(タイムライン、または、周期実行)
- Event-driven(イベント駆動。周期的または非周期的)
- Pipeline(パイプライン)
- Clinet-Server(クライアント-サーバー)
□ アーキテクチャ設計時に考慮すべきもの
- 並行性 (Concurrency)
- 通信 (Communication)
- 共有するデータ (Shared Data)
- 同期メカニズム (Synchronization)
□ タイムライン(周期実行)について
- 特徴
- タイマーによる定期的なトリガで発火する小さな処理の集合で構成される。
- あらかじめ、処理の順番が決められている。
- 処理自体は関数呼び出しの同期型。
- 並行性は使用されず、全てシングルスレッド。- メリット
- 時間予測が完全に行える。
- データの共有やメッセージ通信などに関わる同期の問題が発生しない(なぜなら、並行性がないから)。- デメリット
- 正しく作り上げることが困難。メンテナンスも難しい。- 適用事例
- 航空機のフライト制御(ナビゲーション制御、計器表示など)。
- 独立な 2 〜 5 のプロセッサから構成され、各ノードの RAMサイズは 1MB 以下。□ イベント駆動について
- 特徴
- ハードウェアからの割り込み(非周期的)と時間割り込み(周期的)により起動される。
- 並行性実現のために、優先度を持ったマルチタスクが使われる。
- 同期メカニズムや優先度の逆転(priority inversion)に対する処理が必要。
- 時間予測を満足するためには、非周期的な処理をいかにうまく行うかがポイント。- メリット
- 比較的、開発が容易- デメリット
- Timeline に比べると、時間制約が soft (優先度の低いものは実行されない可能性がある)。- 適用事例
- 航空機の機体各部のセンサーやアクチュエータ制御。
- 独立な 20 程度の RISC プロセッサから構成され、各ノードのRAM サイズは 32 〜 96 MB。□ パイプラインについて
- 特徴
- ハードウェアからの割り込み(非周期的)と時間割り込み(周期的)により起動される。
- タスク間には、イベント処理に従った起動順序が存在する。
- イベント駆動に比べ、タスク間での通信が多用される。- メリット
- イベント駆動と同様- デメリット
- 通信、データの共有、同期メカニズム、などが多用される。
- 各タスクの優先度の設定(調整)が難しい(下手をすると入力イベントのキューがあふれてしまう)。- 適用事例
- 航空管制システム(レーダー、気候情報、フライト計画、空港情報、ナビゲーションなどを制御)。
- 50 〜 300 ものプロセッサで構成され、各ノードの RAM サイズは64 〜 256 MB。□ クライアント- サーバーについて
- 特徴
- ハードウェアからの割り込みと時間割り込みに加え、タスクからの呼び出しによっても起動される。
- パイプラインと異なり、相手タスクへの呼び出しがブロックされる。
- 理想的には、クライアント側のタスクの優先度が、サーバー側のタスクに継承されるべき。- メリット
- ノードが多数にわたる場合に最適。- デメリット
- 実装するためのインフラが未整備(Real-Time CORBA など)。- 適用事例
- 操縦訓練システム(コマンドによる制御、マップ情報、機体位置の表示など)。
- 200 ぐらいのプロセッサで構成され、32 〜 128 MB のRAMサイズ。□まとめ
- 実際には、上記のアーキテクチャは混在して用いられることが多い。
- いずれのアーキテクチャにもトレードオフが存在するので、システムの特性に応じて判断すべき。
私が最近思うことは、組込みシステムには種類やシステムの特性・制約に応じたアーキテクチャがまず必要である、ということです。オブジェクト指向開発は、依然として有効な開発手法ではありますが、土台となるアーキテクチャによって大きく活用できるものもあれば、補助的に活用する場合もあるのではないかと思っています。
このクラスで定義しているアーキテクチャは、まさにその一番大きな枠組みに該当するものです。考え方自体はこれといって新しいわけでもありませんが、こうやってきちんと分類し、そのトレードオフを明らかにしている点で価値があると感じました。
まとめ
最後に、このカンファレンスの最中に気づいたことを思うまま書いて、まとめにしたいと思います。
□ US の携帯電話
カンファレンスの期間中は、連絡用に US 製最新式の携帯電話を使用していたのですが、フル充電しても2日で電池が切れたり、充電にとても時間がかったりなど、あらためて日本の組込み技術の高さを実感する羽目になりました。でも、大きさだけに限って言えば、こちらの人たちはとても大きいので、たぶん日本の小さな携帯は却って需要がないかもしれませんね。□ オブジェクト指向技術の進行度合い
先にも述べたように、オブジェクト関係のセミナーは年々増えており、今年はとうとう全体の1/4 を占めるまでになっています。しかし、内容自体は、 まだまだ初歩的なものが多くを占めており、USでも UML やオブジェクト指向はこれからが本番、といったところのようです。既存技術では一歩も二歩もリードしている日本ですから、これからのソフトウェア開発でも是非US を先行出来るよう頑張りたいものですね。□ 組込み開発の 3 本柱
今回のセミナーで、とにかく数多く聞いた言葉は、次の通りです。
- モデリングは UML でやろう。
- アーキテクチャ設計をきちんとやろう。
- 予測可能なスケジュール分析には、RMA (Rate-Monotonic Analysis)を使おう。
まさに、これらが今後(今でも?)の組込み開発の 3 本柱といったところでしょうか。□ 来年以降の ESC
今年で、サンノゼの ESC は終了で、来年からのメインはサンフランシスコで開かれる春の展示会になるそうです。それと、今年の11 月には、ヨーロッパでも ESC が開催される予定となっており、ESC も年々拡大傾向にあるようです(ちなみに日本だとESC ではなく ESEC (組込み開発環境展)ですね)。
© 2000 OGIS-RI Co., Ltd. |
|