僕が言ったところで
アーキテクチャ記述言語(Architecture Description Languages: *1 )とアスペクトとの関係は? AspectJ を使えば Connection を書くのを、ArchJava みたいに明示的じゃなく、暗黙的にできる? 一応昔、ArchJava を AspectJ でエミュレートできないかを試し…
ソフトウェア開発の種類を大雑把に(勝手に)分けてみると、以下の 3 つがあると思う。 アプリケーション開発 フレームワーク開発 プロダクトライン開発 それぞれの場合で AOP (AOSD) の技術を考えると、結構違いがある気がする。プロダクトラインが具体的に…
英語が怪しいけど、、、 モジュールの単位として、対称というか非対称というか、一つの独占的なモジュールの単位(たとえばクラス)ではない、というのは、今後どちらの方向に進んでいくのだろうか。 AspectJ では、クラスとアスペクトが明示的にお互いは関…
プログラミング言語のためのベンチマークってどう? ソフトウェア開発で重要で避けられない点の1つは、ソフトウェアの発展(Evolution)にあると思う。ということで、いくかの発展的な状況を集めて、それぞれの言語でどのような発展結果になるのかを、調べて…
英語が怪しいけど、、、 Crosscutting Concerns がモジュール化できない、とは具体的にどういう意味だろう? JBoss AOP とかその他の AOP フレームワーク(?)とかの存在を考えると、AspectJ のような AO 言語と、Java + 既存の技術を利用した AOP を実現す…
直感的には、アスペクトとベースプログラムの関係は、薄くしたほうが望ましいように思える。 しかし、具体的には、どのような理由からだろう? たとえば、Caesar では、クラスとアスペクトの明確な区別はない(クラスの中に、advice が書ける)。 さらに、ダ…
's' いるんかな? まあそれはさておき、、、 AspectJ での一つの面倒な点は、advice に対する advice を行いたい場合があるきがする。 before() : ... { beforeMethod(); // なんらかの前処理 method1(); afterMethod(); // なんらかの後処理 } before() : .…
技術的な内容ではないけど、最近学んだこと。 僕の最初のデザインパターンの見方は、上手いやり方、だった。でも、色々と関連する最近の論文を読んでいて感じたのは(実際に、どっかに誰かが書いていたかもしれないけど)、上手いやり方ではなく、単に回避策…
もし、アスペクトをインスタンス化できるとしたら、アスペクトの寿命はどう考えればよい? public void method() { startLog(); new MyClass().my(); // ログされる?? }public void method2() { new MyClass().my(); // ログされる }public void startLog(…
またまた、無駄に英語のタイトルだけど、ちなみに日本語で書くと「ダイナミックアスペクトによるアプリケーションフレームワーク開発」とかになる。ちょっと凄みがなくなるぜ。日本語だと。それはさておき、最近更新してた「AspectJ Tips」の AspectJ + cgli…
Bruno Harbulot and John R. Gurd. Using AspectJ to Separate Concerns in Parallel Scientific Java Code. To be published in the Proceedings of the 3rd International Conference on Aspect-Oriented Software Development (AOSD). March 2004. DL: ht…
よくわからんけど、必要最低限のメソッドだけを、特定のクラスに inter-type declaration したいという場合があるきがする。というのも、クラスの interface は必要以上に複雑になってほしくないから。 でも、どうやって特定のメソッドだけを選択して、inter…
今、 Stefan Hanenberg, Robert Hirschfeld Constructing Highly Adaptable Frameworks Using Aspect-Oriented Composition Techniques (実際に論文を見てみるとタイトルは「Applying Aspect-Oriented Composition to Framework Development - A Case Study…
今、ちょうどアスペクト指向な Visitor パターンを適用できる状態なんだけど、スムーズに悩むことなく適用できそうでもない。 この困難さ or 恐怖(先が見えない)の理由の1つは、設計空間の大きさ(or 選択肢の多さ)から来ているように感じる。主な選択肢…
最近の目に付くプログラミング言語の特徴として、 Provided メソッド や Expected メソッドなんかがある。具体的には、Caesar[1] とか ArchJava[2] とか Trais[3] とかだけど(他にもあるかも)、この、Provided/Expected メソッドと Abstract メソッドの違…
英語が怪しいけど、まあ、無視して、、、 アスペクトの普通の見方は、Crosscutting Concerns を含むモジュール単位、みたいな雰囲気だと思うけど、それよりも or それに加えて、Context (文脈)を表すのがアスペクト、と考えるのも有効的かもしれない。 Aspe…
AspectJ では、declare XXX みたいなコードを書ける。AspectJ でサポートされている declare 宣言には、declare parents (既存のクラスに interface をとかを実装させる) とか declare precedence (アスペクトの優先順位を決める)とかがある(詳しくは「Th…
`Aspectual' ってつければ何でもいいと思ってんのか! への回答は、え、うん、どーよ? AspectJ Tip: Chain of Aspect http://www.ncfreak.com/asato/doc/aspectj-tips/chain.html とか Caesar によるデザインパターンの実装 - Abstract Factory http://www.…
ある concern に対して、複数の実現方法(アスペクト)があるとすると、そのアスペクトは、その concern に対してのグループを形成していることになる? たとえば、ロギングの concern を考えてみると、ファイルにログするアスペクトとコンソールにログする…
英語の怪しさは、さておき・・・ どうなっていればフレームワークでどうなっていなければフレームワークじゃないかの境界線は分からないけど・・・オブジェクト指向フレームワークの開発では、拡張できるようにクラスをそのようにしたりする、と思う。GoF の…
's' いるんかなあ? それはさておき・・・ Caesar によるデザインパターンの実装 - Abstract Factory http://www.ncfreak.com/asato/doc/caesar_dp/af.html#impl2 の「議論2」書いていて分かったことだけど、アスペクトの分割は、なんとかできるみたい。ただ…
タイトルがめずらしく日本語だけど、これは、英語での書き方がわからんかったからだ! ・・・とはかはさておき・・・ AOP が有効である、といわれるようなケースの問題を扱っているとき、その問題は、どのような問題なのかどうか。一般的に、AOP が解決する…
いつものとおり、タイトルの英語が怪しいけど・・・ Open Class と階層拡張 http://www.ncfreak.com/asato/doc/openclass.html というドキュメントを書いていて気づいた or AspectJ を使い始めていたころから気づいていたことだけど、Open Class (or AspectJ…
デザインパターンの実装の視点から見た AspectJ と Caesar の比較 - Abstract Factory http://www.ncfreak.com/asato/doc/aspectj_caesar_dp/af.html を書いていて思ったことだけど、Aspectual Polymorphism ができる Caesar とできない AspectJ では、かな…
AspectJ を使い始めていたころの疑問の一つは、アスペクトがアプリケーションのコードの側に現れてもいいのかどうかということ。(特に AspectJ における)ロギングのようなアスペクトは、暗黙なアスペクトとして実装されて、実際のコードのには、現れる必要…
またもや怪しい英語だけど・・・それはさておき・・・ Caesar によるデザインパターンの実装 - Abstract Factory (http://www.ncfreak.com/asato/doc/caesar_dp/af.html#impl2) を書いてて感じたことだけど、大きな crosscutting concerns (例でいえばゲー…
リファクタリングとも関連するけど、調べたいことの候補に、Change Patterns あるいは Evolution Patterns ってのがある(僕が勝手に付けただけ。他にも同様のことがあるかもしれない)。具体的にいうと、プログラムに関する特定の要件や変更に対して、どの…
またまた、なんで Nature とかカッコつけて英語にしてんの? というのはもっともだけど、それはさておき、、、Abstract Factory を実装していたときにも気が付いたことだけど、Factory Method も Crosscutting な Concern に影響されるものなのだろうか。 ht…
deploy に、配列を指定できのかな、と。 deploy( decorators ) { // Decorator[] component.operation(); }ちょっと思っただけ。良いかも悪いかも不明。もしできたとしても、Decorator の実装にどれだけ影響あるかも不明。
Nature の使い方間違ってるかもしれんけど・・・それはさておき・・・、Caesar で Abstract Factory のサンプル 書いていて気が付いたんだけど、Abstract Factory を適用したくなる場合って、本質的に crosscutting concern 関連なんだろうか。少なくとも、…