実際のシステムに「数学的帰納法」は使えない

皆さん「数学的帰納法」という証明方法をご存じですか? Wikipediaによると以下のような内容です。
1. P(1) が成り立つ事を示す
2. 任意の自然数 k に対して、「P(k) ⇒ P(k + 1)」が成り立つ事を示す
3. 1と2の議論から任意の自然数 n について P(n) が成り立つ事を結論づける

システム業界で経験の少ない人は、どうもこの考え方をシステムに応用してしまう人がいます。
すなわち・・・
1. テストデータが1件で上手く動いた
2. テストデータが2件でも上手く動いた
3. 1と2が上手く動いたんだから、テストデータが100万件でも上手く動くはず
といった発想ですね。

システム屋をある程度経験した人であれば、上記考え方が実態に合わないこと理解していると思います。
 - 利用ユーザーが1万件を超えたあたりから急激にレスポンスが悪くなるシステム
 - テストデータが10万件を超えるとダウンするシステム
など、帰納法的な考え方では「ありえない」という現象が日常的に発生します。

このギャップは、数学などの机上の論法では、論理を進める上で物理的な制限を考えないということに起因しています。またシステム屋になる前は、実際日常的に使用するシステムにおいて物理的な制約を感じるのはハードディスクぐらいで、CPUやメモリなど処理能力の制限を実感するシーンはほとんどないので「ナンカコンピュータって無限に素早くいろいろやってくれるもの」と思ってしまっても仕方ありませんよね。
しかし実際のシステムはメモリやCPUなど物理的な制限の中で動作するものであり、物理的な制限を意識しなければ大きなトラブルに繋がることも少なくありません。

なーんとなくなのですが、システム開発にこの物理的な制限を意識できるようになることが、できるシステム屋になるための第一歩な気がします。

コメント

タイトルとURLをコピーしました