netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-01-17 ▲
_ [日記CGI] 「リンク元」設定の変更 ▲
いわゆる検索エンジンからこのページへ来る→「リンク元」としてキーワードが載る→そのキーワード自体を検索で見つけてさらにこのページへ来るという動きが気になったので,「リンク元」として表示しない正規表現として検索エンジン系のを一通りを入れてみた.
_ [ゲーム] "鉄人" Mangband ▲
Ironman MAngband という企画の結果が出ていた.要は1ヶ月で得点・フロア数を競うというものだったらしい.ランキングで名前を選ぶと,そのキャラクターの dump 結果("C" で表示される情報)が見られる.他人のアイテムやら銘の刻み方が分かって面白い.
_ [論文] コード変換を使用してのアスペクト抽出リファクタリング ▲
Binkley, D., Ceccato, M., Harman, M., Ricca, F. and Tonella, P.: Automated Refactoring of Object Oriented Code into Aspects.
Proceedings of ICSM 2005, pp.27-36.
アスペクトマイニングなどで,アスペクトにするとよさそうな範囲がαとωというマークで括られているとき,そこに適用可能なリファクタリングの種類を選び出し,そこから開発者が実際にどれを適用するかを選択し,機械的な変換によってアスペクトを生成しよう,という手法.
リファクタリングの種類としては,メソッドの先頭あるいは終端のコードを取り出す Extract Beginning/End,あるメソッドの前後に登場するメソッドを取り出す Extract Before/After Call,条件文を取り出す Extract Conditional,Return文の前に実行されるコードを取り出す Pre Return,ラッパーオブジェクトを追加する操作を取り出す Extract Wrapper の5種類.
リファクタリングを適用可能かどうかは,TXLという言語を使ってルール記述を行なっている.たとえば Extract Before Call なら,「α; 文; ω; メソッド呼び出し;」という列に対して「α(BC適用可能); 文; ω; メソッド呼び出し;」といったようにアスペクト適用可能マークを追加するプログラム変換として記述している.そして,適用可能なリファクタリングのマーキングが複数付いていたら,開発者が最大で1つ選ぶ(適用しないという選択肢もあり).
実験では,JHotDraw をこれでリファクタリングをどんどん適用したら,Extract Begin/End,Extract Before/After Call,Extract Wrapper がほとんどを占めていたらしい.また,お互いに関連しない(DEF-REF 順序に関係ない)文を入れ替えることが必要なケースは2割程度.
リファクタリングの適用は,それぞれのコード片に対して個別に作用しているようなので,その後でうまく一般的なポイントカット定義を作ってアスペクトをまとめないと,小さなアスペクトが大量に生成されるだけのようにも見えた.