«前の日(11-21) 最新 次の日(11-23)» 追記

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2002-11-22 古い日記からの変換データ

_ Bookmark Manager

文字コードフィルタ処理に使っていた TStringList が解放されておらず,メモリリークしていたことを発見.リークによる影響はほとんどない,と言いたいところだが,ノートパソコンは再起動する回数が少ない(スタンバイが多い)ので長期的に利用することを考えるとちょっと危険.

早めに次のバージョンを作ってしまったほうがよさそうだ.ゼミや研究の合間をぬって,ということになるが…….


2003-11-22 古い日記からの変換データ

_ ワイン

ジャック・デパニューのボジョレー・ヌーボーを飲んだ.けっこう香りが強くて渋い.ボジョレーってライトボディじゃなかったっけ?美味しいからいいんだけど.この分だと,フルボディと言われているワインがどうなってるか楽しみ.

_ Delphi

Deskbar のサンプルを読んでいたら,Delphi は Shift+CTRL+G で GUID 生成できると書いてあった.微妙な機能だ.

_ Delphi

Delphi から IDeskBand を叩くためのソースを公開しているところを発見.http://www.euromind.com/iedelphi/ie5tools/bandobjects.htm

TDelphiBand とかクラスになってる.すごい :-)

_ IDeskBand

デスクバーとして常駐するアプリケーションを作るにはIDeskBand を実装しておけばいいらしい.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/programmersguide/shell_adv/bands.asp


2004-11-22 古い日記からの変換データ

_ [Java]Generics の制限

Generics で型パラメータを static メソッドに与えようとしたら怒られた.また,instanceof でも比較対象に型パラメータを使えないらしい.

これらは,C++ template の場合と違って,型情報が実行時には落とされてクラス自体は1個しか存在しないためらしい.なので,型パラメータごとに Singleton なインスタンスを作ろうとしたりはできないらしい.

Singleton 問題を回避するのに,Factory パターンを使って型パラメータごとに Factory を1個生成して,それぞれの Factory が Singleton なインスタンスを管理するようにしてみた.


2005-11-22

_ [読書][AspectJ] アスペクト指向入門

千葉先生の本が出ていたと聞いて買ってみた.ちょうどアスペクト指向の授業を終えたところなので,タイミング的には少し遅かったけれど.「アスペクト指向は呼ぶ側のモジュールを再利用するための技術」という説明のしかたをしている部分は,そういう言い方もあるのね,とちょっと感心した.

アスペクト(アドバイス)間の干渉の問題についても少し触れられていたけれど,この問題は,実用性に影響を与えているというよりも,開発者にとっての「書いたプログラムがどういう順序で動くか良く分からないのは気持ち悪い」という心理的影響が大きい気がするこの頃.

アスペクトの Obliviousness によってクラス側にアスペクトのコードがまったく入らない気持ち悪さも,これに似ているかもしれない.アスペクトに書かれた処理を呼び出すためだけの不自然な文を入れるとかいった愉快なプログラマがいなければ,調査用のツールさえ一緒に使えれば大丈夫な気はする.オブジェクト指向でも,Delphi の一部のコンポーネントとか,Active := true; という代入文で,実はActive というのは手続きが関連付けられたプロパティなので処理が実行されるとかいうことがあるし.そういう言語仕様が元々ない Java の世界だから気にかかる度合いが強いのかもしれない.

_ [論文]コードクローン技術を使ったアスペクトマイニングの実験

Magiel Bruntink, Arie van Deursen, Remco van Engelen, and Tom Tourwe: On the Use of Clone Detection for Identifying Crosscutting Concern Code.

IEEE Transactions on Software Engineering, Vol.31, No.10, pp.804-818, October 2005.

横断的関心事の中には,モジュール化機構が存在しないから仕方なくあちこちに同じ実装をばらまいてしまっているものがあるはずだ,という仮定に基づいて,コードクローン検出ツール3つを使って,本当に見つけられるかどうかを実験している.

各関心事をあらかじめコード中に見つけておいて,クローン検出で出てきたものとつき合わせる.関心事もクローンも,プログラム行の集合ととらえて,手でマークをつけた行のうちどれだけがクローンに入っていたかで再現率・正確性を評価している.ただし,いくつのクローンを調べるかで,クローンとして検出されたクラス群のうち,正確性の向上に一番貢献するものから優先的に(greedy に)k個選び出している.

この選択のやり方でアスペクトを探した場合,手でマークをつけた情報に依存して正確性が決まっているので,マークがないコードに対するアスペクトマイニングでは,この性能を超えることはないだろう,と言及されている.マークつきでもログ記録は60%程度,エラー処理は40%程度しか見つけられない,という情報が,自動的なアスペクトマイニングの性能がどのくらい良いのか悪いのかを考える指標にはなりそう(ログ記録とエラー処理のどちらが相手かで,30%のコードを発見した,の意味合いがかなり変わる).

_ [論文] feature trace をリビジョンごとに作る

Orla Greevy, Stephane Ducasse and Tudor Girba: Analyzing Feature Traces to Incorporate the Semantics of Change in Software Evolution Analysis.

Proceedings of ICSM 2005, pp.347-356.

どのクラスがいくつのフィーチャーに参加しているかを not covered/single/group/infrastructural に分類するが,バージョン間での変化量を使って,機能の追加とか削除を識別しようという試み.

単純には,直前の変更で参加するフィーチャー数が増えてカテゴリが変わったならactivity をプラスに,減ってカテゴリを移動したならマイナスに,not covered に移動したら 0 にする.で,プラスなら新機能の追加か再利用が発生しており,マイナスなら機能が削られている可能性が高く,0なら obsolete になっている,といった判断をする.

実行してトレースをとって,特定のフィーチャー集合についての分析なので,クラスのカテゴリが変わるというのは非機能的要求の追加・削除が影響しているだろうと考えている様子.もちろん,実行で一度も触れられなかったクラス群に対しては何の評価も下すことはない.

カテゴリにランク値を与えて(not covered を0として始めて,infraが3)平均値とか今までの変化量の総和とかも計算しているのだが,変化量が 0 より大とか,今のところ,単純なフィルタとしての使い方しかしていない様子.