僕が言ったところで

Aspects as Implicit Connectors

アーキテクチャ記述言語(Architecture Description Languages: *1 )とアスペクトとの関係は? AspectJ を使えば Connection を書くのを、ArchJava みたいに明示的じゃなく、暗黙的にできる? 一応昔、ArchJava を AspectJ でエミュレートできないかを試し…

ソフトウェア開発の種類における AOP (or AOSD) の視点

ソフトウェア開発の種類を大雑把に(勝手に)分けてみると、以下の 3 つがあると思う。 アプリケーション開発 フレームワーク開発 プロダクトライン開発 それぞれの場合で AOP (AOSD) の技術を考えると、結構違いがある気がする。プロダクトラインが具体的に…

Asymmetry in Modular Units

英語が怪しいけど、、、 モジュールの単位として、対称というか非対称というか、一つの独占的なモジュールの単位(たとえばクラス)ではない、というのは、今後どちらの方向に進んでいくのだろうか。 AspectJ では、クラスとアスペクトが明示的にお互いは関…

Benchmark for Programming Languages

プログラミング言語のためのベンチマークってどう? ソフトウェア開発で重要で避けられない点の1つは、ソフトウェアの発展(Evolution)にあると思う。ということで、いくかの発展的な状況を集めて、それぞれの言語でどのような発展結果になるのかを、調べて…

Modularity in Crosscutting Concerns

英語が怪しいけど、、、 Crosscutting Concerns がモジュール化できない、とは具体的にどういう意味だろう? JBoss AOP とかその他の AOP フレームワーク(?)とかの存在を考えると、AspectJ のような AO 言語と、Java + 既存の技術を利用した AOP を実現す…

アスペクトとベースプログラムの関係

直感的には、アスペクトとベースプログラムの関係は、薄くしたほうが望ましいように思える。 しかし、具体的には、どのような理由からだろう? たとえば、Caesar では、クラスとアスペクトの明確な区別はない(クラスの中に、advice が書ける)。 さらに、ダ…

Grouping Advices

