![]()
第3回 「『典型的なOO開発』と『XP』のプロセス比較」では、UMLモデリングを活用したコンポーネントベース開発とXP(エクストリームプログラミング)を比較しながら、開発プロセスの相違点を探る試みを行った。とはいえ、前回は、「要件定義」「システム分析」まで進んだ段階で紙幅が尽きてしまったので、今回は、「システム設計」から「実装」「テスト」まで一気に終わらせようと思う(ただし、XPは設計が実装の中に含まれるので、フェイズ分けは行わないことをお断りしておく)
システム設計ではシステム分析の結果である論理的な設計に、実装技術を取り込んでいく。このフェイズで、アーキテクチャと論理的な設計が合わさることになる(図1)。
■コンポーネントベース開発プロセスではこうなる コンポーネントベース開発では、まずコンポーネント仕様を作成する。ここでは、図2のような見積コンポーネントを参考にする。
設計フェイズでは、アーキテクチャ設計を適用する前にシステム分析のコンポーネント仕様の構成を明確にしていく。ここではマーチン・ファウラーが提唱する「アーキテクチャのレイヤ化」を採用し、以下のステレオタイプを用いる。
図2の見積もりコンポーネントのうち、ビジネスプロセス「見積結果通知」とそのサブプロセス「見積結果選択」「見積通知選択」は、<<Domain>>に、コンポーネント内部のデータである「見積もり」「見積明細」「顧客」「商品」は、そのアクセス経路を分析し、コンポーネント化された<<DataSource>>に分類する。
一方、アーキテクチャ設計はどうなるだろうか。簡単な例を示す(図4)。
クライアントには、WebブラウザにInternet Explorler、アプリケーションサーバにBEA WebLogic Server(以下WebLogic)を採用した。WebLogicでは、Servletでクライアントのリクエストを受け、セッションBeanを活用する。ビジネスロジックはJavaのクラスとして作成する。データベースはエンティティBeanを介して、Oracleにアクセスする。システムも全体的な構成は、クライアント、アプリケーションサーバ、データベースサーバの3層に分かれている。 このようなアーキテクチャ設計を図3のように分類したコンポーネント仕様に適用していく。このような作業を「マッピング」と呼ぶ。
図5では、<<Domain>>ステレオタイプの「見積結果通知」をセッションBeanに、「見積結果選択」「見積連絡先選択」をJavaのクラスに、<<DataSource>>の「見積もり」「商品」をエンティティBeanとして実装したものを表している。なお、HTML/JSPによる画面や、Servletによるリクエスト制御は、画面設計や画面遷移などのドキュメントを用意し、開発していく。UMLだけで、すべての設計ができるわけではない。
コンポーネントのマッピングに加えてデータ部分のマッピングも必要になる。例えば、UMLによるオブジェクトモデルからリレーショナル・データベース(RDB)へのマッピングは、O-R(オブジェクト-リレーション)マッピングと呼ばれている。
データ中心の方法論では、E-R図によるデータベースの設計を先に行い、オブジェクトにするという方法を示しているが、UMLによる方法論ではまったく違う。オブジェクトモデルから先に考えるのである。システムの中心部分はあくまでデータベースではなく、J2EEのクラス構造だからである。
■コンポーネントベース開発プロセスではこうなる コンポーネントベース開発では、マッピングを基にコーディングを行っていく。例えば、「見積通知内容選択」は次のようになる。
■アジャイル開発プロセス(XP)ではこうなる 一方、XPではストーリーカードをタスクカードに分割した後、計画に従って実装を行っていく。プログラミングの手順の中に設計が含まれるのである。ここでは、XPの核となっているTest Driven Development(TDD:テスト駆動開発)を見ていこう。
TDDでは、ものすごく細かいサイクルで、「テスト→コンパイル→動作→リファクタリング」を繰り返しながら開発作業を進める。このサイクルは、1時間に何回も繰り返す場合もある。最初にテストコードを作成し、コードを記述し、コンパイルを行い、テストを実行する。始めは、ターゲットとなるクラスを作成していないので、エラーの赤バーがJUnitに表示されるだろう。 ここで、ターゲットのクラスを作成していくことが設計作業に相当する。クラス構造を決定したり、機能をどのクラスやメソッドに持たせるかを考え、コードを作成していく。UMLによる設計図を書くよりも早くコードができてくる。もちろん、XPではペアプログラミングが基本なので、設計もペアでレビューすることになる。 ◆ 以上、2回にわたって、2つの異なる開発プロセスを比較しながら、開発プロセスの具体的な手順を見てきた。これらのプロセスの詳細手順を説明することはできなかったが、大まかな流れは理解できたのではないかと思う。コンポーネントベース開発の詳細については、テクノロジックアートのWebサイトで参照できる。また、TDDについては、現在ケント・ベックの書籍の翻訳が進んでおり、もうすぐ出版される予定である(『テスト駆動開発』、ケント・ベック著、テクノロジックアート訳、長瀬嘉秀監訳、ピアソン・エデュケーション)。
|
[an error occurred while processing this directive] |







