ハードウェアにも起きる“自由度”の問題

 組み込みシステムを開発している組織でいつも問題になるのは、“ハードの方はほとんどバグを出さないのに、どうしてソフトは何時までもあんなにバグを出すのか”ということです。派生モデルの開発などでは、新規性が少ない場合は、ハードのバグは1件も発生しないことがあります。それに対してソフトの方は相変わらず50件100件とバグを出してしまいます。ソフトウェアのアーキテクチャが上手く構成されている場合でも、やはり5〜10件のバグを出します。

 ◎◎ 基礎的知識の差

 たしかにハードの人たちは、その業務に就くために電気や電子などの最低限必要な基礎的知識は学習しています。また、歴史的な背景もあってハードウェア部分を完成させていくための工程も比較的安定していますし、工程によっては外部の業者が入ったりするため、工程そのものが「標準化」された形になっています。勿論、最近はツールの発達等で、外部に出さないで工程を進めることが出来るようになりましたが、それでも工程自体は大きくは変えていません。今のところツール自体も、彼らにとってそれほど「壁」の高いものではないようです。

 これに対してソフトウェアでは、分析や設計に必要な基礎知識を習得している人は僅かですし、その知識自体が安定せず、10年ぐらいで大きく変化しています。新しい人の中には、情報処理学科などを専攻してきている人も増えていますが、それでも実際に役に立つようなレベルで分析・設計手法を身に付けるまでには至っていません。ましてや古い人たちで、そのような基礎知識を事前に身に付けている人は少ないと思われます。多くの人は実際に仕事に就いてから、職場の先輩に教えられたり、適当な文献を手に入れて、それを見ながら身に付けて行くというケースです。そのため、「仕事の仕方」や「学習の術」を持たないと、業務に追われて新しい技術や技法を身に付けることが出来なくなります。

 ◎◎ 自由度の差

 この問題を別の観点から見れば、設計に於ける「自由度」の差も、バグ発生の差に大きく影響しています。これまでのハードの世界は、ボードのスペースによって使用できる部品の数が制限されたり、使用する部品そのものも制限されます。一つの部品を決めれば、それに連動するかのように幾つかの部品が決まってきたり、クロックの制限からゲートの段数も制限されます。特に最近では動作クロックが高速になってきたため、ゲートの段数の制限は非常に厳しいものとなっています。これらの設計上の制限は、結果として“自由度”を制限することになります。つまり、問題をクリアできなければ設計できない事態に陥り、逆に設計できたときには、結果的にバグの侵入を防ぐ働きをします。

 これに対してソフトウェアの世界は殆ど自由そのものです。もちろん「メモリー・スペース」の制限は受けますが、半導体技術の進歩によって、今日では殆ど無制限といっても過言ではありません。モジュールの呼びだし構造の段数(ゲートの段数に相当)も、スタック・サイズによって制限は受けますが、メモリーをちょっと確保すればその制限も殆どなくなります。もちろん、いまのところハードの世界のような「部品」と呼べるものはありません。オブジェクト指向の普及で「部品」というものが普及する可能性はありますが、それまでは全部、“自分(たち)”で作ることになります。このような「自由」の中で数100K行ものプログラムを自作するのですから、その実現方法には色んな組み合わせが出てしまいます。これがいつまでもバグから縁が切れない大きな原因です。そして少しでも、このようなバグの発生を減らすために設計技法やテスト技法が考えられているのです。

 ◎◎ ハードが行き詰まる

 ところが、これまではこのような問題はソフトの世界の話しでしたが、これからはハードの世界にも起きてきます。例えば100万ゲートのASICを開発しようとすれば、そこはまるで“ソフトの世界”です。既に50万ゲートもの開発を行っている組織もあるでしょうが、まだまだ多くの開発組織では数万ゲートから10万ゲートで、今のところそれほど大きな問題にはなっていないかも知れません。しかしながら、この分野は、今後急速に扱う集積度が拡大し、開発組織によっては数年以内に数100万ゲートに達することが予想されます。

 1人で設計できる範囲にあるうちは、あまり問題は発生しませんが、ゲート数が大きくなってくれば当然1人では設計できませんので、今日のソフトの世界で起きている問題にそのまま直面します。もちろん、ソフトの世界と違って、少しはライブラリの形で「部品的なもの」は提供されると思われますが、それでも今までと違って設計の自由度は格段に上がってきます。したがって、適切な設計技術が伴わないと、先ずゲートの浪費が激しくなることが予想されます。100万ゲートで収まるものが、もう1ランク上の集積度が要求されることになれば、コストの面で明らかに不利になってしまうでしょうし、その前に設計段階で侵入した「バグ」に悩まされ、開発期間を大きく越えてしまう危険すらあります。このように、適切に対処されなければ、今のソフトの世界で起きていることがそのままハードの世界に起きてしまうでしょう。

 対応策としては、ハードの人たちに設計技法を習得させるか、ソフトの設計技法を身に付けているソフトのエンジニアを引っ張ってきて、ハードの基礎的な学習をしてもらうかです。何れにしても、1年近い準備期間が必要になるでしょう。したがって、今から手を打ったとしても、その人たちが活躍するのは1年後です。そのころには、企業によっては100万ゲートの段階に入っているものと思われます。もし、この対応策が1年遅れたら、その企業の競争力に大きな支障をきたす可能性があります。

 組み込みシステムの開発マネージャーは、「今日」に目を奪われることなく、「将来」を見据えた対応が望まれます。




「Index of Manager の為の講座」に戻る