's' いるんかな? まあそれはさておき、、、 AspectJ での一つの面倒な点は、advice に対する advice を行いたい場合があるきがする。 before() : ... { beforeMethod(); // なんらかの前処理 method1(); afterMethod(); // なんらかの後処理 } before() : .…

上手い、ではなく、単に回避策

技術的な内容ではないけど、最近学んだこと。 僕の最初のデザインパターンの見方は、上手いやり方、だった。でも、色々と関連する最近の論文を読んでいて感じたのは(実際に、どっかに誰かが書いていたかもしれないけど)、上手いやり方ではなく、単に回避策…

Local Aspect

もし、アスペクトをインスタンス化できるとしたら、アスペクトの寿命はどう考えればよい? public void method() { startLog(); new MyClass().my(); // ログされる?? }public void method2() { new MyClass().my(); // ログされる }public void startLog(…

Application Framework Development with Dynamic Aspect

またまた、無駄に英語のタイトルだけど、ちなみに日本語で書くと「ダイナミックアスペクトによるアプリケーションフレームワーク開発」とかになる。ちょっと凄みがなくなるぜ。日本語だと。それはさておき、最近更新してた「AspectJ Tips」の AspectJ + cgli…

Aspect-aware Design or Aspect-aware Refactoring

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 に名前をつける?

よくわからんけど、必要最低限のメソッドだけを、特定のクラスに inter-type declaration したいという場合があるきがする。というのも、クラスの interface は必要以上に複雑になってほしくないから。 でも、どうやって特定のメソッドだけを選択して、inter…

Aspect-Oriented Framework Development: Dynamic AO Languages vs. Static AO Languages

今、 Stefan Hanenberg, Robert Hirschfeld Constructing Highly Adaptable Frameworks Using Aspect-Oriented Composition Techniques (実際に論文を見てみるとタイトルは「Applying Aspect-Oriented Composition to Framework Development - A Case Study…

アスペクト指向デザインパターンの適用の困難と恐怖: Visitor パターンの場合

今、ちょうどアスペクト指向な Visitor パターンを適用できる状態なんだけど、スムーズに悩むことなく適用できそうでもない。 この困難さ or 恐怖(先が見えない)の理由の1つは、設計空間の大きさ(or 選択肢の多さ)から来ているように感じる。主な選択肢…

Provided/Expected vs. Abstract: Caesar, ArchJava and Traits.

最近の目に付くプログラミング言語の特徴として、 Provided メソッド や Expected メソッドなんかがある。具体的には、Caesar[1] とか ArchJava[2] とか Trais[3] とかだけど(他にもあるかも)、この、Provided/Expected メソッドと Abstract メソッドの違…

Aspects as Crosscutting Concerns or Aspects as Context

英語が怪しいけど、まあ、無視して、、、 アスペクトの普通の見方は、Crosscutting Concerns を含むモジュール単位、みたいな雰囲気だと思うけど、それよりも or それに加えて、Context (文脈)を表すのがアスペクト、と考えるのも有効的かもしれない。 Aspe…

declare XXX

AspectJ では、declare XXX みたいなコードを書ける。AspectJ でサポートされている declare 宣言には、declare parents (既存のクラスに interface をとかを実装させる) とか declare precedence (アスペクトの優先順位を決める)とかがある(詳しくは「Th…

Aspect Interaction or Aspectual Messaging

`Aspectual' ってつければ何でもいいと思ってんのか! への回答は、え、うん、どーよ? AspectJ Tip: Chain of Aspect http://www.ncfreak.com/asato/doc/aspectj-tips/chain.html とか Caesar によるデザインパターンの実装 - Abstract Factory http://www.…

Aspect Group or Aspectual Inheritance

ある concern に対して、複数の実現方法(アスペクト)があるとすると、そのアスペクトは、その concern に対してのグループを形成していることになる? たとえば、ロギングの concern を考えてみると、ファイルにログするアスペクトとコンソールにログする…

Natural (Pure?) Classes, OO Framework-aware Classes or AO Framework-aware Classes

英語の怪しさは、さておき・・・ どうなっていればフレームワークでどうなっていなければフレームワークじゃないかの境界線は分からないけど・・・オブジェクト指向フレームワークの開発では、拡張できるようにクラスをそのようにしたりする、と思う。GoF の…

Decomposing Aspects

's' いるんかなあ? それはさておき・・・ Caesar によるデザインパターンの実装 - Abstract Factory http://www.ncfreak.com/asato/doc/caesar_dp/af.html#impl2 の「議論2」書いていて分かったことだけど、アスペクトの分割は、なんとかできるみたい。ただ…

AOP の有効性と AOP が解決する問題

タイトルがめずらしく日本語だけど、これは、英語での書き方がわからんかったからだ! ・・・とはかはさておき・・・ AOP が有効である、といわれるようなケースの問題を扱っているとき、その問題は、どのような問題なのかどうか。一般的に、AOP が解決する…

Open Classes and Aspect-Oriented Software Reuse or Weaving-based Software Reuse or Load time-based Software Reuse or Aspect-Oriented Software Composition?

いつものとおり、タイトルの英語が怪しいけど・・・ Open Class と階層拡張 http://www.ncfreak.com/asato/doc/openclass.html というドキュメントを書いていて気づいた or AspectJ を使い始めていたころから気づいていたことだけど、Open Class (or AspectJ…

AOP without Aspectual Polymorphism

デザインパターンの実装の視点から見た AspectJ と Caesar の比較 - Abstract Factory http://www.ncfreak.com/asato/doc/aspectj_caesar_dp/af.html を書いていて思ったことだけど、Aspectual Polymorphism ができる Caesar とできない AspectJ では、かな…

Implicit Aspects and Explicit Aspects

AspectJ を使い始めていたころの疑問の一つは、アスペクトがアプリケーションのコードの側に現れてもいいのかどうかということ。(特に AspectJ における)ロギングのようなアスペクトは、暗黙なアスペクトとして実装されて、実際のコードのには、現れる必要…

Large Scale Crosscutting Concerns and How to decompose it.

またもや怪しい英語だけど・・・それはさておき・・・ Caesar によるデザインパターンの実装 - Abstract Factory (http://www.ncfreak.com/asato/doc/caesar_dp/af.html#impl2) を書いてて感じたことだけど、大きな crosscutting concerns (例でいえばゲー…

Change Patterns or Evolution Patterns

リファクタリングとも関連するけど、調べたいことの候補に、Change Patterns あるいは Evolution Patterns ってのがある(僕が勝手に付けただけ。他にも同様のことがあるかもしれない)。具体的にいうと、プログラムに関する特定の要件や変更に対して、どの…

Factory Method and Crosscutting Nature

またまた、なんで Nature とかカッコつけて英語にしてんの? というのはもっともだけど、それはさておき、、、Abstract Factory を実装していたときにも気が付いたことだけど、Factory Method も Crosscutting な Concern に影響されるものなのだろうか。 ht…

Caesar + Decorator

deploy に、配列を指定できのかな、と。 deploy( decorators ) { // Decorator[] component.operation(); }ちょっと思っただけ。良いかも悪いかも不明。もしできたとしても、Decorator の実装にどれだけ影響あるかも不明。

Abstract Factory and Crosscutting Nature

Nature の使い方間違ってるかもしれんけど・・・それはさておき・・・、Caesar で Abstract Factory のサンプル 書いていて気が付いたんだけど、Abstract Factory を適用したくなる場合って、本質的に crosscutting concern 関連なんだろうか。少なくとも、…