Fail safe(フェイルセーフ)を知っているか
スポンサードリンク
お疲れさまです。ゆとりのコアラです。
フェイルセーフを知っているのか、知らないのか、どうなんだ。
Fail safe(フェイルセーフ)とは?
装置・システムにおいて、誤操作・誤動作による障害が発生した場合、常に安全側に制御すること。 またはそうなるような設計手法で信頼性設計のひとつ。 これは装置やシステムは必ず故障するということを前提にしたものである。
システムについて学んできた方には、聞きなれた言葉ですよね。
たとえば自動車はエンジンが故障した場合、エンジンの回転を制御できないような故障ではなく、回転が停止するような故障であれば車自体が止まることになり安全である。このため、回転を止めるような故障モードに自動的に(自然に)落とし込むような設計思想がフェイルセーフとなる。飛行機の場合はエンジンが回転停止した場合、墜落ということになりフェイルセーフとはならない。しばらくは滑空し無事着陸できるような機体設計にする
これに近い言葉で、フールプルーフもあります。おバカちゃんを防ぐ?守る?みたいな挑戦的な響きです。
フールプルーフ設計では「人間は間違えるものである」「よく分かっていない人が取り扱うこともある」という前提に立ち、誤った使い方をしても利用者や周囲の人を危険に晒したり、機器が破損したり、致命的な事態や損害を生じさせないような構造に設計する。また、誤った使い方ができないような構造を工夫したり、危険な使い方をしようとすると機能が停止するような機構を組み込むこともある。
本当に常識になっているか?
さて、エンジニアにとって当たり前、常識、と言われているフールプルーフやフェイルセーフ設計ですが、本当にそのような設計をしているのでしょうか。
ひとの死に直結するような乗り物や管制システムの場合は、間違いなく考慮された設計になっているでしょう。しかし、流通系システムや金融システム(私の分野です)では、コストの面でそこまで考えられていないシステムは多いように思います。
証券所のシステムは一瞬の停止も許されないので、かなり厳密に設計されている印象もありますが、それ以外は・・・うーん。
想定外のデータが投入されたのでジョブが異常終了するとか、分散処理がうまくいかずサーバーが落ちるとかね。よくある話ではあるんですけど。異常終了するところまで想定通りなら良いんですが、大抵は出力成果物のリミット時間が決まっていたりして、止まっちゃいけないところでコケますよね。
画面から登録しちゃいけない日付が登録できたりとか。例えば、生年月日に2100年が入れられる。このぐらいは一般的には何の問題もないので、許容可能のように思われますが、例えば、販売促進キャンペーンの開始日付の登録画面で2100年を入力出来るとどうなるか。
この先、84年間はキャンペーンが始まりません。笑 しかもコストカット、及び、更新権限を強制的に限定させる目的で、内容の修正画面がフェージング(機能閉塞)されていたりする。
誰がこの脆弱性を許したのか
予算を握っているユーザーがこういった判断をするのはわかる、しかし、業務の運用を始めると誤登録を修正するために緊急作業が入ったりする。長期的には顧客にとっても、ベンダにとっても嬉しくない設計であったはずだが、お互いに運用に入ってからの財布なんて知らん、といったところだろうか。
システム開発はQCDで評価されるが、一般的にはトレードオフだ。全てをバランス良く立てられたプロジェクトなんてほとんどないんじゃなかろうか。そして、主観的な感想だが、Qが最も優先度が低くなっている気がする。
最低限動くこと、が品質の目標でいいのか?規模が大きければ人を集めればいいのか?と聞けば、誰しもNOときっぱり答えるが、行動はYESと言っている。
歩きスマホをしていて線路に落ちた子もいる。自業自得だとは思うが、電車のホームは明らかに危ないことは誰が見てもわかる。落ちないようには出来ていない。急いで落下防止の設備を整えているとも聞くが、やはり予算不足で実施出来ないところが多いのだそう。
金は命より重い。とはよく言ったものだなぁと思う、ブルーマンデーでした。
以上!