オープン系のシステムでは、オンライン処理は殆どWEBを導入しユーザー(利用者)の利便性を重視したシステムが一般的です。
このWEBを開発する為に多くのシステムではJava言語やPHP言語を利用して開発しています。ところが、この様な言語を利用して開発しても新規に開発を行うと基本的な処理を含めて膨大な開発期間と工数がかかり一向に開発局面で合理化が出来ていない状況になっています。また、一旦開発すると変更が発生した場合に影響調査や開発に思わぬコストが掛かり容易にシステム変更が出来ないシステムとなっているのが実情です。

そこで、開発で共通的な機能(入力チェックやDB接続など)は開発するツールにフレームワークとして自動生成する仕組みを持った開発環境ツールが登場し開発工数を削減できるものが登場しました。
Eclipse(開発環境ツール)をベースにStruts(Java開発支援ツール)やJBoss(DB接続支援ツール)などをアドインして開発する手法です。

この様な支援ツールを使用しても開発局面では開発技術者がいるので変更作業の効率は向上しますが一旦、サービスインすれば開発技術者がいなくなりシステム変更を行うには開発言語はもとより開発支援
ツールについても熟知している要員が必要になります。これでは、顧客企業の負担は永続的に軽減出来ず不満も残ります。

この様な開発技法ではなくシステム変更に強い設計・開発技法としてSOAが注目されています。

SOAはサービス指向のアーキテクチャーとしてシステム資産(既に開発している機能)を有効に活用する事を目的としてシステムの処理機能を体系化し再利用出来る形で設計・開発を行いWEB画面での変更を容易に実現できるように設計します。

例えば、注文画面を例に説明します。

注文画面に必要な情報は大きく@注文した顧客情報A注文の内容Bお届け情報C受付管理情報の4つに分類されますつまり4つのサービスから成り立つ画面と定義します。
@注文した顧客情報については、想定される入出力情報を定義しシステムから取得、表示する機能を設計します。
ABCについても同様に機能として設計します。
各々の機能は、細分化した機能設計を行い体系化します。
こうする事により変更時に影響を受ける箇所を明確化でき再利用を容易にする基盤が出来上がります。
画面の表示項目についても機能単位にサブ画面の表示として表示位置の変更による影響を受けなくします。表示項目についても自由に表示・非表示が出来る様に設計します。
小機能、中機能、大機能を体系化してパッケージ開発する事により同じような機能開発を避け組み合わせによる機能として再利用も容易にします。

イメージとしてはiGoogleの表示画面の様になります

この様な開発を行うと新たなシステム開発を行う場合、約半数の機能が再利用出来て顧客も開発ベンダーも理解しやすいシステムとなるので注目されています。

オブジェクト指向とは意味合いが違いますので一緒にしないで下さい私の見解ですがオブジェクト指向で開発すると論理設計と物理設計での差異が激しくなり結局はオブジェクト指向ではなくなってしまいます。

今回紹介したサービス指向の方が論理設計の理解や物理設計での誤解が少なくアーキテクチャとして判り易くプロジェクトとして成功確率も向上するものだと思います。

SOAは、まったく新しい考え方(技法)では有りませんがシステム機能(サービス)を重点に置いて設計段階で機能を体系化する所がミソです。


CopyRight All Reserved 1999-2009 SQLPowerpage.co.jp