2011/1/24問題2.12(問題タイトル:オブジェクト指向設計と試験性)オブジェクト指向設計についての問題(中級レベル)です。重要度:★★★★★(非常に重要)難易度:★★★☆☆(普通)問題:オブジェクト指向設計を行う上で重要な点として正しいものを全て選択せよ。a.上位クラス(例:業務処理クラス)にバグはない前提で下位クラス(例:共通クラス)を設計、コーディングする。下位クラスでのメソッド内での引数チェックは無駄であり、一般的には行う必要はない。b.極力、クラス間の依存や誘導可能性が循環しないように設計する。c.何でも行ってくれるクラスがあれば使う側が便利であるから、そういうクラスを設計する。d.テスト工程(単体テスト、結合テスト・・・)にて、全てのテストを行う(全パターンテストする)のは絶対に不可能であるので、品質を作りこんで設計する。e.たとえ、禁止されている操作やシステム上限を超える操作が取扱説明書にて明示的に書かれていたとしてもそれを行おうしていないかチェックする。問題文終わりこのページのトップへ注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。0129)に定義されている品質のうち、保守性をあげることで、ソフトウェアの開発や保守にかかるコストを減らすためです。その保守性の中に「試験性」というものがあり、それを向上させるために正しく設計を行っているかを問う問題です。1つ1つ解説していきますa.誤り。メソッド内での引数チェックは必要です。上位クラスにバグがなければ、確かに無駄のような気がするが・・・。いやいや、バグがないってあり得ないです。どんなにテストをしてもバグがなくなったことを証明することはできません。バグはどんなにテストしてもあるに決まっているのだから、その前提で設計しなきゃダメですね。ちなみに、単体〜結合テストまではかなりバグが残っていることが多いのですが、このときにメソッドの引数チェックのあり・なしでバグの見つけやすさ・調査のしやすさ(すなわち、必要な期間や工数)が大幅に変わってきます。