SOAを理解する

2006年6月23日(金)
高安 厚思

疎結合とは?

   SOAを説くときによくでてくる「疎結合」という言葉だが、その意味は2つの結合すべき要素(再構成の場合は各システムの機能など)を結合する際 に、お互いに影響しあわないように結合するということである。影響しないというのは、いずれの要素に対して変更や拡張があっても、もう1つの要素には影響 を与えないということだ。

   ソフトウェア開発の原則に「Open-Close Principle(OCP)」と呼ばれる原則がある。この原則の「Open」はモジュールが拡張に対して開放されているという意味を指し、 「Close」というのは変更があっても他には影響を与えないという意味を指している。

   システムに対してこの原則を適用する技術が、疎結合になる。つまり疎結合によって、変更に対しては閉じていて、拡張に対しては開放されているように構築できるということだ。

   しかし、疎結合は抽象的に議論することが難しい。2つの結合方式を比較すれば、どちらが疎結合なのかを議論することはできるが、その具体例がないと 結合状況の議論はできない。それは疎結合の基準がないからだ。ソフトウェア工学にはモジュール間結合度(スタンプ結合、データ結合など)という尺度がある が、目的が異なっている。そこで筆者は、分散システムにおけるモジュール間の結合の強さを3つのレベルに分割して整理してみた。

疎結合の分類
図2:疎結合の分類
(画像をクリックすると別ウィンドウに拡大図を表示します)

レベル1

   レベル1はRPCのような分散環境での関数呼び出しだ。このレベルはインターフェースを決めておけば実装を取り替えることができる。確かにインター フェースと実装が分離できるという意味では疎結合だが、呼び出し先が静的に(関数呼び出し)決定されており、呼び出すモジュールに対するルーティングも静 的に行われている。

   このことから、呼び出し先と呼ばれる側は、関数名や引数の型、その順番などに依存している(CORBAにもDIIのような動的呼び出しの枠組みがある。DIIを利用した場合はレベル2の疎結合といえる)。 

株式会社オープンストリーム テクニカルコンピテンシーユニット 主管システムズアーキテクト

横浜国立大学経営学部卒。銀行系シンクタンクでオブジェクト指向技術の研究に携わった後、大手SIerにて アーキテクチャ構築、プロセス研究に携わった。現在株式会社オープンストリームにてSOAを中心とする研究開発およびアーキテクチャ構築に従事。最近は XMLのダイナミックさに魅了されている。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています