netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-04-03 [長年日記] ▲
_ [論文]属性ベースの(AspectJの)Join Pointで指定すると問題が起きる例 ▲
Donal Lafferty: Avoiding Incorrect and Unpredictable Behavior with Attribute-bassed Crosscutting.
Proceedings of ACP4IS, Chicago, Illinois, March 2005.
.NET用に言語非依存のAOPフレームワークを作っている人らしく,AspectJなどのメソッドの属性などでポイントカットを指定する方法だと,SML.NETなど一部の言語で,ポイントカットにマッチしてしまうような作業用メソッドがコンパイラによって生成されてしまうことがある,というもの.で,アトリビュート(メタデータ)をメソッドごとに付加した方法だったら,Join Pointが勝手に増加しないので無難だよ,というふうに主張している.
_ [論文]Pointcut記述のマッチ可能性の計算量 ▲
Karl J. Lieberherr, Jeffrey Palm, Ravi Sundaram: Expressiveness and Complexity of Crosscut Languages.
Proceedings FOAL, Chicago, Illinois, March 2005.
AspectJにおけるポイントカットやDemeterJにおけるインスタンス探索を,コールグラフやインスタンス関係のグラフからマッチ対象を選択する "Selector" として考える.このとき,Selectorが特定のノードに常にマッチする場所を見つけられるか,1つもマッチしないことが調べられるか,といったことが最適化時に重要となる.
で,アルゴリズムの計算量を調べたら,基本的には,intersectionとnegationを使わなければ,多項式時間でよく,それ以外でも一部多項式時間で解ける問題があるらしい(それ以外はNP完全).
面白いところは,AspectJとDemeterJとをグラフ選択問題として共通化してるところ.AspectJで,コールグラフ上で
call(void f()) & !cflow(void g())のようなメソッド選択の式を,DemeterJを使って
from main() bypassing g() to f()のように置き換えることで negation や intersection を取り除いて多項式時間の問題に帰着できるらしい.
2005-04-04 [長年日記] ▲
_ 宅配便 ▲
家で待機して荷物受け取り.最近といってもかなり前からだが,某宅急便は荷物IDさえ分かっていれば配達が現在進行中かどうか(家で待機している必要があるか)調べられるところが便利になったなーと思う.半日単位くらいだからまだまだという気もするけど.
_ 在学証明書 ▲
手続きに必要な在学証明書を取りに,基礎工の証明書自動発行機のところへ行ってみたら,再起動画面で止まっていた.教務の人に言われて理学部へ行ってもやっぱり停止していたので,サークル棟2階の学生センターへ行ってみたら,自動発行機の新型(?)が2台用意されていて(1台は奥の柱の影で見つけにくかったが),順調に動作していた.成績を知りたい学部生が行列していたので微妙に待たされたが.
_ [日記CGI]tDiary 2.0.1 ▲
3月31日付けでアップデートが出ていたので,適用.設定ファイルが標準で dot.htaccess とか tdiary.conf.sample とかなっているので,単に上書きしたら設定ファイルだけが移行するようになっているので楽.
…と思ってたら,手で変更した css まで上書きしてしまったので復旧.
_ [論文]AspectJのバイトコードをスライスする ▲
Davide Balzarotti, Antonio Castaldo, Mattia Monga: Slicing AspectJ Woven Code.
Proceedings of FOAL 2005, Chicago, Illinois, March 2005.
AspectJの出力バイトコードに対してスライス計算すればいいよね,という話.やりたいことが,この人たちの場合は最終的にアスペクトの影響度合いを調べたいっぽいので,それなりに使えそう.難しいのはバイトコードのうちコンパイラで生成されたコード(特にポイントカットのマッチ処理やインタータイプ宣言)からソースへマッピングしなおすところだと思うのだが,そのあたりはやはり対応できていない様子.
_ [論文]未来を含むイベント列にマッチするポイントカット ▲
Karl Klose, Klaus Ostermann: Back to the Future: Pointcuts as Predicates over Traces.
Proceedings of FOAL 2005, pp.33-38, Chicago, Illinois, March 2005.
実行トレース=イベント列に対して,イベント間の時間的関係でポイントカットをマッチさせるとき,未来に発生するイベントへの言及も許可したようなポイントカット記述言語を考えてみました,という変わった論文.
「Aが呼ばれて,将来Bが呼ばれるなら」という条件が書けるが,矛盾が起きるのを防ぐために,アスペクトが自分自身や,自分より以前に動作した他のアスペクトに影響を与えてはならないという制約が付く.また,「将来Bが呼ばれるなら」の可能性をどこまで広げていいかがネック.連続したメソッド呼び出しくらいなら許せる気もするが.
今のところ実装がかなり制限つきで,キラーアプリケーションもないらしいが,アイディアのユニークさはすごいところ.
2005-04-06 [長年日記] ▲
2005-04-07 [長年日記] ▲
_ [work] AspectJ入門用(?)ドキュメント ▲
現在,ソースコードのサンプルも含めると25000字くらい.A4で1段組で25ページ.けっこう増えてきた.
AspectJのインタータイプ宣言の基本であるメソッド・フィールドの定義はJavaのメソッド宣言によく似ているので,説明がすごく楽だということ発覚.
_ [論文]アスペクトの状態遷移モデル ▲
Mark Mahoney, Tzilla Elrad:
Modeling Platform Specific Attributes of a System as Crosscutting Concerns using Aspect-Oriented Statecharts and Virtual Finite State Machines.
Proceedings of AOM 2005, Chicago, Illinois, March 2005.
基本の状態遷移を Actual Event/Actual Action として,Actual Event を仮想状態機械への入力 Virtual Event に,仮想状態機械の出力 Virtual Action を Actual Action や Actual Event にマップすることで複数の状態機械を連動させて動かす方法の提案.Virtual/Actual のマッピングは開発者の誰かががんばって記述する.
実行コンテキスト(主にはplatform dependentな部分)の組み合わせによる状態数の爆発を防いだりはできる?
_ [論文]Join Point 情報をUMLに持たせる ▲
Maria Tkatchenko, Gregor Kiczales: Uniform Support for Modeling Crosscutting Structure.
Proceedings of AOM 2005, Chicago, Illinois, March 2005.
UMLにおいて,Operation(クラス図のメソッド)やSequence(シーケンス図のメソッド実行中を表現する部分)などに,複数の図の間で共通しているJoin Pointを持っているかを情報として持たせて,要素間の相互リンクを自動的に張る.リンクを張ってから,何らかの調査スクリプトなどを走らせるのだが,Join Point の情報しか拡張してないのでツールサポートも楽,ということになるらしい.いまいち感覚がつかめてないが.
2005-04-08 [長年日記] ▲
_ [AspectJ] AspectJ1.5M2リリース ▲
JDK1.5の構文とannotationをサポートしたバージョンがとうとうリリース.AJDTも(開発版だが)Eclipse 3.1M6+AspectJ1.5M2用の新バージョンが登場.
書いてる記事もこれに合わせて書きたいところが出てきた.annotationとか特に.
_ [work] Zaurus SL-C3000 + CFXGA ▲
「ザウルスショット」でスクリーンショットを取ってZaurusへ転送する作業自体は自動化されていたが,PowerPointファイルをいちいちスクリーンショットを撮るのは面倒.で,印刷イメージを1ページごとに画像化してZaurusに転送することもできるのだが,そうするとページごとに余白が生成されてスライドの上下左右に微妙な空白が出現してしまう.スライドの背景に色や罫線を使っている場合,これが目立ってしまうので,スライドのテンプレートに注意が必要そう. CFXGAが出力できる画像自体は640x480または800x600で,プレゼンツールは画像を勝手に縮小して表示するらしい.どちらかというと,集めた雑多な情報をみんなに見せたいとき用か. もしスライドを出したい場合には,800x600環境で手作業でスクリーンショットを撮るのが無難?1280x1024なディスプレイでしか試してないので,普通のプロジェクタだとあまり気にならないのかもしれないが…. ここを見ると,PDF/PostScriptから画像変換とかしている._ [work] ppt2png ▲
PowerPoint のスライドオブジェクトが持っている Export メソッドに,slide.Export('hoge.png', 'png', 800, 600);
とか渡すと画像変換できること判明.
これで作った画像を Zaurus プレゼンテーションに食わせてみたら,それなりの品質だったので,Zaurusでプレゼンするのをもう少し検討する気になってきた.
ザウルスショットを使った場合,解像度を変更する必要があって,BMPかJPEGしか選べないのに対して(印刷キャプチャは余白が入るので今のところ論外),好きなサイズが選べてPNGも作れるので,任意の枚数・サイズで自動的に画像化するツールとしておけば Zaurus に転送する以外にも使えて,けっこう便利な小道具になるかなーと期待して,時間があったら作ってみることにする.
2005-04-10 [長年日記] ▲
2005-04-14 [長年日記] ▲
_ [work] Zaurusでプレゼンテーション ▲
Zaurus+CFXGA を輪講で使ってみた結果わかったのは,スライド切り替え速度が遅いので話ながらスライド切り替えるときに妙に間があいてしまうし,質疑応答などのときにもうまく移動しないと応対が難しそう,ということ.また,机の上に置いて使わないと,ケーブルの重みのコネクタ部分への負荷が心配.スライドへの書き込みなどは使ってないので何とも言えず.
あまり頻繁にスライドを移動しないような場合や,設置してスライドをひたすらループさせるようなデモなどでは,普通に使えそう.
_ [論文] 関数の呼び出し関係の類似性を使ったコード位置の移動等の認識 ▲
Michael W. Godfrey, Lijie Zou: Using Origin Analysis to Detect Merging and Splitting of Source Code Entities.
IEEE Transactions on Software Engineering, Vol.31, No.2, pp.166-181, February 2005.
輪講で紹介された論文.バージョン間で,関数が統合されたり分割されたりソースのどこかへ移動したりを検出するのに,関数の名前,引数の名前,呼び出し先・呼び出し元の集合の共通集合の大きさを使うとしている.
呼び出し関係の類似性という考え方はどこかで使えるかもしれないのでメモしておく.
_ [論文]効率的なグラフ解析ツール ▲
Dirk Beyer, Andreas Noack, Claus Lewerentz: Efficient Relational Calculation for Software Analysis.
IEEE Transactions on Software Engineering, Vol.31, No.2, pp.137-149, February 2005.
ソフトウェア分析では,ソフトウェアの要素をグラフにマップして解析することが多いので,大規模なグラフから性質を解析するためのProlog風な印象の言語CrocoPatを作ったという話らしい.
ノードやノード間の Relation を Binary Decision Diagram を使ってエンコードして,必要な操作をすべて BDD 間の演算として定義している.
言語→言語で書けるプログラム例→実装上の工夫→パフォーマンス評価,といった感じ.実装については,Relation を BDD でエンコードしてあとは高速な演算用ライブラリを作った,という感じで,TSEのわりに短くまとまっている印象がある.
2005-04-19 [長年日記] ▲
_ [AspectJ] annotationを使ってみる ▲
記事執筆用に初めてannotationを使ってみた. annotation って実は "@hoge" とかってソースでいきなり使っていいのかと思っていたけど,実は定義が必要だったらしい(annotation typeと呼ぶらしい).public @interface logged { }といった適当な java ファイルを作ってコンパイルして,classpathに配置しておく(参照さえできればいいので一緒にコンパイルしてもOK).
execution(@logged * *.*(..))
でロギングを実行するようにしておくと,ログを取りたいときにポイントカットを毎回作らず,ログを取りたいメソッドの頭に "@logged" を付加するだけでよくなる.
デバッグ用小道具なアスペクトを手元にそろえておくと,実は作業がすごく楽になるのかも.
2005-04-21 [長年日記] ▲
_ [AspectJ]サンプル作り ▲
記事掲載用のサンプルをひたすら作る.モジュール化してうれしい例にしないといけないところが難しい.それにしても,AspectJ 1.5M2は,Genericsやannotationもちゃんと使えるし,エラーメッセージもちゃんと出るしで,前に使っていた1.0の時期に比べるとかなり快適になった気がする.
_ [論文]Early Aspect アプローチの分類 ▲
Jethro Bakker, Bedir Tekinerdogan, Mehmet Aksit: Characterization of Early Aspects Approaches.
Proceedings of Workshop on Early Aspects 2005, Chicago, Illinois, March 2005.
過去の Early Aspects で登場した要求分析〜設計段階でのアスペクト識別の方法について整理した論文.Early Aspects 関連で調べるときには開始地点としてよさそう.
アスペクトのモデリングは詳細設計レベルで行っているものはあるが,Early Aspect に対して詳しく行っているものはないとか,また取り出されたアスペクトについての評価も行われていないとか,色々研究でまだカバーされてない範囲について言及している.
2005-04-22 [長年日記] ▲
_ [hyCalendar]印刷にバグ ▲
印刷時,フリーメモ欄を印刷しようとすると,アクセス違反でこける.明示的にアクセス違反だと出ない(ウィンドウがモーダルのはずなのに後ろに移動する)で怪しげな状態になる.
マルチドキュメント対応したとき(Singletonを解除したとき)に,Document.getInstance
するかわりにオブジェクトの参照を取得してくる処理がどこかにすっ飛んだらしい.
修正は 1.0.1 としてリリースの予定.
_ [hyCalendar]1.0.1リリース ▲
がんばってドキュメントも更新したところで,ちゃっちゃとリリースすることにする.
_ [授業]PBL2,ゼミA ▲
PBL2年生配属の中に2人ほどOUCCな人が混じってたのを発見.でも,基本的に学生にお任せ状態なので楽.
ゼミAのほうは,先生がいないので代理で担当で,アンチパターンの概略についての説明を聞く.あまりまじめに読んだことなかったので,わりと勉強になった.Silver Bullet=銀玉,Design Forces=設計力,という微妙な訳が出現したけれど,それ以外はわりと素直に聞けた気がする.Design Forces は,訳し方が難しいなーと思って調べてみたら,[PDF]Happy Squeaking!! − オブジェクト指向再入門 −では,問題から生じる様々な力および制約である,通常はトレードオフを発生させる,といった書き方をしていた.
_ ozuma [お久しぶりです.元ペーゲー研のおーすみです. さっそく使ってみましたが,存在しないフォルダを出力先に指定するとエラー..]
_ てぃる [お久しぶりです. 10分くらいいじってみたらディレクトリ自動生成ができたので,バージョン上げておきました.まあ,あっ..]