ビジネスドメインを理解せよ

有能なソフトウェアアーキテクトは、問題空間の中の技術的なドメインだけでなく、ビジネスドメインのことも理解しています。ビジネスドメインの知識がなければ、ビジネスが抱える問題、目標、要件などの理解が困難になり、そのためビジネスの要件を満たす効果的なアーキテクチャーを設計することも難しくなります。

ソフトウェア・アーキテクトの仕事は、ビジネスの問題、目標、要件を理解し、それらを満足させることのできる技術アーキテクチャーを作ることです。ビジネスドメインの知識は、どのパターンを適用するか、将来の拡張性についてどのようなプランを立てるか、今後の産業動向に対してどのような準備をするかといった判断で役に立ちます。たとえば、保険などのビジネスドメインは、SOAアプローチに適しているのに対し、金融市場などのビジネスドメインは、ワークフローアーキテクチャーが適しています。ドメインの知識があれば、企業の特定のニーズを満たすためにもっとも効果的なアーキテクチャーパターンがどれかを判断する上で役に立つのです。

ドメインにおける産業動向の知識も、効果的なアーキテクチャーを設計する上で役に立ちます。たとえば、保険ドメインでは、実際に車を運転している時間だけを対象として自動車保険料を払う「オンデマンド」型の自動車保険が人気を集めるという動向があります。このような保険は、月曜の朝に空港に駐車して出張先に飛び、金曜に戻ってきて家に帰るような場合には効果的です。

保険業界のそんな産業動向を知っていれば、クライアント企業がまだビジネスモデルの一部としてそのような商品を計画していなくても、アーキテクチャーにこの種の商品を取り入れるためのプランを立てておけます。

ピジネスの目標を理解することも、効果的なアーキテクチャーの設計に役立ちます。たとえば、仕事をしている会社の目標の中に、M&Aによる急成長は含まれているでしょうか。この問いに対する答えは、設計するアーキテクチャーのタイプに影響を与える可能性があります。答えがイエスであれば、事業単位の合併に対応しやすくするために、多くの抽象レイヤーを含むアーキテクチャーを作ることになるでしょう。ピジネスの目標にオンラインでのプレゼンスを強化して市場シェアを拡大することが含まれている場合には、可用性の高さが非常に重要になるでしょう。ソフトウェアアーキテクトとして、顧客企業の目標を理解し、アーキテクチャーがその目標をサポートできるかどうかをチェックすることは大切です。

私が知っているアーキテクトでもっとも成功しているのは、広い範囲の技術知識を持つとともに、特定のドメインに関して強力な知識を持っている人々です。彼らは、最高幹部やビジネスユーザーが使っているドメイン言語でコミュニケーションを取ることができます。すると、このソフトウェア・アーキテクトは仕事がわかっているという強い信頼が生まれます。ビジネスドメインの知識があれば、ソフトウェア・アーキテクトは、問題、課題、目標、デー夕、処理をよりよく理解することができます。これらはみな、効果的な基幹システム・アーキテクチャーを設計する上で重要な要素なのです。