包括的な問題解決
TECSの策定作業に時間がかかってしまうもう1つの理由は、包括的な問題解決を目指しているからです。TECSが取り組んでいる課題として、以下のものを挙げることができます。
- アーキテクチャ表現
- インターフェイス定義、データ構造定義
- 静的な生成と結合
- すべてのものがコンポーネント
- 分散フレームワーク
- プラグイン機構
- 複合コンポーネント
これらのすべてをシンプルな形で実現することは、非常に難しい課題です。以下、順を追って解説を加えていきます。
アーキテクチャ表現
ソフトウェアが複雑化している今日において、アーキテクチャ表現について関心が高まっているようです。最近では、アーキテクチャ記述言語ADLというものが出てきています。TECSではコンポーネント記述言語CDLでシステム記述を行いますが、これはADLのサブセットに位置づけられます。しかしながら、CDLはADLにおいて最も重要な要素であり、TECSのCDLはソフトウェア構造を示すのに十分な能力を持っています。アーキテクトがソフトウェア構造を指し示すのに、TECSのコンポーネント図は非常に良いツールになります。
インターフェイス定義、データ構造定義
TECSは、組込みシステムの開発でもっとも用いられているC言語を対象にしていますが、C言語は、そもそもデータ構造を正確に表現する能力が欠如しています。また関数インターフェイスについても、引数が入力か出力か、あるいは、そのときにやり取りされるデータも曖昧です。このようなC言語の特性は時として有用ですが、誤解を生じやすいものであることに違いはありません。これらを正確に表現することで誤解が生じにくくなり、コンポーネント間の結合性を判断しやすくできます。TECSのCDLは、そうしたC言語の欠点を補うように設計されています。
静的な生成と結合
コンポーネントの静的な生成と結合は、組込みシステムにおいては非常に重要な特性です。非組込みのシステムでは、なるべく後から決定できることがありがたいと思われがちですが、組込みシステムでは事前計画性が非常に重要であり、動かす前にすべてが決定していることが望ましいことです。TECSでは、静的な生成、結合を基本としていますが、動的な結合も可能です。
すべてのものがコンポーネント
TECSでは、すべての要素をコンポーネントとして表すようにしています。例えば、分散フレームワークやメモリ管理機構は、たいていのコンポーネントシステムでは、その下に隠されています。組込みシステムでは、こうしたものが隠されないこと、要求される特性に従って変更可能であることが非常に重要です。
分散フレームワーク
分散フレームワークについて、これまで組込みシステム向けに適したものは限られていました。例えば、組込みCORBAでは上位システムとの接続が重要であって、組込みシステムに持込むには大げさすぎる仕組みであったり、下位レイヤの選択が自由でなかったり、組込みシステムの内部での分散に適したものとはいえません。これまで分散フレームワークがあればと思われた方も多いと思います。まだ、そういったものを使ったことのない方もいらっしゃると思いますが、使ってみるととても便利で、マルチプロセッサシステムの開発効率を上げてくれるものであることを実感されることと思います。
プラグイン機構
プラグイン機構は、TECSの重要なアイデアの1つで、シンプルな方法で非常に多くのことを可能にします。現時点では、throughプラグインと呼ぶ、コンポーネント間にコンポーネントを挿入するプラグインを用意しています。throughプラグインで実現されているものとして、トレースプラグインと呼ぶコンポーネント間の呼出しを表示するコンポーネントを挿入するものがあります。CDLに1行書き加えるだけで、挿入させることができます。これを使用することで、試験がしやすくなります。また、TECSでは分散フレームワークもthroughプラグインにより実現されます。
throughプラグインは、非常に多くの可能性を持っており、応用はアイデア次第です。WGメンバがIPAの未踏ソフトウェア事業に採択されたものとして、セキュリティコンポーネントをコンポーネント間に挿入し、正当な呼出しが行われているかチェックする機構を客観的に証明しやすい形で埋め込む手段が考案されています。
複合コンポーネント
複合コンポーネントは、いくつかのコンポーネントを組み合わせて、新しいコンポーネントを作り上げるものです。コンポーネント図を簡潔にし、システムの見通しをよいものにします。分散フレームワークにおいては、マーシャラ、チャンネル、アンマーシャラの各コンポーネントをRPCチャンネルコンポーネントとしてシンプルに表現できます。
以上、TECSが種々の問題を解決しようとしていることについて説明しました。しかし、すべてのアイデアを書きつくせてはいません。次回以降、紹介できればと思います。
まとめ
今回のまとめとして、TECSの重要な目的について記します。
- コンポーネント図(組上げ記述)によって、複雑化するシステムの見通しをよくする
- インターフェイス記述を定式化して部品の標準化を行いやすくし、より部品流通を活発化させる
- 組込みシステムに適した分散フレームワークを提供し、マルチプロセッサシステムの開発効率を良くする
今回は、TECSの能書きでしたので少し退屈だったかもしれません。次回は、少し具体性を増して、コンポーネントの構成要素とコンポーネント図について説明します。
