先日のコラム(クリック)では、経験に基づき導入事例見学の際の注意を書き、失敗事例①、②、③を紹介しました。今回は失敗事例④として、仕様ミスによるトラブルの例を紹介します。
《失敗事例その4・・・科学万博に於ける不具合》
名誉のために企業名は伏せますが、1985年つくば市で開かれた科学万博で大失敗したシステムがあります。
それは入場者数をカウントするシステムです。こんな単純なものがどうして?と思いますが、単純なミスで発生しました。オリンピックなどと同様、国の威信がかかっているので入念なデザインレビューをしたはずです。デザインレビューとは・・・
①システムに求められている機能を実現できる仕様になっているか
②機能の実現方法、手段に問題はないか
③テスト方法は問題を発見できるようになっているか
などにつき、関連する複数の部門からレビューする知識経験を持った技術者が集まり、様々な角度から抜け漏れはないか、より良い方法はないか、将来問題にならないかなどを検討するミーティング、それをデザインレビューと呼んでいます。
トラブルを起こし入場できなくなったのは、入場ゲートを通った来場者数をカウントする機能です。1985年なので今から31年前ですが、この様な単純な機能を実現するための機材(ハードウェア)はありました。まだ汎用機全盛時代でしたが、もちろん信頼性は高くダウンすることもありません。ではどうして?実は、来場者数を格納する変数の長さの定義を間違えてしまいました。
コンピュータで使う2進数の理解が必要ですが、簡単に説明します。8ビットで構成される1バイトの長さで勘定できるのは256までです。2バイトは16ビットですが、この長さで勘定できるのは65536です。来場者をカウントする変数の長さを1バイトで定義すると256人まで、2バイトでは65536人までとなります。4バイトにすれば当時の地球上の全員が来場しても問題ありません。
つくばでの科学万博は、184日間の期間中、総入場者数は2033万4727人といわれています。平均すると約11万人/日です。ここでピン!と来た方がいると思います。そうです、何と、このシステムを作ったSIベンダは、入場者数をカウントする変数を2バイトで定義していました。1985年年3月17日に開かれた万博、何も問題なく入場者を受け付けていましたが、5月の連休初日、突然ダウンしてしまいました。2バイトでカウントできる最大数65536人を超えてしまった結果です。それまでは最大数を超えない来場者数だったものが、連休ということで大勢押しかけ、65536人を超えてしまいました。
デザインレビューの際にカウントアップの機能(ロジック)に問題はないかをチェックしたものの、レビュー参加者の誰も最大来場者数のことに思いが及ばず、従ってカウントのための変数の長さも誰も気にしないで見逃されてしまったことによるトラブルです。3/17から連休初日まで問題なく動いていたので安心していたところに時限爆弾が仕掛けられていました。とかく機能中心に陥りがちなデザインレビューですが、基本中の基本を忘れるとこういう事態になるという教訓として紹介しました。
※次回は国会図書館の仕様ミスの事例を紹介する予定です。