作成日 2011/4/9
最終更新日 2011/4/17

問題2.14(問題タイトル:下位モジュールが不安定な場合)

オブジェクト指向設計についての問題(中級レベル)です。

問題タイトル:下位モジュールが不安定な場合
重要度:★★★★☆(やや重要)
難易度:★★★☆☆(普通)


1.問題
2.解答・解説
3.参考文献


1.問題

問題タイトル:下位モジュールが不安定な場合
重要度:★★★★☆(やや重要)
難易度:★★★☆☆(普通)

問題:プログラムの設計を行っていると、上位モジュールよりも下位モジュールが不安定(使用するアルゴリズムやパラメータ、ライブラリが1つ決められない)で、それに対処する必要が時としてある。この場合、インタフェースを規定し、下位モジュールはそのインタフェースに合うように作ることとなる。
この時のインタフェースの設計方針や注意事項などとして正しいものをすべて選択せよ。

 a.インタフェースを規定するのだから、下位モジュールが持つデータの洗い出しは行う必要がない。
 b.可能であれば、サンプルとして具体的な下位モジュールを作成し、インタフェースの漏れ(メソッドや引数の漏れなど)を確認した方が良い。
 c.インタフェースをバージョンアップする場合で、元のバージョンの仕様に問題がある(仕様バグがある)場合、すぐさま修正すべきである。

問題文終わり

このページのトップへ












注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。

2.解答・解説

解答:b
※部分点は存在しませんよー。1つでも余計なのを選択したり、間違えたら0点です。

解説:
 部品化、多態性、オブジェクト指向設計の基本を正しく理解して設計に活用しているかを問う問題です。
 1つ1つ解説していきます

 a.誤り。
 何度も言っているが、重要なのは処理ではなくデータです。(データ中心アプローチ)
 インタフェースを規定するということは処理(メソッド)の名前、引数、戻り値しか規定しないということですが、だからと言ってデータを考慮しなくていいことではありません。
 具体的な設計方針としては、
 必要なデータ(共通するもの、しないもの両方)の洗い出し⇒データ構造の作成(必要なデータが記載されたクラス図の作成)⇒(公開する)処理(メソッド)の設計
 という感じです。
 まあ、場合によってはデータが出てこない場合もあるかもしれないが・・・。
 
 b.正しい。
 インタフェースのメソッドの引数の型の変更、追加・削除などは厄介です。(上位モジュールに影響が出るため)
 それを最小限にするため、サンプルを実装するのは良いことです。
 また、この問題とは関係ありませんが、サンプルを作ると上位モジュールが実際にそれを使うことで、上位モジュールのプログラミング担当者が、下位モジュールをより理解できるというメリットもあります。
 ただし、その分工数がかかりますので、そこは注意してください。

 c.誤り。
 特に仕様バグの場合、すぐに修正できません。(※メモリリークなど仕様バグではない場合は即修正できる)
 これはなぜかというと、上位モジュールに影響が出るからです。バグであっても修正できないので、バグを仕様とするか、非推奨のメソッドにして代替メソッドを作成することが多いです。
 ※一般に、「オブジェクト指向設計をすると部品化ができ、工数の削減に寄与する」と言われていますが、このようなデメリット(というよりリスク)があるということも押さえましょう。
 そして、このようなことを減らす必要があるため、部品部分の設計・実装というのはスキルの高い人でないとできないと考えてます。



 問題に対する解説は以上ですが、この不安定な下位モジュールへ対処はほとんどの場合厄介です。だるまが知る限りのことを以下に示しますので、参考にしてもらえればと思います。
このページのトップへ

3.参考文献

 このページを作成する際に参考にしたページや、もっと勉強したい人向けの資料です。

番号

リンク先の名称

リンク先の説明

リンクした日

1 多態性 - だるまのエクセルVBA 多態性のメリット、使用場面を説明しています。 2011/3/20

番号

著者名

書籍名

ISBN

1 結城 浩 増補改訂版Java言語で学ぶデザインパターン入門 978-4797327038
2 クレーグ・ラーマン著、依田 光江訳 実践UML 第3版 オブジェクト指向分析設計と反復型開発入門 978-4894716827

Prev Up Next  Top
このページのトップへ


このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
Sun、Sun Microsystems、サンのロゴマーク、Java、及び、Sun/Solaris/Java に関連するすべての商標およびロゴマークは米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
OMG、CORBAは、Object Management Groupの商標または登録商標です。
ITRON は "Industrial TRON" の略称です。
μITRON は "Micro Industrial TRON" の略称です。
TRON および ITRON は特定の商品ないしは商品群を指す名称ではありません。
VisiBrokerは、Visigenic Software,Inc.の商標です。
Orbixは、IONA Technologies PLC.の登録商標です。
"TOPPERS"およびTOPPERSプロジェクトのロゴは、TOPPERSプロジェクトの登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。