WRブログ

【事例】ソフトウェア欠陥によって企業が損失を被った事例1

ソフトウェアの開発において、テストがなぜ必要なのか。
逆に、テストが不十分、もしくはリリース後に欠陥が見つかった場合、どのようなことになるのでしょうか。
ここでは、実際にあった事例をもとに、ソフトウェアが原因で起こった事件や事故と、その損害や損失についてご紹介します。

■事例(1):某銀行で起こった大規模システム障害
まず、ご紹介するのは、某銀行で実際に起こった大規模なシステム障害についてです。
事件の発端は、振込みシステムから起きました。銀行側は「不手際があった」とし、これが勘定系システムにまで影響を及ぼし、最大で116万件の振込みが未処理になりました。

この障害の直接の原因は、人為的ミスによるものでした。
しかし被害がここまで拡大してしまった本当の原因は、振込みシステムの作りにあったのではないかと言われています。

というのも、この障害は、あらかじめ設定されていた上限件数を超える大量の振込みが集中したことが発端となっています。
この銀行では、口座開設時に1日に受け付けられる振込み件数の上限を設定していました。
普通口座は通常9999件に設定されていましたが、大量の振込みが予想される口座には、
この上限をもっと上げて設定されているそうですが、障害があった口座ではこれがなされていませんでした。

この障害の復旧作業は、単に振込みの上限回数を設定しなおすだけでは済みません。
これまでに処理されなかったジョブの整合性を保ちながら、再実行しなければならない。
この間にも、処理できないジョブは増え続け、最大で8296億円が未処理の状態が続きました。

このように、銀行のシステムなどに問題があると、多くの人とお金に影響が出てしまいます。
今回の障害は、人為的ミスによるものと、システムの不完全さ、そしてそれらをまとめるITガバナンスの欠如が原因といえます。

■事例(2):世界的自動車メーカーで起きた制御系プログラムの不具合
次にご紹介するのは、世界的な自動車メーカーの人気車種で実際にあった制御系プログラムの不具合です。

この不具合は、近年急激に普及したハイブリッド車に伴い、人気車種のハイブリッド化によって起こりました。

image_01301

原因はハイブリッドカー独自のもので、燃料ポンプを制御するコントロールユニットのプログラムに欠陥があったため、
電気モーターの走行からガソリンエンジンの走行に切り替わる際、燃料ポンプが作動しないことがありました。
すると、ガソリンエンジンが始動せず、走行不能に至るおそれがありました。
その改善措置としては、全車両、燃料ポンプコントロールユニットのプログラムを書き換えるということになりました。
不具合があった車種は2種類で、対象となるのは全部で5000台以上にのぼります。

このようなリコールがあった場合、車両の回収にかかる費用と、その欠陥の修正にかかる費用、その全てを負担しなければなりません。
また、このときは大きな事故などにはつながっていませんが、もし人身事故などが起きていた場合は、その賠償金なども発生するおそれがあります。

■まとめ
●人為的ミスにより、潜在的なシステムの問題が浮き彫りになる
●欠陥を入れ込んでしまった製品のリリース

このように、たくさんの人が使うサービスや製品を扱う場合、その改修にかかる費用も大きくなる傾向があります。
またそれだけ社会の信用を失う可能性も大きいということです。
今回ご紹介した障害や不具合が、必ずしもテストによって防げていたわけではありませんが、その可能性を限りなく小さく抑えるために、テストはとても重要だということです。
関連記事
システム開発における品質コストとは?