手戻りコストの構造

組み込みソフトの不具合は、見つかる工程によって修正コストが大きく変わります。上流工程で気づけば、文書の修正のみで済みます。しかし量産直前や出荷後になると、部品の再手配や現地対応、回収にまで発展します。この構造を理解しないまま開発を進めると、テストへの投資判断を誤りかねません。本記事では、修正コストが後工程ほど増大するという定説を一次情報で確認し、組み込み特有のコスト構造と、手戻りを減らす打ち手を整理します。

手戻りコストとは何か

手戻りとは、前の工程に戻って設計や実装をやり直す作業を指します。手戻りコストとは、その修正に発生する費用と時間を合わせた総称です。

同じ章の「開発の全体像と手戻りを防ぐ設計」では、手戻りを防ぐための設計上の工夫を紹介しました。本記事は、その主張をコストの数値的な裏付けから補強する記事です。予算の判断を担う立場にとっても、上流投資の意味を理解する助けになります。

手戻りコストの構造を数値で示せれば、開発チームだけでなく、投資を判断する経営層とも共通の言葉で議論できます。テストや検証への投資を、単なる支出ではなく、将来の手戻りを防ぐ手段として説明しやすくなります。

IT分野の記事では「修正コストは上流工程の何倍にも膨らむ」という説がよく引用されます。しかし、この数値は出典があいまいなまま広まっている場合が少なくありません。根拠を確かめないまま数値だけが独り歩きすると、投資判断を誤る原因にもなります。次章では、出典を確認できる一次情報だけを根拠に、この定説を検証します。

組み込み機器の開発では、量産や出荷後の対応まで含めて手戻りコストを捉える必要があります。ソフトウェアの修正だけを見ていては、コスト構造の全体像を見誤ります。

修正コストが後工程ほど増大する根拠

ソフトウェア工学者のBarry Boehm氏は、1981年に著書「Software Engineering Economics」を発表しました。この著書で、TRW社など複数企業のプロジェクトデータを分析しています。

その結果、欠陥の修正コストは、要件定義の段階を1とすると、後工程になるほど数倍から数十倍に増加すると報告されています。設計や実装の段階から、開発テストや受け入れテスト、本番運用の段階へと進むにつれて、修正コストはさらに大きくなっていく傾向が示されています。

この分析は、修正コストが後工程になるほど、桁違いに増えていく傾向を示しています。工程が進むごとに、修正の対象が文書から実装、そして稼働中のシステムへと広がっていくためです。

なお「上流工程を1とすると実装は10倍、出荷後は100倍」といった三段階の比率や、工程ごとの細かな倍率を示す表も広く引用されます。しかし、この形の数値については一次資料の所在を確認できません。本記事では、一次資料で確認できる数値と、Boehm氏の研究が示す「後工程になるほど修正コストが大きくなる」という傾向のみを採用します。

Boehm氏がBasili氏と2001年に発表した共著論文には、出荷後の欠陥修正には要求・設計段階の100倍のコストがかかる場合が多い、と明記されています。同時に、小規模で重要度の低いシステムでは5倍程度にとどまることや、優れたアーキテクチャ設計が増大の程度を抑えることも示されています。増大の傾きは条件によって変わるものの、後工程ほど修正コストが増えるという方向性は一貫しています。

米国のNIST(米国立標準技術研究所)は、2002年にソフトウェアテストに関する報告書を公表しました。同報告書によれば、コーディング段階で作り込まれた欠陥の多くが、その工程では発見されず下流に持ち越されています。同報告書は、テスト基盤の不備による米国内の経済損失を、年間222億〜595億ドルと推計しています。

工程別に見る手戻りコストの増大構造

Boehm氏の分析を踏まえると、手戻りコストが増える理由は工程ごとに異なります。組み込み開発の工程に当てはめて整理します。

  • 要求・設計段階:不具合が仕様検討やレビューの時点で見つかれば、文書の修正のみで完結します。実装が始まる前なので、影響範囲も限定的です。
  • 実装段階:コードの修正に加え、該当機能の再テストが必要になります。修正した箇所が、他の機能に影響していないかの確認も欠かせません。
  • システムテスト段階:修正の影響範囲を洗い出す再テストが加わり、スケジュールの遅延につながります(「V字モデルで学ぶテスト工程と品質保証」参照)。関係者間の調整にも時間を要します。
  • 量産直前:設計変更が部品の再手配や生産準備の見直しに波及します。組み込み製品では、ソフトの不具合であっても、原因確認のために試作基板を作り直す事態に至る場合があります。
  • 出荷後:回収、交換、現地対応が発生し、企業の信用にも影響が及びます。対応の規模によっては、事業計画そのものを見直す必要も生じます。

