- 締切済み
バグやセキュリティホールの無いプログラムの作成は可能でしょうか?
会社からプログラムの作成を頼まれているのですが、会社の友人が言うには『バグやセキュリティホールがあってはいけない』と言われました。私は『無理』と言っていますが、友人も『バグや(略』と平行線です。 私個人としてはプログラムの難易度にかかわらずバグやらセキュリティホールの無いプログラムを作成するのは不可能だと思います。限りなくバグの無いプログラムを作るのは可能だと思いますが、無限ループが無いだとか動作不良が無い程度のレベルが限界で、一挙一動の動作テストだったり会社員の(暇な)時間ではなかなか難しいのではないかと言うのが正直なところです。長期間暇な時間が取れたり、ゲームのように多人数でデバックすれば可能かもしれませんが…プログラムに詳しい方の意見、また友人を納得させる案を教えていただければと思います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 0x131cc6e
- ベストアンサー率36% (42/115)
プログラムの規模によります。 単純な仕様ならバグの無いプログラムは作れます。 理論的な事を言えば、どんなプログラムでも細かい単位に分割し、それぞれの要求仕様を正しく実装すればバグを無くす事は可能です。 しかし現実的にはバグの全くないプログラムを作るのは非常に困難です。 質問者さんが言う様にテスト体制の問題だったり、時間や金額といった費用、実装者/テスターの人的資質、無茶な要求仕様など、その要因は様々です。 ですから我々は通常、仕様と成果レベルと合わせて、それが実現可能な諸条件を提示します。それを顧客が了解して始めて実装に入ります。 「バグやセキュリティホールがあってはいけない」のは当然ですが、現実問題として難しいので、条件を限定して、その中でなら可能ですがどうしますか?と問い、納得すればその条件下での動作のみを保証するわけです。 「ウソをついてはいけない」 子供でも知ってることですが、一生これを守るのはムリでしょう。 でも一週間に限定すればなんとか可能な気がしますよね? 出来ない理由を並べて拒否するのではなく、どうすれば出来るかを考え、お互いに妥協できるポイントを探るのが良いかと思います。 (これって何もソフトウェア開発に限った話じゃないですね…)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> 会社の友人が言うには『バグやセキュリティホールがあってはいけない』と言われました。私は『無理』と言っていますが > また友人を納得させる案を教えていただければと思います。 理想を言えばその通りです。 現実的には、『完璧な人間』が存在しない以上、バグやセキュリティーホールがない完璧なプログラムは作れません。 デバッグを繰り返すことでそのバグを極力減らすようには出来ますが、0にはなりません。 無限にデバッグを繰り返すと公開できなくなりますので、ある程度のところで公開する、と言うことになります。 「どの程度のところで公開するか」というのがソフトウェアの品質と言うことになると思いますが、 「考え方の違い」、たとえば、「『白でなければならない人と黒でなければならない人を同時に満足させなければならない』という条件」を満たせないことをバグと呼ばれることもあります。 (No.1さんの"2"の話と同じだと思います。 ちなみにこの条件、「灰色」は白でも黒でもありませんので、これでは条件を満たせません。)
- junkUser
- ベストアンサー率56% (218/384)
興味深い友人ですね。 自分は一度も失敗をしたことがない完璧超人なんですね。 1. OSをアップデートしたら動かなくなるものに関しては「バグ」扱いでしょうか? もしバグであるなら、OS側が勝手に仕様を変更するものまで未来予知して作成するのは不可能です。 バグではないのなら、どこまでがバグなのか定義する必要が出てきます。 まずはバグを定義してください。 2. アップデートしなかったら期待通り動き続けるはずですが、既知のセキュリティホールが増えます。 また、10年前ではセキュリティホールとして認知されていなかったものが現在ではセキュリティホール扱いになることもあります。 ex. IE のファイルアップロードでフルパスが送信される件 ex. Firewall が各PCに設定されていない件 これらまで防ぐことも未来予知になるため不可能です。 従って「バグやセキュリティホールがあってはいけない」という命題は矛盾します。 期限を区切ればある程度は可能でしょう。ただし、100%は不可能です。 それ以外のバグとセキュリティホールに関しては設計と技量とテストケース、スケジュールの範囲です。 # 指定した通りの使い方を強要し、それ以外の問題は「仕様通り」ということにしてしまえば「バグ」はないですね。