コンポーネントの責務による分類方法



ここに紹介する分類方法は、私が6年ほど前に概念設計した言語をまたいだ継承や拡張を可能にできるコンポーネントフレームワーク開発のときに考案したオブジェクト指向ソフトウエアコンポーネントの分類方法です。 
ここでのソフトウエアコンポーネントは広義のコンポーネントの意味で使っています。
IOCコンテナを前提としています。

これは 豆蔵の萩本順三さんが開発した開発方法論DROPの分類方法を参考により実際の設計の要求を満たすよう改良をくわえました。。
DROPと同じように 3×3の2次元のマトリクスで9個のカテゴリーに分かれています。

2次元それぞれの軸は以下の様に定義しています。
X軸:コンポーネントの抽象度
Y軸:コンポーネントの適用次元

それぞの軸にその意味を表現する3つのカテゴリがあります。

・X軸:コンポーネントの抽象度
 X-1:抽象
   インターフェースや抽象クラス
 X-2:部品
   インターフェースをインプリメントした、実行部品
 X-3:応用
   部品を組み合わせて実行するファサード
   実行の入り口
   IOC定義

・Y軸:コンポーネントの適用分野
 Y-1:システム領域
   アプリケーションフレームワーク

 Y-2:環境領域
   アプリケーションと外部との接続
   ユーザーインターフェース
   ネットワーク
   OS サポート抽象化
   バウンダリー

 Y-3:ビジネス領域
   伝票、消費税、業務アプリケーション
   いわゆるドメインオブジェクト

9つのカテゴリを並べると以下のようになります。

  システム領域↓  環境領域↓   ビジネス領域↓
抽象: システム抽象   環境抽象    ビジネス抽象
部品: システム部品   環境部品    ビジネス部品
応用: システム応用   環境応用    ビジネス応用

アスペクト指向的に言うと、システムや環境は一つのアスペクトということになりますね。
クラスの責務がごっちゃになったときにはこの分類にあてはめて責務を再定義定義していくときれいに整理できます。
今でもこの分類方法は設計に役立っています。

設計例は別の機会に書きます。





Posted: 土 - 10月 16, 2004 at 12:12 AM      
    |


©