この連載記事の目次へ

ソフトウエア・テストのカンファレンス「JaSST」の開催を主導するなど,ソフトウエア品質の分野で精力的な活動を続ける電気通信大学の西康晴氏に,現在の組み込みソフトウエア開発における問題点と解決策を解説してもらった。継続的に品質を高める体制を構築するための取り組みについて,プロジェクト・マネジメント,プロセス改善,テスト・レビューの3つの観点から概要を述べる。

この記事は,「日経エレクトロニクス」と「日経バイト」が刊行した別冊『組み込みソフトウエア2006---品質管理と開発技法の実践的改革A to Z』の掲載記事を抜粋したものです。別冊の詳細はこちら

 筆者は,数年前までソフトウエアの品質コンサルタントをしていた。現在でも企業との共同研究を通して,ソフトウエアの品質向上手法の開発などを手掛けている。特にここ3~4年は,組み込み分野の企業からの相談が非常に増えてきている。家電や車載機器,計測器,通信機器,航空宇宙など業種も多岐にわたっており,現在では筆者のところに相談に来る企業の6~7割が組み込み系という状態である。

 日ごろ,組み込みソフトウエア業界にどっぷり浸かって感じるのは,非常に大変なことが起きているということだ。機能要求が増大し,制御の方式も複雑化しているにもかかわらず,開発期間は逆に短くなっている。従来は,単にファームウエアを作っていればよかったものが,OSやミドルウエア,アプリケーション・ソフトウエアを階層化して考える必要が出てきた。ついこの間までリレーに毛の生えたようなものだったのに,気が付くと数百万行に上るソフトウエアを開発している。こうした変化が起きているにもかかわらず,数人でプロジェクトを進めていた旧来のスタイルそのままの開発体制で,もがいている組織もある。

わずか数年のうちに大規模化の波

 組み込みソフトウエアの最大の受難といえるのは,こうした大規模化・複雑化の波が,わずか数年のうちに起こったという点である。エンタープライズ系のソフトウエアにおいても大規模化の波は起きたが,その変化は組み込み系ほど急激ではなかった。エンタープライズ系のソフトウエアが,10~15年かけて少しずつ進んできた道を,現在の組み込み系のソフトウエアは,わずか数年の内に上らなくてはいけなくなっているのである。あまりにソフトウエア技術者が足りないため,組織によっては,アナログ回路を設計していた技術者にソフトウエア開発を担当させるようになったり,工場で生産管理を行っていた技術者をソフトウエアのQA部門に異動させることすらあるほどだ。

 こうした組み込みソフトウエアの問題を解決するために最初に行うべきことは,単体テストやレビューの実施など,本来ソフトウエアの品質確保のために欠かせない作業を省略せず確実に行うことである。コストが目標内に収まらない,納期が達成できそうにないからといって,こうした作業を省略してしまうと,手戻りの頻発を招き,結果として全体の作業量は増加する。これは,デス・スパイラルにほかならない。現場はデスマーチ化し,納期遅延や赤字プロジェクト,品質事故という結果に突き進むのだ。

手戻りの未然防止が品質向上の基本

図1 手戻りの未然防止が品質向上の基本
プロジェクト・マネジメントやプロセス改善,テスト・レビューといった基本的な活動に取り組み,工程の手戻りを防ぐことが,ソフトウエアの品質を向上させるための王道である。

 今回は,こうした組み込みソフトウエアの課題を解決し,継続的に品質を高めていける体制を構築するための基本的な取り組みについて,概要を述べる。地道な改善作業を積み重ねることで,開発組織の弱みを潰していけば,ソフトウエアの信頼性は向上し,結局はコストダウンにつながる。さらに,企業としての競争力の向上にもつながっていく。具体的には,(1)開発組織の円滑な連携を図るためのプロジェクト・マネジメント,(2)工程の改善を図るためのプロセス改善,(3)工程の改善のための不具合情報を提供するテストとレビュー,の3つの観点から解説する(図1)。

「モノづくり」以前の組み込みソフト

 各論に入る前に,組み込みソフトウエア開発を,ハードウエアのモノづくりと比較して考えてみよう。日本には,高い競争力を保っている「モノづくり」組織が多い。不良品の少ない生産工程や不具合の少ない設計工程など個々の工程が高い能力を備え,品質が良く低コストの製品を高い生産性で生み出している。しかし日本のモノづくりの強みは,個々の工程能力の高さだけではない。ハードウエアのモノづくりの詳細は,東京大学 モノづくり経営研究センター長および同大学院 経済学研究科 教授の藤本隆宏氏の著書に詳しく述べられている。

 ハードウエアにおけるモノづくりの特徴は,主に2つある。1つは,すり合わせ開発が得意という点だ。多くの相互調整作業を通して,個々の部品の組み合わせでは実現できない品質を作り込んでいく開発スタイルとも表現できる。

 例えばノート・パソコンの開発における省電力設計や熱設計はすり合わせ作業の1つであり,デスクトップ・パソコンのような組み合わせ開発にはあまり見られない。さらにその強みを生かして,ドメインの異なる複数の製品群も上手に融合させてしまう。携帯電話機とカメラなど,関係のない製品同士を融合する際に,1つの製品としてスムーズに動作するような使い心地を作り込んだり,性能を最適化する能力などに長けている。

工程間の密な連携が必要に

 もう1つは,複数の工程同士で密に連絡を取り合い,うまく連携させる能力が高い点である。いわば,複数の工程を融合する能力が非常に高い。その代表例が,コンカレント・エンジニアリングやフロント・ローディングである。製品設計と合わせて生産ラインの設計まで同時に行うことで,生産しやすい製品設計を行ったり,普通であれば生産を始めてみないと見つからないと思われているような不具合を,設計の段階で未然に防止したりする。

 これらは単に開発プロセスを変更したり,3次元CADを導入したりすれば実現するものではない。他の組織の意図やニーズをくみ取って,無駄なやり取りを減らしたり,押し付け合いをなくしたりすることが重要となる。工程の融合と言い換えてもよいだろう。下流工程から上流工程への知識のフィードバックによって,生産ラインで問題が起きないよう品質を作り込むわけである。

(第2回につづく)