netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2002-10-01 古い日記からの変換データ ▲
_ 読書 ▲
「紅茶の辞典」「魔法のお店」「魔幻境綺譚」を読み終え.
「紅茶の辞典」は作った人の紅茶への思い入れが分かる.残り二つは,以前も読んだことがあるものだけど.魔幻境綺譚のほうはその悲しいエンディングがちょっと好みだったりしてつい何度も読み返してしまう.
_ 論文 ▲
ASE2002 開催の Workshop on Declarative Metaprogramming (DMP)の論文をチェック.
Robert E. Filman and Klaus Havelund: ``Realizing Aspects by Transforming for Events''
アスペクトを作るのに必要なイベントの種類をまとめている論文.AspectJ の join points では十分ではないらしい.この論文,どんなふうにアスペクトが使われているかをまとめてくれているので,参照するには便利かもしれない.
Tom Tourwe, Johan Brichau and Tom Mens:``Using Declarative Metaprogramming To Detect Possible Refactorings''
クラス間の関係ルールを論理型言語で記述しておいて,リファクタリングなどの作業中にルール違反を検出しようという試み.実はこの手の制約(たとえば Law of Demeter の厳守)を記述するようなプログラミング言語というのは新鮮な感じ.もっとも,正確に制約を書くのは難しそうだけど….
Gopan Gupta:``A Language-centric Approach to Software EngineeringDomain Specific Languages meet Software Components''
DSL(Domain Specific Language)をコンポーネントの高レベルラッパーとして使う,開発者はDSLさえマスターすればコンポーネントのインタフェースを直接触る必要はないよね,という話.アプリケーションからのトップダウン的に述語を生成していってDSL のプロトタイプを作り,最終的にコンポーネントでの表現に落としていく論理型プログラミング的な扱いになる.個人的にはいまひとつかも.
2003-10-01 古い日記からの変換データ ▲
_ 論文 ▲
GPCE2003 その2.
Mariano Cilia, Michael Haupt, Mira Mezini, Alejandro Buchmann:The Convergence of AOP and Active Databases:Towards Reactive Middleware
active database における Event-Condition-Action (特定のイベントに対して条件をテストし,対応するアクションを取るようなデータベース)は AOP に類似しているメカニズムである.しかし,双方で使っている Terminology はまったく異なっている.
対象プログラムを書き換える(invasiveness)度合いについて,active database は non-invasive,AOP は invasive (AspectJ), non-invasive (初期のPROSE, JPDA), Aspect-aware runtime environment (AspectS),などと分類している.
この作者たちは,Active Database と AOP の間のミドルウェアとして Aspect-Oriented Run-Time Architecture というのを作りたいらしい.それ自体はともかく,色々な AOP と Active Database がまとめられているので参考文献として良いかも.active database 知らない人も多いだろうから,個人的には貢献度は高いと思う.
_ 論文 ▲
GPCE 2003 の論文読み.といっても,Proceedings が LNCS で PDF が取れなかったので筆者が PDF を配ってた二本だけ読む.
Jeff Gray, Ted Bapty, Sandeep Neema, Douglas C. Schmidt, Aniruddha Gokhale, Balachandran Natarajan:"An Approach for Supporting Aspect-Oriented Domain Modeling"2nd International Conference on Generative Programming and Component Engineering (GPCE2003),
モデル+制約言語から,制約付きモデルを導出する.Join Point としてモデル内のノード,Pointcut Designator として宣言的記述(モデル内の位置を指定する),アドバイスとして「concern に関わっているよー」という strategy あるいは heuristic の情報が埋め込まれる.コードジェネレータと組み合わせて(C++限定だが)Strategy に対応したコードを生成する.
モデル自体は general で,domain-specific な weaver を使うというアイディアらしい.weaver 作る手間が高そうだ.
_ 論文 ▲
Pascal Costanza:Dynamically Scoped Functions as the Essence of AOPについての議論が続いてる.
AspectJ の pointcut の考え方では,cflow を使って「呼び出しの上のほう」と「下のほう」のそれぞれ独立に定義されたイベント間を接続できるが,dynamically scoped な考え方では「"real" cflow ではなく "predicted" cflow を対象にしている」という主張が出ている.
……まだ議論は続きそう.Kiczales が Non-Invasiveness (Obliviousness) は重要だ,というのを繰り返してるところを見ると,そこが AspectJ の設計時のキーだったらしい.
2004-10-01 古い日記からの変換データ ▲
_ [work]動的解析のスケーラビリティ ▲
AspectJ プログラムの実行時情報を集計するツールを再構築中.Ruby スクリプトでプロファイル結果→イベント列→集計情報→頂点集約→DOTという段階を踏んで Strategy パターンを適用していくインフラっぽいスクリプトを構築してみた.
生成された DOT ファイルを Graphviz のコマンドでコンパイルするところまでは自動化.コマンドは次の通り.
dot -Tsvg -o outputfile inputfileで,とりあえずメソッド呼び出し関係とメソッド間のデータ依存関係(1個以上の引数を渡しているメソッド呼び出し,void 以外の戻り値,フィールド経由のデータ依存関係)を抽出するするスクリプトを作って動かしてみた.
800行のコードの実行履歴が4MB程度で,データ依存関係は10万くらいの辺数.さすが生データというべきか.効率の良いフィルタを作らないことには何とも使い物にならない.動的スライスの実装とかしている人たちはどうやって実装してたのだろう…….
2005-10-01 ▲
2006-10-01 ▲
_ 新PC移行がほぼ完了 ▲
わりとつつがなく進行して一安心してます.ぼちぼち,ASE出張関連のことを書いていきます.
新PCでは,外付けUSBハードディスクが電力不足のせいか,接続してもカチカチと変な音を立てるだけで認識されない…….ディスク駆動用の外付け電源は持ってこなかったので,今後半年間,バックアップデバイスはSDカードとネットワーク上のどこぞのサーバとなりそうです.
_ [hyCalendar] hyCalendar 1.4.1 となる予定のバイナリ ▲
1.4.1バイナリのみを公開してみました.いちおうテストはしてるつもりですが,導入前のバックアップは必ず取ることをお勧めします.
変更点は次の5点です.
- 設定ダイアログの「状態の保存」欄に,起動時に開くタブの枚数を設定できるようになりました.最大で1年先まで自動で開けます.タブの枚数を増やすと,その分起動時は少し重くなるかもしれません.
- 日付メモに「追加貼り付け」機能が増えました.CTRL+SHIFT+Vで,日付メモの末尾にテキストを追加することができます.
- 起動時のプロセスの高速化を試みました.設定ダイアログなどのウィンドウを使う瞬間までロードしないようにしたので,今までより起動が少し速くなり,各ダイアログの初回の表示がその分遅くなっているかと思います.筆者の環境では,フルにロードすると16MB程度メモリを消費してますが,起動後,特にほかにダイアログを使わなかった場合,メモリ消費量は10MB程度にとどまります.高速化が体感できるかどうかは,環境に依存するかと思いますが.
- フリーメモの中のURLは自動でURLツールバーに項目として追加していたんですが,これをオプション設定(設定ダイアログの「ツールバー」タブ)にしました.さすがに機能ごと削ると誰かが困るかもしれないので,しばらくは残しておきます.
- 日付メモの最初の1行が空行であったとき,その空行がファイルを読み込んだときに消えてしまう問題を修正しました.
正式なリリースの日は,ドキュメント整備に時間をどれだけ割けるかに依存して決まります.例によって,すごく時間がかかるかもしれません.