要求開発 vs. SOA適用開発

要求開発とSOA適用開発は、大きく何が異なるのか。2点ほど考察してみた。

(1) 全体最適と段階的なフェーズ開発

要求開発は要件定義の拡張に過ぎないが、SOA適用開発は企業の全体最適を前提した長期のライフサイクルが対象である。要求開発は全体に対するゴールだけは共有するものの、結局は部分最適である。それに対し、SOAは明確に全体最適を目指している。SOAは1部門の1システムにとどまらない。一般に適用範囲は広く、トップレベルでのビジネスビジョンやゴールとの関連付けが重要となり、企業のガバナンスにも影響される。部門を超え、全社、さらにはパートナー会社を含めて業務の最適化を図る。
そのため、SOA適用開発は段階的なフェーズ開発が前提となる。段階的なシステム開発を包含して語られる。適用するサービスの段階的な拡大と、基盤アーキテクチャの段階的な進化が必要なのである。SOAの段階的な開発では常に構築と運用の並行を考慮する必要がある。

(2) アーキテクチャの早期検討

要求開発はアーキテクチャを限定しないし、アーキテクチャを特定する段階をスコープとしなくてもよく、後続のシステム開発に委ねてもよい。それに対し、SOAアーキテクチャが限定される。ビジネスモデリング、サービス抽出の流れが明確でわかりやすいのだが、早期からアーキテクチャの実現を具体化しなければならない難しさがある。SOA適用開発では、要求開発の準備フェーズに相当する部分で、かなり長期のロードマップを作成する必要があり、その中にアーキテクチャの実現を具体化するステップを盛り込まなければならない。進化しつつある流動的なSOA技術の中で、特に基幹となるESBは標準化されてもおらず、ベンダーの製品依存になってしまうという状況があるにもかかわらずだ。
ただ、SOAは、抽出すべき構成要素がサービスとそれらの連携であるビジネスプロセスであり、非常に明確である。サービスはWSDLでインタフェース定義され、ビジネスプロセスはBPELで定義される。どのようにサービスやビジネスプロセスを切り出すかという難しさは別にしても、それら構成要素を一定形式で規定するというアーキテクチャの観点では明確なのである。