ドメインについて(2)

「分析」とは何か。一般的な「分析」とは収集した情報を要素に分けて整理し、分析目的に合致した意味合い(メッセージ)を得ることである。システム開発に於ける「分析」も同様である。情報を分け、整理し、メッセージを得ること。だがシステム開発の現場では分析者が「分析」を正しく認識していないことは珍しくない。

実際そのような分析者にとって「分析」はクライアントとの話をそのまま要件定義書にトレースする行為にすぎない。これは本来の意味である「情報を収集し分けて整理し意味合いを見つける」という行為とは異なる。そのような分析によって作成された要件定義書は曖昧で複雑で不完全となる。

それでも通常の開発であれば曖昧さ、複雑さ、不完全さはレビューによって検知されるが、開発期間が十分でない場合、レビューがその役割を果たさない。そのため曖昧で複雑で不完全な要件定義書はそのまま設計工程、プログラム工程へと流れてしまう。

この問題の原因は分析者(或いはレビューア)の無知と怠惰である。

だが彼らはこう云い分けをする。

「クライアントの要求が曖昧で複雑なのだから要件定義書が曖昧で複雑になるのは仕方がない」

クライアントはただ、自分たちが活動しているドメインに於いて今後自分たちが関心がある事、そして実現したい事を話したいだけである。分析者がドメインに精通していればクライアントのイメージは伝わるはずである。然し勉強不足の分析者にそのイメージは伝わらない。故に完成したシステムは寿命の短いシステムとなってしまう。

よいシステムの分析対象はアプリケーションだけではない。アプリケーションドメイン、マーケットドメイン、企業ビジョンまでもが対象なのである。

ソフトウェア開発の実プロジェクトでの大半では極めて初期の段階から複数の開発コンフィグレーションの分岐を考慮する必要がある。単一システムのためにスタートしたプロジェクトであっても何らかの分岐の発生は通常の事で、マーケットが成長したり顧客のシステムに対する期待が拡がったりするとそれに合わせてプロダクトがカスタマイズされる。従って当面のアプリケーションを分析するだけでは十分とは云えない。分析の範囲をアプリケーションドメイン全体、さらにはマーケットドメイン、企業ビジョンにまで広げる必要がある。つまりアプリケーション分析ではなくドメイン分析を行いたいのである。
ドメインとは何だろうか。”American Heritage Dictionary"によればドメインとは「活動・関心・機能の範囲、領域」のことである。ドメイン分析という言葉は基礎的なビジネス上の抽象を研究するということを意味する事が多い。例えばファイナンシャルトレーディングはドメインである。そのドメインの抽象の中にはトランザクション、株、債券、セキュリティ、先物取引金融派生商品、外国株などが含まれる。また電話通信も一つのドメインである。呼び出しコール、電話、回線、リレー、加入者などがドメインの重要な抽象となる。ファイナンシャルトレーでイングや電話通信はアプリケーションドメインである。各々のアプリケーションドメインは1個のビジネス、企業、マーケットを定義し、我々はそこから完全なシステムのファミリを見つけ出す事ができる。
「マルチパラダイムデザイン」より