InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

SOAにおける疎結合の定義

作者 Dilip Krishnan , 翻訳者 編集部 投稿日 2008年6月22日

セクション
設計/アーキテクチャ,
エンタープライズ・アーキテクチャ
トピック
SOA ,
Webサービス ,
設計 ,
Loose Coupling

SOAにとって凝集性が重要かどうかという議論(参考記事)で、Carlos Perez氏がソフトウェア構造での結合について(source)また、SOAとの関連でそれがどのように展開してきたのかについて見解を述べた。まずBertrand Meyer氏(source)によるモジュール性の原理から始め、独自のサービス指向の原理へと展開する。

はじめにCarlos氏はBertrand Meyer氏のモジュール性の原理を引用して、以下のように述べている。

  1. モジュールの分解しやすさ - ソフトウェア問題を複雑性が少ない問題に分解するという作業を支援し、その問題は単純な構造で結びつけられ、また各項目でその後の作業が単独で実行できる のに十分独立していれば、ソフトウェア構造メソッドはモジュールの分解しやすさを満たす。
  2. モジュールの組み合わせやすさ - ソフトウェアエレメントを支持し、場合によっては、もともと開発された環境とは全く違う環境で相互に自由に結合され、新しいシステムを構築すれば、モジュールの組み合わせやすさを満たす。
  3. モジュールの分かりやすさ - 他を知る必要なしに(最悪でもいくつかのみを調べる必要によって)人間による読み出しが各モジュールを理解することができるようなソフトウェアの製造を支援すれば、モジュールの分かりやすさを満たす。
  4. モジュールの持続性 - 問題の仕様で小さな変化をもたらすソフトウェアアーキテクチャが、1つのモジュールもしくは少数のモジュールにおける変化の要因となれば、モジュールの持続性を満たす。
  5. モジュールの保護 - モジュールで実行時に異常が発生した影響がそのモジュールに限定されたままであり、また最悪な場合、近くにあるモジュールに伝播するアーキテクチャを作成すれば、モジュールの保護を満たす。

それからThomas Erl氏、Don Box氏(source)、Stefan Tilkov氏(ブログ・英語)およびDavid Orchard氏(source)といったソートリーダーによって表されているように、サービス指向の教義を考察し批評している。

... (Thomas Erl氏の原理)は、極端な原理である。というのも問題を重複しているからである。

... [David Orchard氏(source)]のリストは、バランスが取れているのだが、WS-* インクルードには疑問を抱かずにはいられない。

サービスの独自の定義(source)に基づき、サービス指向の原理を以下のとおりにまとめた。

  1. 分解しやすさ - ソフトウェア問題を複雑性が少ない問題に分解するという作業を支援し、その問題は単純な構造で結びつけられ、また各項目でその後の作業が実行できるのに十分独立していれば、分解しやすさを満たす。
  2. 組み合わせやすさ - ソフトウェアエレメントを支持し、場合によっては、もともと開発された環境とは全く違う環境で相互に自由に結合され、新しいシステムを構築すれば、組み合わせやすさを満たす。
  3. 分かりやすさ - 他を知る必要なしに(最悪でもいくつかのみを調べる必要によって)人間による読み出しが各モジュールを理解することができるようなソフトウェアの製造を支援すれば、分かりやすさを満たす。
  4. 持続性 - 問題の仕様で小さな変化をもたらすソフトウェアアーキテクチャが、1つのモジュールもしくは少数のモジュールにおける変化の要因となれば、持続性を満たす。
  5. 保護 - モジュールで実行時に異常が発生した影響がそのモジュールに限定されたままであり、また最悪な場合、近くにあるモジュールに伝播するアーキテクチャを作成すれば、保護を満たす。
  6. イントロスペクション - モジュールやコミュニケーションの構造が実行時に照会され、検討されるようにするメカニズムをサポートするアーキテクチャを作成すれば、イントロスペクションを満たす。
  7. リモータビリティ - 別の物理的環境でホストされるその他のモジュールによるモジュール通信を可能にするメカニズムをサポートするアーキテクチャを作成すれば、リモータビリティを満たす。 
  8. 非同期性 - モジュール起動から迅速な応答を見込んでいないアーキテクチャを作成すれば、非同期性を満たす。つまり、ネットワークか起動済みモジュールに待ち時間が発生することを想定している。
  9. ドキュメントの指向性 - 内部モジュールからモジュールへのメッセージ通信が明確に定義され、共有され、起動間で暗黙状態がないアーキテクチャを作成すれば、ドキュメントの指向性を満たす。
  10. 標準プロトコルエンべロープ2 - モジュール通信全体で共通のエンベロープメッセージフォーマットの共有を要求するアーキテクチャを作成すれば、 標準プロトコルエンべロープを満たす。
  11. 非集中管理 - すべてのモジュールに対して単一の管理を要求しないアーキテクチャを作成すれば、非集中管理を満たす。

それから「「疎結合」(ブログ・英語)という用語を包含するすべてのもの。そこから上記の特性の多くを引き出すことが可能である。要約すると、SOAは疎結合のAPIにすぎない」という捨て台詞で締めくくった。

どう思うか?Bertrand Meyer氏(source)によるソフトウェア品質(source)の原理が、サービス指向との関連でどのくらいあてはまるのか?必ず、Carlos Perez氏のオリジナルの投稿(ブログ・英語)を参照すること。

原文はこちらです:     http://www.infoq.com/news/2008/06/loose-coupling-soa

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。