規制市場においてコードの品質が重要な理由
自動車、航空機、医療機器、および産業用制御システムに搭載されるソフトウェアは、欠陥が生じると直接的な物理的影響を及ぼす環境下で動作します。これらの業界の規制当局は、その現実に対応するため、以下の必須の検証要件を定めています。自動車分野ではISO 26262、航空宇宙分野ではDO-178C、医療機器分野ではIEC 62304、産業用システム分野ではIEC 61508です。準拠を証明する文書がなければ、製品は出荷されません。
安全が極めて重要な産業における課題
自動車
現代の自動車には、数百もの電子制御ユニットにわたり、1億行を超えるソフトウェアコードが含まれています。ブレーキシステム、ステアリング、エアバッグのデプロイメントなど、安全に関連するソフトウェアに欠陥があると、直接的な物理的影響が生じる可能性があります。ISO 26262は、道路車両の電気/電子システムの機能安全に関するリスクベースの枠組みを定義しており、開発のあらゆる段階において体系的な検証を義務付けています。
航空宇宙
航空機搭載ソフトウェアは、認証機関の承認を受ける前に、DO-178Cで定義された厳格な要件を満たさなければなりません。この標準では、ソフトウェアの保証レベルをD(軽微)からA(壊滅的な故障結果)まで割り当てており、レベルが高くなるにつれて検証要件はますます厳格になります。レベルAのソフトウェアについては、MC/DCによるカバレッジが求められます。
医療デバイス
IEC 62304は、医療機器のソフトウェアライフサイクルを規定しており、患者の安全に影響を及ぼす可能性のあるあらゆるソフトウェアコンポーネントに対して、体系的な検証活動を要件としています。ペースメーカー、輸液ポンプ、あるいは画像診断システムにおけるソフトウェアの故障がもたらす結果は、明白です。
産業用オートメーション
IEC 61508は、産業用途におけるプログラマブルエレクトロニクスシステムの機能安全に関する基礎標準です。この標準は、工場制御システムや化学プラントのプロセス自動化など、幅広い分野に適用されます。また、多くの業界固有の標準が、この標準に基づいて策定されています。
コード品質の低さがもたらすコスト
安全面での影響にとどまらず、ソフトウェアの品質の低さは、多大な経済的コストをもたらします。
- システム統合の段階で発見された不具合の修正費用は、単体テストの段階で発見された不具合の修正費用に比べて10倍から100倍もかかります
- 規制対象業界における実稼働時の故障は、リコール、規制当局による罰則、および訴訟を招く可能性があります
- 監査の不合格や認証の不承認は、製品の発売を遅らせ、お客様との関係を損なうことになります
- 品質確保の手抜きによって蓄積された技術的負債は、将来の開発を遅らせ、リスクを高めます
「品質」が実際に何を意味するのか
規制対象業界のソフトウェアチームにとって、品質とは、文書化され、追跡可能な証拠を用いて、ソフトウェアが正しく開発され、徹底的にテストされ、要件に対して検証されたことを実証できる能力によって定義されます。
つまり、次のようなことが可能なプロセスやツールを整えるということです:
- 欠陥が開発ライフサイクル全体に波及する前に、早期に検出すること
- 適用される標準で要件となるレベルまでコードカバレッジを測定し、報告すること
- すべてのテスト結果を特定の要件に紐付けること
- 認証機関の要件を満たす、監査対応可能なレポートを生成すること