Boehm氏が示した倍率の伸びは、この工程区分にほぼ対応しています。後工程に進むほど、修正の対象と影響範囲が広がっていく構造が、コストの増大に直結します。

組み込みソフト特有のコスト構造

組み込みソフトウェアは、汎用ソフトと異なり、ハードウェアと一体で動作します(「組み込みソフトと汎用ソフトの違い」参照)。この違いが、手戻りコストの構造にも影響します。

ソフト側の不具合であっても、原因の切り分けや再現確認のために、試作基板を再製作しなければならない場合があります。基板は発注から納品まで数週間を要することが多く、その間は開発全体の進行が止まります。ソフトのみの修正であれば数日で済む作業が、基板の再製作を伴うだけで工程全体を圧迫します。

また、コストや通信環境の制約から、出荷後にファームウェアを更新できない製品も存在します。この場合、量産後に見つかった不具合は、設計変更ではなく回収や現地対応でしか解決できません。対象となる台数が多いほど、回収や交換にかかる費用は積み上がります。

市場で発生した不具合は、発生条件の特定が難しいという課題もあります。回収した実機だけでは、温度や振動、電源ノイズといった現場特有の条件を再現できません。そのため、原因究明そのものに時間とコストがかかります。原因が分からないまま対策を打てば、同じ不具合を再発させるおそれも残ります。

汎用ソフトであれば、修正したコードを配信するだけで済む場面でも、組み込み製品では試作基板の再製作や現地対応が加わります。ハードウェアとソフトウェアが一体になっているという特性こそが、組み込み特有の手戻りコストを押し上げる要因です。

テストを増やすとコストは増えるのか

「テストを増やせば開発コストが増える」という指摘には、一部正しい面があります。しかし、これは評価コストと失敗コストのトレードオフを見落とした見方です。

品質管理の分野では、品質コストを予防コスト・評価コスト・内部失敗コスト・外部失敗コストの4つに分類します。この分類はPAF法と呼ばれ、品質コストの整理に広く使われています。

予防コストはレビューやテスト設計など、不具合を未然に防ぐ活動にかかる費用です。評価コストは、検査やテストの実施そのものにかかる費用を指します。どちらも、不具合が表面化する前に投じる費用という共通点があります。

内部失敗コストは出荷前に見つかった不具合の手直し費用です。外部失敗コストは、市場での不具合対応やリコールにかかる費用を指します(「開発に求められる品質と信頼性」参照)。

評価コストを増やせば、目先の開発コストは確かに増えます。しかし後工程や市場で見つかる不具合が減れば、内部失敗コストと外部失敗コストは小さくなります。テスト費用は、単にコストを増やす支出ではなく、より大きな失敗コストを防ぐ投資として捉える必要があります。

予防コストと評価コストを増やしすぎれば、その分の支出は当然増えます。しかし失敗コストとの合計で見れば、総コストが最小になる投資の水準が存在します。この考え方は、品質コストの実務でよく使われています。予算を検討する際にも、この4分類を意識すると議論が整理しやすくなります。

手戻りを減らす上流からの打ち手

ここまでの内容を踏まえ、上流工程から取り組める打ち手を整理します。

  • 要求の検証可能化:要求仕様を、後で満たしているか確認できる具体的な条件として記述します。曖昧な要求は、実装段階での解釈違いを生む原因になります。
  • レビューの徹底:設計書やコードのレビューは、文書修正のみで済む段階での発見を増やします(「テスト設計レビューの基礎知識」参照)。
  • テスト設計の前倒し:システムテストで使う観点を、実装より前の設計段階から洗い出しておきます。テスト設計を通じて、仕様の曖昧さに気づける効果もあります。
  • 早期の実機相当検証:実際の基板が完成する前から、ソフトウェアの動作を確認できる検証環境を用意します。実機を待たずに動的な検証を始められれば、実装段階の不具合を、その段階のうちに発見できます。
  • 自動テストの活用:繰り返し実行するテストを自動化しておくと、後工程での再テスト実施による負荷を抑えられます(「自動テストのメリットと役割分担」参照)。

こうした打ち手に共通するのは、実機の完成を待たずに検証を始められる環境を整えることです。とりわけ早期の実機相当検証は、後工程で見つかっていた不具合を、より手戻りコストの小さい実装段階のうちに発見できる点で効果が大きい打ち手です(「シフトレフトとは」参照)。

まとめ

手戻りコストは、後工程になるほど増大します。Boehm氏の分析やNISTの報告は、この定説を裏付ける一次情報です。組み込み製品では、基板の作り直しや出荷後の回収対応が加わり、コストはさらに膨らみます。評価コストへの投資は、失敗コストを防ぐ手段でもあります。上流での検証可能化とレビュー、早期の実機相当検証が、手戻りを減らす鍵になります。

組み込みソフトの世界 トップへ戻る