新人技術者のためのロジカル・シンキング入門(1) ―― いかにしてバグの原因を突き止めるか

冴木元

tag: 組み込み

技術解説 2007年12月17日

【1】現象を再現させる

 パソコンのような汎用的なコンピュータを用いずに,独自のハードウェア(例えば携帯電話や家電製品)に搭載するためのソフトウェアを「組み込みソフトウェア」と呼びます.最近では組み込みソフトウェアを搭載した製品としていろいろなものが開発されていて,ヒット商品も多々あります.身の回りのありとあらゆるところに組み込みソフトウェアを用いた製品が存在する現象を指して,「ユビキタス(遍在する,という意味)」などと呼ぶこともあります.

 最近の組み込みソフトウェアの特徴は,昔と比べて格段に機能が複雑になり,規模が増大していることでしょう.携帯電話などはあの小ささで数十Mステップにも及ぶソフトウェアを使っている製品もあるくらいです.この規模のソフトウェアを安定して動かそうとすると,20年ほど前ならまちがいなく大型コンピュータが必要だったはずです.

 では,このような巨大な組み込みシステムで問題が発生した場合,どのようにして問題の切り分けを行えばよいのでしょうか? ここでは,ハードウェアやシステムに関する具体的な知識はさておき,問題の切り分けの考えかたそのものを検討してみたいと思います(図1)

zu01_01.gif
図1 システムをデバッグするには
結合された組み込みシステムをデバッグするための枠組みを示す.巨大システムのデバッグには,無視してはならない一定の手順がある.バグの現象が深刻なときこそ,秩序だった切り分けが必要不可欠となる.個々の内容は後で詳しく述べる.

● まずはシステム全体での「現象の再現」がポイント

 バグ報告が上がってきたとき,開発者はまず何を真っ先に行うべきでしょうか? 筆者なら,何をおいてもまず現象の再現を試みます.この段階では単体レベルでの再現,すなわち認証モジュールがモジュールとしてハングアップするかどうかをいきなり試すのではなく,システム全体としての現象を再現させます.

 システム全体としての現象の再現は,かならずしも製品を用いて行われるとはかぎりません.ハードウェア・レベルでデバッグしやすいように,製品とは別に評価用ボードを用意する場合も多いでしょうから,そこでの再現も含まれます.

 このときたいせつなのは,再現条件をよく吟味せずに「問題が起こるはずはない」などといって,自分の担当部分に問題がないことを証明しようとしないことです(図2).チームによる開発では技術者どうしの連携が重要です.一つの機能ブロックの担当者が訳のわからないことを言って問題の切り分けに協力しなければ,調和が乱れてしまいます.これは単なるコミュニケーションだけの問題ではありません.この後で詳しく述べますが,現象の再現を怠ってみずからの無罪を証明しようとするアプローチでは,根本原因の特定が遅れ,技術的な観点から見ても問題が出てくるのです.

zu02_01.gif
図2 バグ・レポートを受け取ったら
バグ・レポートを受け取ったら,まずそのバグを再現させること.現象の再現も試みずにゴネるのは問題解決を遅らせるだけ.深刻なバグほど「そんなはずはない」という気持ちが先に立ってしまうものだが,まず再現させて切り分けを進めないと,ほんとうは自分に非がなくても周りが納得してくれない.

 巨大な組み込みシステムでは,全体から部分へスムーズに移行することが問題の切り分けのポイントになります.上述したように,すべての切り分けに先立つものとして現象の再現が重要となります.

 組み込みシステムの中には,重さ数t(トン)もある交換機のように簡単に持ち運びできないものもあるため,この議論がどのような場合でも簡単に実行に移せるわけではありません.しかし,評価ボードを使う場合も含めて,開発の責任者はできるかぎり製品の実環境を入手することに努めるべきだと筆者は考えます.顧客から貸与してもらうとか,あるいは一定期間ほかの開発チームといっしょにテストを行っている工場に集まるとか,いろいろな方法があります.とくにシステムが巨大な場合,エラーの再現を自分の目で確かめられるかどうかがデバッグの効率を大きく左右します.

 なお,現象を再現するうえではハードウェアやソフトウェアの版数(バージョン)の組み合わせなども重要になります.また,組み込みシステムの場合,個体不良もたまに起こりうるので,同一の事象がほかの装置でも起こるかどうかということに注意を払わなければなりません.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日