ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

アスペクト指向が必要なわけ

2008-12-01 11:50:33 | Weblog

 アスペクト指向の「横断的関心事」って、オブジェクトとして、独立させてはじくべきで、そうすると、わざわざ、この「横断的関心事」をもとに論理を展開させるのって・・・って、思っていたけど、意味的共通化とか、形式的共通化とか、書いていたとき、ふと、「あ、そうか、必要だ ^^;)」と気づいたので、メモメモ・・・(っていうことで、アスペクト指向の専門の人から見ると、的をはずしてるかもしれないが・・・)




■業務の共通化は、オブジェクトレベルで行うべきだが、
 これは、要求仕様レベルである。

 たしかに、業務部分で共通処理があるなら、その処理を切り出し、オブジェクトを作るべきだといえる。ただ、これは、「業務の共通化」の話なので、主に要求仕様、せいぜい、外部設計レベルまでの話である。
 内部詳細設計の段階では、詳細化されているので、もはや業務の共通部分は、見えなくなっている。




■ところが、実装レベルで共通化しないといけないことがある。

 ところが、実装レベルでも、共通化すべき処理がある。
 データ入出力とか、テスト用処理とかなどなど・・・

 とくに、要求仕様→外部設計の流れは、機能要件に関しては考慮するが、非機能要件に関しては、吟味されない(できない。実装方法(RDBとかマシンとか言語とか)が決まらなければ、何秒以内に返ってくるかなど、分かるわけがない)。なので、非機能要件のようなセキュリティ、外部入出力の高速化などなど・・・




■実装の共通化はフレームワークでやるはずだけど・・

 たしかに、その部分の共通化はフレームワークがやるはずだけど、フレームワークでは、すべてをカバーしきれない。たとえば、Strutsで、画面データを取ってくる部分までの部分の面倒は見れるが、その画面データをログに書き出したりとか、そんな細かいことはしない。

 それは、フレームワークの手落ちではない。フレームワークでこまかいことをやると、処理が重くなる上、設定が複雑になるどちらかといえば、フレームワークは、あんまり仕事しないほうがいい。

 なので、プロジェクトレベルで見ると、フレームワークによる共通化だけでは不十分となる。
 そこで、プロジェクトごとに共通化するところが出てくる。




■実装レベルでの共通化で、コーディング時に気づくと・・・

 このプロジェクトごとの共通化だが、外部設計でフレームワークを決定するときに気づけばいいが、実際、コーディングして、さらに実機を動かしてみないと分からない場合がある(処理スピードがおそいので、効率化する場合など)。
 このとき、共通化部分=横断的関心事を直すため、オブジェクトを作るとなると、外部設計にまで戻ることになる(実装の共通化はフレームワークにかかわることなので、外部設計)。
 ところが、外部設計をいじると、コストがかかる(上流を修正するほど、それ以降(下流)をすべて修正・見直しすることになるので、コストがかかる)。

 そこで、実装レベルの共通化において、横断的関心事の対応をする手法が必要になる。




■で、アジャイルの場合

 アジャイルだと、実装だけでなく、要求仕様なども動きながら行うため、意味的共通化が(全体を見渡すことが出来ないので)取れないことがある。その場合には、実装レベルだけでなく、意味的なレベルにおいても、横断的関心事を切り出す必要がある可能性もある。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« RFIDって、エコ的にどー... | トップ | Linuxで利用できるファイルシ... »
最新の画像もっと見る

Weblog」カテゴリの最新記事