■アスペクト指向いろいろ
・アスペクト指向要求工学(Early Aspect)
→ヤコブソン(こいつが、機能追加を行うためのアスペクト指向を扱う)
・アスペクト指向アーキテクチャ、モデリング、設計
・アスペクト指向プログラミング
・アスペクト指向の形式手法
・アスペクト指向ミドルウエア
■ユースケースにおけるオブジェクト指向とのミスマッチ
ユースケース:外部から見える振る舞いの関心事
→ユースケースは、オブジェクト指向と直接関係ないので、
オブジェクトとは関係なく、横断的関心事になる?
→ユースケースの関心事が、オブジェクト指向開発時に離れ離れになってしまう
ユースケース間の関係を記述することはできるが・・・
include(共通部分)→オブジェクト指向で記述できる
汎化・特化→オブジェクト指向でもあるのでOK
拡張→既存のユースケースをあとからピンポイントで差し込む
:機能追加
→オブジェクト指向では、ない。
→「後から差し込む」って、まさに、アスペクト指向
■ユースケースの機能追加extendとAOSD(アスペクト指向ソフトウエア開発)
ユースケース:機能追加を考えている(extend)
オブジェクト指向:ない(修正しないと)
ユースケースの機能追加extend ⇔ アスペクト指向で実現できそう
→アスペクト指向なら、あとから差し込むことができるので。
→AOSD(アスペクト指向ソフトウエア開発)
→ユースケースで分離できた関心事をそのまま設計、実装が可能になる
■AOSD(アスペクト指向ソフトウエア開発)
・横断的関心事を2つに分ける(ピアと拡張)
・アプリケーションピアユースケース
→機能要求
・アプリケーション拡張ユースケース
→機能追加など
・基盤ユースケース
→非機能要求
・依存ユースケース
→プラットフォーム依存のもの
・ピア
主要機能を表す独立的関心事だが、横断の可能性もある
ユースケース
・ユースケースの違いにかかわりなく必要:ユースケース独立スライス
・そのユースケースのみに必要な部分:ユースケーススライス
→ユースケーススライスから、ユースケース独立スライスを拡張
拡張部分を、アスペクトにする(インタータイプ宣言)
・拡張
拡張ポイント=AOPのジョインポイント
■手順
(1)ドメインモデルの作成
(2)ユースケースの識別
(3)ユースケースの分析 -------ここまでは、普通のユースケース分析と同じ
(4)クラスの分析と責務の調停
→ここで、ユースケース依存か独立(共通)を分離する
(5)独立スライス→ユースケーススライス(ピア→拡張)の順に
スライス作成→クラス実装