ドメイン層に最適なアーキテクチャを考える保守性・拡張性に優れたシステムを作る(8)(1/4 ページ)

前回「階層アーキテクチャの利点は複雑さの減少」は階層化アーキテクチャの考え方について説明してきました。今回は、階層化アーキテクチャにおけるサービス層と、設計が難しいとされるドメイン層についてどのように考えるのかを見ていきます。まず、最初に各層を設計するときに、拡張性・保守性を高めるために何を検討すべきかを考えてみましょう。

» 2007年02月21日 12時00分 公開
[野村佳弘日立ソフトウェアエンジニアリング]

(1)業務機能とシステム機能の分離

 業務要件を満たすためのビジネスロジックなどを実現する機能とトランザクション制御などシステムを実現するために必要なシステム機能は、別々に実装できるように考えます。ビジネスロジックを実装するコードにトランザクション制御を行うコードが混在することは、拡張性・保守性を著しく悪くします。

(2)層間の依存性の排除

 ドメイン層などの階層化アーキテクチャの各層は、基本的に下位層に存在するコンポーネントをブラックボックスとして扱えるように設計します。それには、下位層に存在するコンポーネントはFacadeを用いることにより、各層間の結合度を低くします。

(3)オブジェクト指向分析の結果を忠実に実装

 上流工程でのオブジェクト指向分析では、要求を満たす最小完備なシンプルなモデルを分析・設計します。そして上流工程で考えられたモデルを基に、アーキテクチャ設計を行います。

 階層化アーキテクチャ設計以降では、実装を意識した設計の段階になり、上流工程で分析したモデルを、実装を意識したモデルへ変換します。この変換は、できれば忠実に上流工程でのモデルを実装できることがベストです。ただ、技術的な制約や性能などの制約により、大きな変換を余儀なくされることがあります。オブジェクト指向の設計において、この変換はかなり難しい設計になります。

 (2)については、前回の連載でお話ししました。今回は(1)と(3)についてお話しします。

 それでは、最適な解決策を見つけ出すためにアーキテクチャパターンを利用して考えてみましょう。今回は、PofEAA(Patterns of Enterprise Application Architecture)をベースに考えていきます。最初にサービス層について見ていきます。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