• 検索結果がありません。

パターン体系

ドキュメント内 サービス指向システム開発方法論の研究 (ページ 36-39)

6 WEB サービス開発むけパターン体系

6.1 パターン体系

パターン体系をBuschmannらは文献[7]の5章において次の通り定義している: 「ソフトウェアアーキテ クチャのためのパターンのコレクションであり,その実装のためのガイドラインやソフトウェア開発における 実際の利用やガイドラインを含んでいる.」

本研究で開発したパターン体系はこの定義の内容に加え,企業でのソフトウェア開発体制に合わせた情報や ガイドラインを取捨選択して盛り込んでいる.以下に詳細を示す.

6.1.1 対象範囲

本研究のパターン体系がカバーする範囲はWebサービスの実装にXMLを利用するビジネスアプリケーショ ンであり,その中でもサーバ側の開発に必要な技術に絞っている.これはアプリケーション開発の中で XML を利用することで変更が生じ,ノウハウを提供しなければならない技術がクライアント側(ユーザインタフェ ース側)ではなくサーバ側に多くあると考えたためである.実際,ユーザインタフェース側は各社のさまざま なコンポーネントやアプリケーションが提供されており,これらを使えば要求を満たせる場合が多い.

6.1.2 パターン体系の構成

提案するパターン体系は個々の技術ノウハウを相互にリンクしたドキュメントとして提供し,膨大なノウ ハウから必要なノウハウだけを効率的に見ることができる.開発の状況に応じて以下の様々な入口(アーキテ クチャ,テンプレートモデル,詳細ノウハウ,コンポーネント,開発方法論)からリンクをたどり,粗粒度の ノウハウから細粒度のノウハウに至ることができる.一覧から直接細粒度のノウハウに至ることもできる.

同じビジネスアプリケーションの開発に関わる人間でも,例えばプログラマとSEではアプリケーションに 対する観点や必要とするノウハウが異なる.上記のように様々な入口と経路を設けることで,全ての人が「最 適なノウハウに最短で」到達できる体系を目指した.

また細粒度のノウハウが詳細設計や実装に関するノウハウについては,そのサンプルコードとコンポーネ ントをそのまま利用できる形で提供している.

以下にパターン体系を構成する5つの入口を示す(図6-1).

(1) XMLシステムのアーキテクチャ

XML を入出力とするシステムの概要モデルを解説している.XML 自体を処理する方式とデータを格納 する方式をそれぞれ分類して特徴やトレードオフを解説している.システムの要求に応じて方式を選択す るためのガイドラインも提供している.また各アーキテクチャで使用できる実際の製品名を挙げている.

図6-1 パターン体系の全体構成

ここから詳細化したアーキテクチャやテンプレートモデル,詳細ノウハウ,コンポーネントに至ることが できる.

実装した内容は,分類整理したXMLシステムアーキテクチャのうち,実際に商談に適用を推奨する8種 類とした.後述する評価では企業内のシステム開発では十分であると判断できた.

(2) テンプレートモデル

システムのタイプ別にアプリケーションの実現例とサンプルコード,および,それを用いた開発に必要な 作業手順を提供している.

ここから関連するアーキテクチャやテンプレートモデル,詳細ノウハウ,コンポーネントに至ることがで きる.

実装した内容は先行商談4例のテンプレートモデルで,本パターン体系の適用した実商談をテンプレート モデル化して拡充した.

(3) 詳細ノウハウ

XMLアプリケーションの開発に必要な個々の技法に関する知識とサンプルコードを提供している.ノウ ハウはテーマ別(RDB格納法など)に分類してある.

ここから関連するコンポーネントに至ることができる.

実装した内容は当初13種類でXML-RDBマッピングやトランザクション管理など多岐に渡る.

(4) コンポーネント

使用頻度の高いXML処理を部品化しコンポーネントとして提供している.あわせて設計情報,動作保証 情報,使用法を示すサンプルコードも提供している.コンポーネントの設定を外部ファイル(XML)で与 えてカスタマイズを可能にしてある.

実装した内容は当初約30種類であり,ツールも含めて順次拡充していった.

(5) 開発方法論

実践経験のあるオブジェクト指向開発方法論[92]をベースにXMLを利用するアプリケーション開発のた めの作業手順(分析作業からテスト作業まで)とドキュメント(UMLベース)を開発した.

