フールプルーフ
ソフトウェア工学およびコンピュータプログラミングの分野では、間違ったソフトウェアの使い方をしても、危険な動作や間違った動作、意図しない動作をしないようにするための「防御的プログラミング」という技法がある。不正な入力データが来るかもしれないことを想定してプログラムを記述することで、不測のバグ(不具合)やセキュリティホール(脆弱性)が発生することを防止する。これはフールプルーフと同様の考え方である。
防御的プログラミングは、オペレーティングシステムやデバイスドライバ、ライブラリやアプリケーションソフトウェアなど、様々な層で適用される可能性があるが、プログラムに含まれるすべてのサブルーチンにおいて防御的プログラミングを完全に適用しようとすると膨大な作業工数がかかることになるし、またプログラムの安全性と実行速度はトレードオフの関係になる。そのため、サブルーチンの呼び出し元あるいは呼び出し先でのパラメータチェックなど、どの層が安全性について責任を持つべきか、ということに注目した「契約プログラミング」(契約による設計)といった技法も同時に用いられる。プログラミング言語の仕様として自動化されたチェック機構を設けることで安全性を担保することもある。