プログラマーが一番頭悩ませるのがエラー処理なのよ
— 多岐川ノリ@ぼっちのバンドリーマー (@n2_taki) March 11, 2020
プログラムというのは、目的通りに動いていればいい、という訳ではありません。
目的通りに動かすのは「当たり前」で、それ以上に頭を悩ませるのがエラー処理なんです。
具体的には、なんらかの要因で正しい処理が行えなくなった場合でも、正しい状態を保つ、ということをプログラミングしなければなりません。
前者が「正常系」と呼ぶのに対し、後者は「準正常系」と呼んでいました。
ちなみに、それ以外の深刻な問題が発生したときは「異常系」と呼んで、オペレーターに異常を知らせる処理を実行します。主にハードウェアの故障などがこれに該当します。
準正常系は、入力データの異常や割り込み処理などが該当します。
ソフトウェア設計者は、こういった準正常系の処理を全て網羅して、あらかじめエラーを検出し、本来の正常な動作を保つように設計しなければなりません。
設計者が頭を悩ませるのが、「準正常系に漏れが無いよね?」ということなんです。
我々がニュースなどで耳にする「ソフトウェアの異常」というのは、大抵、準正常系の考慮が漏れていたことに起因します。
そして、本番でこういうことが起きないように、出荷前に様々なテストデータを用意して、徹底的にいじめます。
特に組み込み系のファームウェアは、簡単にアップデートできないので、出荷から当分の間はヒヤヒヤします。
トラブルがあったら現場大炎上なので。
では、どうすれば良いかというと、これも難しい話で、経験を積み重ねるしか無いんですよ。
ベテラン技術者にレビューして貰うのも一つの手です。
まぁ、ソフトウェア製品の開発にはこんな事があるんですよ、ということで理解して貰えれば。