タイトルの英語ウソくせえけど、、、Aspectual Polymorphism が何かは、ちょっと色々議論がありそうなテーマだと思うけど、雰囲気的には、オブジェクトの振る舞いが実際のオブジェクトの型(クラス)に によって変わるように、オブジェクトの振る舞いは、ど…
's'いるのかどうか不明だけど・・・ アスペクトの持つ特徴として、一つ有益かもしれないものとして、アスペクトの機能(アドバイス)を 実行時に オンやオフにするものがあると思う。思う、っていうのは、実用的な状況が明確にイメージできないからだけど、…
ちょっとタイトルは大げさだけど、、、 もし、アドバイスにメソッドと同じように名前を付けられたら? public aspect MyAspect { before myBefore() { ... } } メソッドがリフレクションを通して、Method として取得できるのと同様に public class MyClass {…
この前から書いていた、ArchJava っぽいことを @ (Attribute or Annottation) + AspectJ のソースを生成の話を、ちょっと具体的に。 ArchJava とは程遠いけど、雰囲気的には、以下のようなソースがあるとすると(あとで、ちゃんと実装上の問題とかをまとめて…
いや、冗談だけど、、、(単に G を並べたかっただけ、、、でも、マジメに考えてみるのも面白いかも?)インスピレーション元: David J. Montana. Strongly Typed Genetic Programming. Evolutionary Computation Vol 3:2, 1995. (1995) DL: http://vishnu.b…
Attribute or annotation or tag or @ の情報を利用して、AspectJ のソースコードを生成するヤツの続き。 以前に書いたもの(ArchJava と Traits)に加えて、次のようなものも実装できるかも、と思い中: Role Rule Virtual Class Delegation 具体的に、実装…
ウソ臭いタイトルの英語はさておき、、、 前の日記でも書いたけど(今試し中だけど)ArchJava の特徴(Connector とか Port の抽象性)なんかを、Annotation (or Attribute or @) とソースコード(特に AspectJのコード)を生成するアプローチを用いることで…
基本的に、何かのソフトウェアやライブラリを拡張(or 変更)したい場合に取れるアプローチには: ソースコードを直接変更 継承(or サブクラス化) がある。 前者のアプローチの問題点は、変更される側(つまり、ライブラリ側)の変更に、変更する側が同期を…
Tag/Attribute/Annotation(以下 @ で省略)を基にして、コードの変換を行おうとする場合、AspectJ の機能は、なかなか便利な気がする。 実際、今、それをもとに、二つのアイデアを実行中。 ダイナミックな AOP(たぶん、Aspectwerkz の @ を使うのと似た内…
アーキテクチャ記述言語(Architecture Description Languages: *1 )とアスペクトとの関係は? AspectJ を使えば Connection を書くのを、ArchJava みたいに明示的じゃなく、暗黙的にできる? 一応昔、ArchJava を AspectJ でエミュレートできないかを試し…
ソフトウェア開発の種類を大雑把に(勝手に)分けてみると、以下の 3 つがあると思う。 アプリケーション開発 フレームワーク開発 プロダクトライン開発 それぞれの場合で AOP (AOSD) の技術を考えると、結構違いがある気がする。プロダクトラインが具体的に…
英語が怪しいけど、、、 モジュールの単位として、対称というか非対称というか、一つの独占的なモジュールの単位(たとえばクラス)ではない、というのは、今後どちらの方向に進んでいくのだろうか。 AspectJ では、クラスとアスペクトが明示的にお互いは関…
間接的設計と再利用性の関係は? Indirect Observer
プログラミング言語のためのベンチマークってどう? ソフトウェア開発で重要で避けられない点の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…
下のと同じく Mariusz Boryczka, Zbigniew J. Czech. Solving Approximation Problems by Ant Colony Programming. Proc. of the Genetic and Evolutionary Computation Conf. - GECCO'02, W.B. Langdon et al. (Eds.), New York City, NY, USA, (9-13 July,…
Mariusz Boryczka, Zbigniew J. Czech. Solving Approximation Problems by Ant Colony Programming. Proc. of the Genetic and Evolutionary Computation Conf. - GECCO'02, W.B. Langdon et al. (Eds.), New York City, NY, USA, (9-13 July, 2002) 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…
めずらしく AOP の話題じゃないけど・・・ パターン認識の分野を深く理解する一つの方法は、単に誰かが提案している手法を使ったり実験してみたりすんじゃなくて、自分で新しい手法を生み出そうと考えてみること、だと思った。 ある手法(たとえば、バックプ…