【チュートリアル】 - 設計編

bn_obj.gif (1298 バイト)

1. オブジェクト指向による設計とは?

br_3

分析モデルについてお客様との確認が終わったChen君は、次は設計を任せられることになりました。Jun先輩の指導の下、分析モデルをベースに設計モデルを作成していきます。Chen君にとっては、オブジェクト指向による設計も初めての経験です。

このチュートリアルでは、設計の流れを理解することやモデルの分かりやすさに重点をおいています。そのため、使用する言語やGUIビルダ、またライブラリの特徴に応じた詳細な設計部分は省略しています。実際は、キーメカニズムの設定により、 実装クラスの追加やパッケージの再構成といった変更が生じる可能性があります。

br_3

jun これから設計を始めていくわけだが、その前に、オブジェクト指向による設計とはどういうものかをきちんと認識しておこう!
chen はい、よろしくお願いします。

1_2.jpg

ber

jun オブジェクト指向設計の目標って何だか分かるかな?
chen 設計段階では、実装に必要な情報を決定することが必要なのでは?
jun そうだね。分析した内容を「どうやって実現していくか」を考えることが目標になるよ。そのために、システム分析のときに作成したモデルを洗練したり、詳細を追加したりして、設計モデルへと変換していくんだよ。
chen なるほど。分析段階で作成したモデルを設計段階でも使うのですね。
jun そうなんだ。そして、オブジェクト指向による設計ではまず、アーキテクチャについて決定しないといけないんだよ。
chen アーキテクチャって何ですか?
jun アーキテクチャは、システムの構成の見取り図のようなものだと思ってくれればいいだろう。ソフトウェアの構成や、プラットフォームについて考えるんだよ。アーキテクチャは、プロジェクト関係者の立場により、異なった視点が存在するよね。異なった視点が存在するということは、アーキテクチャを表現するのに、異なった種類のモデルが要求されることを意味するんだ。例えば、次のようなモデルが、オブジェクト指向設計による成果物として必要になるんだよ。

 

wd_obj1.gif (25968 バイト)

 

chen 設計段階では、システムとハードウェアとのマッピングといった物理的な側面についても考える必要があるのですね。
jun そうだよ。オブジェクト指向による設計では、実装のためのアーキテクチャを構築し、そして、システムの全体にわたって使われなければならない共通の設計方針を確立するんだよ。
chen はい、分かりました。
jun それに、設計は開発者の視点から考えるものだから、使用するデータベースやミドルウェア、実装言語なども考慮しなければならないよ。
chen そうですね。
jun
オブジェクト指向設計では、標準規格や設計ポリシー、実践レベルの各種方針を決定するために、次のようなキーメカニズムについて考えていくんだよ。
 

wd_obj2.gif (21841 バイト)

 

chen 初期処理などのシステムに特化した部分や、データの永続化の方法など、分析段階では特に考えなくてもよかった部分ですね。
jun そうだよ。また、再利用についても考えておかなければならないよ。再利用可能なコンポーネントをシステムへ組み込むためには、設計プロセスの初期段階から考慮する必要があるからね。
chen 分かりました。

2_1_1L

jun キーメカニズムを決定し、それに応じたミドルウェアやライブラリを選択したら、今度はそれに応じたパッケージを導入するんだよ。要素をパッケージにグループ化したり、パッケージ間の関係について考えたりしていくんだ。 設計においては分割されたパッケージの単位が開発の単位になっていくからね。
wd_pkg.gif (5111 バイト)
chen 機能を分割するためにパッケージに分割するわけではないのですね?
jun パッケージに分割するのは、要素をグループ化することでモデルのメンテナンス性を高めることが目的なんだよ。また、パッケージごとに独立性を高めることによって、並行開発がしやすくなるんだ。
chen 実装に入ると人数が増えるので、うまくパッケージに分割して並行開発を進めることが大事になってきますね。
jun そうだね。また、これは補足だが、実際のところ、分析の段階でパッケージにグループ化する場合もあるんだよ。分析の段階でパッケージに分割する大きな目的は、モデル要素の整理なんだ。例えば、クラスの数が多い場合などは、クラスを整理するためにパッケージに分割する場合があるし、システムの機能が多い場合は、ユースケース図を作成する段階でパッケージに分割し、大まかな開発グループを作る場合もあるんだよ。
chen 分かりました。Jun先輩、設計上ではいろいろな問題が出てきそうですね。
jun Chen君、よく発生する問題に対する典型的な問題解決法を提示した「デザインパターン」というのがあるんだよ。いろいろなパターンが集められ、分類・カタログ化されているから、必要に応じて応用してみるといいよ。ただし、これは考え方そのものであって、ソースコードやユーティリティとしてあるわけじゃないんだよ。
chen はい、分かりました。
jun では早速、設計モデルの作成に入ろう。

ber

 

Prev. Next Home Top