ロバストネス (コンピュータ)
堅牢なプログラミングは、予期しない終了と予期しないアクションの処理に焦点を当てたプログラミングのスタイルである。 正確で明確なエラーメッセージを表示することにより、これらの終了とアクションを適切に処理するためのコードが必要である。これらのエラーメッセージにより、ユーザーはプログラムをより簡単にデバッグできる。
プログラムとソフトウェアは非常に特定のタスクを扱うツールであるため、一般化されておらず、柔軟性がない。 一方、インターネットや生物学的なシステムは環境に適応する。生物学的システムは冗長性で環境に適応している。 人間の多くの臓器は腎臓のように冗長である。人間は腎臓がひとつあれば生きていけるが、腎臓が2つあれば片方が機能しなくなっても生きていける。これと同じ原則をソフトウェアに適用できるが、いくつかの課題がある。冗長性の原則を計算機科学に適用する場合、やみくもにコードを追加することは推奨されない。盲目的にコードを追加すると、エラーが増え、システムが複雑になり、理解しにくくなるからだ。 これにより、機能が壊れた場合でも、手動または自動のソフトウェアダイバーシティを使用して、同じ機能を提供する別のコードで置き換えることができる。そのためには、新しいコードは、障害点に対応する方法とタイミングを知っている必要がある。 これは、システムにロジックの追加が必要であることを意味する。ただし、システムはロジックやコンポーネントを追加し、サイズが大きくなると、より複雑になる。したがって、より冗長なシステムを作成する場合、システムもより複雑になり、開発者は冗長性と複雑さのバランスを検討する必要がある。
現在、計算機科学の実践は、堅牢なシステムの構築に重点を置いていない。むしろ、スケーラビリティと効率に重点を置く傾向がある。今日、堅牢性に重点が置かれていない主な理由の1つは、一般的な方法で行うのが難しいためである。