ObectSquare

[UMLとオブジェクト指向分析・設計が開発リスクを軽減する]


はじめに

 組み込みシステムとは家電製品や工業用機械,自動車などに組み込まれるコンピュータ制御システムのことを指します.これらは従来,機器の付属的な存在でしたが,最近では組み込み機器自体の高機能化やデジタル化が進み,製品に占めるその割合は徐々に高まってきています.
 これら組み込みシステムは他の分野のソフトウェアに比べて以下のような特徴があります.

・ハードウェアの制御が中心であり,割り込みやデバイスへのI/Oなど低レベルでの処理が多い.
・時間的制約が厳しく,処理時間が決められているものが多い.
・外部環境から発生する多くの事象に対応するために,複数の処理を並行して行わなければならない.
・プログラムのサイズやメモリなどのリソースが制限されている.

 組み込みシステムの世界ではこれらに対処するために,リアルタイムOS(以降,RTOSと呼びます)を使用し,並行性や実行効率を重視したソフトウェア開発が行われてきました.しかし最近ではそれらに加え,製品のライフサイクルの短縮化,ハードウェアの頻繁な変更,製品バリエーションの増加,などに迅速に対応できるだけの能力が求められるようになってきました.これらの要求に応えるためには,拡張や変更に強く,開発リスクを軽減できるようなソフトウェア開発手法が必要になります.また,GUIやネットワーク機能など従来にはなかったような機能が追加されることにより,今まであまり必要とされなかった分析作業の重要性も増してきています.

 一方,オブジェクト指向(OO)技術はソフトウェアの柔軟性,再利用性などを高める方法として,現時点で最も進んだアプローチのひとつといえます.しかし,組み込みシステムに対する実績はというと,実行効率やリソース制限などの問題から一部の大規模なシステムを除いてはその適用があまり進みませんでした.現在ではCPUの高速化,コンパイラやオブジェクト指向言語の急激な進歩,メモリなどリソースの低価格化などにより,それらの制限は徐々になくなりつつありますが,まだまだ組み込みシステムへの適用事例は少なく具体的な方法等も十分に提供されているとはいえない状況です.

 本稿ではそれらの事実を踏まえ,組み込みシステムをオブジェクト指向で開発するためのポイントについて考えていきます.特に今回は,組み込みシステム開発ではあまりなじみのない要求分析やアーキテクチャ設計,システム設計までの上流工程に焦点を当てます.小さなシステムではこれらの工程が欠けてもさほど問題になりませんが,システム規模が大きくなるにしたがってその重要性が増してきます.一般の入門書にはビジネス系システムを例題にした上流工程の作業内容などが載っていますがシステムの性質の違いから組み込みシステムへの適用はそう簡単ではありません.
 本稿では,組み込みシステムに代表的なエレベータシステムの例を使いながら,開発工程自体の説明と特に組み込みシステムで留意したい以下の内容を中心に考えていくことにします.

・ユースケースの見つけ方
・クラスの見つけ方
・アーキテクチャ設計
・オブジェクトとスレッドのマッピング方法
・ハードウェアとソフトウェアの切り分け

 なお,用語については以下の基準で使用しています.

・「スレッド」と「タスク」は同じ意味で使用しています.通常は「スレッド」で統一していますが,RTOS関連の話題に限り「タスク」を使用しています.
・「オブジェクト」という語はクラスのインスタンスという意味で使用しています.

 また,紙面の都合上,オブジェクト指向一般の知識や各開発フェーズの詳細な説明,UMLに関する説明などについては触れていません.これらについては他の書籍を参照するようにしてください.


© 1999 OGIS-RI Co., Ltd.
Index Next
Index Next