開発方法論はパターン体系が提供する5つの入口やパターンの実際の使い方を示している.この方法論は 入口やパターンをどのソフトウェア開発フェーズで使うか,各開発フェースでどのように使うか,開発フ ェーズではどこまで(例えばどの詳細度まで)作業すべきか,という情報を提供する.また,代表的なア プリケーション開発を例に全ドキュメント事例も提供している.

このパターン体系のパターンのたどり方の例を簡単に示す(図6-2).

入口「XMLシステムのアーキテクチャ」から「XML処理方式の選択基準」が書かれたパターンにたどり つくことができる.このパターンに従って処理方式を選択し,パターンに張られたハイパーリンクをたどって

図6-2 パターンのたどり方

選択したアーキテクチャ(例えばSAXとRDBを利用するXML処理アーキテクチャ)やその実現方法に関す るパターンを参照できる.さらに,このパターンからアーキテクチャを利用したテンプレートモデルやアーキ テクチャを利用するための詳細ノウハウ(例えば図6-3のSAX に関するノウハウ)やコンポーネントのパタ ーンにたどり着くことができる.

4.3 節であげたパターン体系で提供すべき情報のうち,4.3.1 節で示したXMLの技術的特徴に関する情報 は,アーキテクチャ,ノウハウ,コンポーネントを入口とするパターンとして提供している.4.3.2節で示した な開発方法や作業手順に関しては,開発方法論で情報を提供している.

6.1.3 パターンテンプレート

パターンを統一された形式で記述するために,パターン体系用のパターン記述テンプレート(以降パターン テンプレート)を用意した.記述する項目は社内での利用に必要なものを列挙した.

パターンの例を図6-3に示す.

図 6-3 パターンの例

本研究のパターンテンプレートが持つ項目の中で,一般のパターンテンプレート(たとえば文献[7]の1章 に示されている記述テンプレート)にない項目として「必要となるスキル」がある.この項目には例えば「DOM

API,JDBC,Javaに関する知識」と書かれている.この項目を設けることで習得技術の異なる各部署の開発

担当者は現在の技術知識で読むべきか否かを判断できる.なお,前述の一般のパターンテンプレートに記述す る項目として列挙されているのは,名前,別名,例,前提,課題,解決策,静的側面,動的側面,実装,補足,

1. ノウハウ番号︓08-703 2. タイトル︓ SAX データ抽出 3. 必要となるスキル︓

SAX API、Java に関する知識 4. 目的︓

SAX を用いて XML からデータを抽出する汎用部品の設計およびサンプルコードを提供する。

5. 用途︓

SAX を内部処理に用いた EDI 系システムに適する。

…….

(component user)

: XMLReade r handler : DataExtractHandler

domHolder : DOMHolder 1. setExtractedDataProcessor(ExtractedDataProcessible)

→domHolder

3. setContentHandler(ContentHandler)

→handler 4. parse (InputSource)

5. getDocument( ) 2. set UsingTags(String) DataExtractHander

の設定

イベントハンドラに 登録

XMLの解析

抽出部分の取出し

バリエーション,適用例,結論,参考,である.

また本研究のパターンには,GoFデザインパターン[25]で「動機」に書かれる内容,すなわちパターンが解 決すべき問題の文脈をほとんど書いていない.代わりに6.1.2に示した5つの入口のうち「アーキテクチャ」,

「テンプレートモデル」にこの内容が書いてあり,説明文中,図,表,リストから適宜ハイパーリンクでパタ ーンに到達できる.またこの形式により関連するパターンにより簡単に到達できると考える.

その他パターンの項目として,タイトル,ID番号,目的,用途,概要,外部仕様,内部仕様,関連するパ ターン(同時に本文中で適宜関連パターンへハイパーリンクを張っている),効果などを用意した.

詳細設計や実装に関するパターンには,理解の助けのためにサンプルコードを動作する完全形で提供した.

サンプルコードはそのまま流用することも可能である.またすべてのサンプルコードにはUMLなどで記述し た設計情報を用意しておりサンプルコードの利用プログラム言語 (Java) とは異なるプログラム言語の再利用 を助けている.

ドキュメント内 サービス指向システム開発方法論の研究 (ページ 36-39)

関連したドキュメント