«前7日分 最新 次7日分» 追記

netail.net

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

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


2005-10-09 [長年日記]

_ [hyCalendar] プリンタでの印刷ミスへの対策

期間予定の直線の描画だけが消えるという報告があったので,調査した結果,Printer.Canvas.Font.PixelsPerInch の値によって線の太さを調節している処理で,もし,その値が正しく返されていなかったら,実は直線の描画がまったく起きない可能性があるということが判明.で,いちおう対策はしてみた.もし,それ以外が原因だったら,もう打つ手なし.

_ [お出かけ]オフ会@なんば

オフ会といっても,前日の晩に連絡があって大阪近郊で4人集まって遊んできただけではあるが :-)

たまたま御堂筋パレードが開催されてるところを通過したので,ちょっとだけ見物もしてきた.


2005-10-07 [長年日記]

_ [論文]lexical chain を使ったアスペクトマイニング

David Shepherd, Tom Tourwe, Lori Pollock: Using Language Clues to Discover Crosscutting Concerns.

Proceedings of Workshop on Modeling and Analysis of Concerns in Software (MACS 2005), St. Louis, MO, USA, May 2005.

lexical chain というのは,意味的に関連した言葉の集合(closeとendとlastとか,confirmとcheckとか)らしい.計算方法自体は既出のものを使って,ソースコードのコメントやフィールド名,メソッド名を取ってきて単語単位に切り分け,関連を持つ言葉同士をグルーピングして,その言葉が複数のクラスに含まれているようなら横断的関心事に関連する可能性があるのではないか,といっている.

実験では,57000の単語から700個の chains を得ているが,とりあえずそれらを手で調べた結果,出力された chain のうち,depth と shallowest のようにクラスとしては直接表現されていないような言葉のグループであったり,様々な形式(複数形とか過去形とか)で多数の場所に言葉が出現している,といった特徴を持っているものについては,有用な情報を含んでいることが多いようだと筆者らは判断している.

他の(関数のfan-inなどで当たりを付ける)手法と組み合わせれば役立つかもしれない.欠点は,単語間の意味的な距離を算出する方法にコストがえらくかかるらしいこと(重複を排除した単語数に比例).

_ [ツール] tex2text を少しだけ改良

APSEC 原稿をスペルチェッカ(Microsoft Word だけど)にかけるときに残っていた \item を除去する処理を追加しておいた.


2005-10-06 [長年日記]

_ [work] ESS 2005の参加チケット到着

交通手段の確保を忘れていたので,とりあえず行きの飛行機だけ押さえた.初日はMDDロボットチャレンジを昼から見る予定.帰りは新幹線なのでまた後日確保することにする.

_ [work] リフレクションでの private メンバへのアクセス

一昨年,去年の課題は回答まで全部公開してしまっているので,今年も新しい材料を作る.

テスト駆動型開発をちょっと試してみているが,abstract クラスをテストするにはモックオブジェクトを適当に作るとか,テストのためにちょっと無理してるような気がしなくもない.

テスト対象の private メンバーの状態を調べるためにprivate フィールドの状態を調べる方法を試してみたが, "private なメソッドは accessible にできないよ" とエラーが出た.おかしいなーと思ったら,SecurityManager で private への reflection アクセスを禁止できるという記述があったので,どうも SecurityManager が標準で ON になっている,と思われる.

個人的には,setAccessible(true) するのと,AspectJで getter/setter をインタータイプ宣言するのと,どちらがマシなのか気になる.


2005-10-05 [長年日記]

_ [ツール] Tortoise SVN のセットアップ

前のPCで使っていて,しばらくツール開発から離れていたので,いまさらながらインストール.前のPCでローカルに作ってたリポジトリを持ってきたら,subversion と bdb のバージョンが合わない(?)といったエラーが出てきた.

cygwin の subversion などもかなり古かった(今はもう1.2.3が出ているのに1.1系だった)ので,一回リポジトリを再構築してみた.

svnadmin dump Subversion/ > dumpfile.txt # 情報のエクスポート
Subversion/ ディレクトリを移動
cygwin の subversion をアップグレード
TortoiseSVN から新しいリポジトリ作成
  (このとき,ついでに bdb をやめて fsfs にした)
svnadmin load Subversion/ < dumpfile.txt

_ [論文] アスペクトが与える影響をどう表示するか問題

Wesley Coelho, Gail C. Murphy: ActiveAspect: Presenting Crosscutting Structure.

Proceedings of Workshop on Modeling and Analysis of Concerns in Software (MACS 2005).

AJDTのツリービューとかでは横断的関心事の構造は見づらいし,Composition patterns (下の論文)の記法ではアスペクトが実際にどこに接続されているかが分からないので困る.ということで新しくビューアを作りたい,というショートペーパー.

基本的にはアスペクトが貼りついている先(callポイントカットならメソッドの呼び出し側と呼び出し先のクラス)と,その継承階層,アスペクトが直接参照しているクラス,ぐらいを関係図として示す.また,対象の数が多いときはパッケージ単位などでクラス表示をまとめる,といったアイディアも示している.

グラフ表現だといかに要素数が増えるのを防ぐか,という問題がメインなのかも.

_ [論文] UML的表現でアスペクトを書く

S. Clarke and R. J. Walker: Composition patterns: An approach to designing reusable aspects.

Proceedings of International Conference on Software Engineering 2001 (ICSE 2001), pp.5-14, 2001.

昔読んだはずなのにメモに入ってなかったので読み直し.

横断的関心事について図で記述するために,クラス図とシーケンス図を使って,横断的関心事のテンプレートを書こうというもの.ステレオタイプ「subject」としてアスペクトの名前を書き,包含する要素としてそのアスペクトに参加するクラス(そのクラスが持つメンバーのリスト)と,そのクラス群が起こす動作のシーケンス図を記述する.

クラス図側が,クラスがどのようなメンバーを持っているべきかという制約の記述とインタータイプ宣言を担当し,シーケンス図側が,そのメンバーの振舞い(pointcutとアドバイスの動き方)を指定する.

この状態で,アスペクトの中の各クラスやメンバー名に,実際にどのクラスやメソッドが該当するかを bind する.

アスペクトを,結合対象のクラスから分離して記述するのは,接続対象が多いロギングなどのアスペクトについては有効だと思われる.ただ,bind 結果の具体例くらいは一緒に書き添えないと理解が難しいかもしれない.


2005-10-04 [長年日記]

_ [work] AO-ASIA 用の position paper とか

作れるかな?と思って過去の資料を漁ると,AOSD2004にポスターで喋るはずだった(が風邪でダウンしてた)ネタが残っているのは発見.APSEC 本会議で発表があるのに position paper の発表まであるとえらいことになりそうなので,まだ確定せずに置いておくことにする(締め切りは20日).

そういえば,APSEC で発表する人は registration を12日までにしてね,という通知が来たが,まだ APSEC の registration がオープンする気配はない.


2005-10-02 [長年日記]

_ [お出かけ] 沖縄料理を食べてきた

梅田にある沖縄居酒屋 轟屋というお店でご飯を食べてきた.沖縄音楽のライブ演奏が19時過ぎたあたりにあって(21時頃にもう1回やるようなことを言っていた),かなり雰囲気の良い店だった.

帰りに阪急梅田駅の成城石井に久しぶりに寄ってみたら,シャトー ディケムのワインを冷蔵棚に発見.90年代なのでまだ安価なものとはいえ,それでも手が出せるような値段ではないわけですが…….

_ [論文]振舞いモデル記述に基づいたデバッグ

Donglin Liang, Kai Xu: Debugging Object-Oriented Programs with Behavior Views.

Proceedings of AADEBUG 2005.

読んだのはAADEBUGに submit されたものに対応する technical report.

デバッグをするとき,普通はプログラムのどの機能がうまく動かないということがわかっているので,「この機能はこう動くはずだ」というモデルをあらかじめ記述しておき,その通りに動いているかどうかを検査しよう,というアプローチ(Scenario-Based Debugging というらしい)の論文.

記述されるモデルは,いわゆるオートマトンで,プログラム実行時のイベント(メソッドのenter/exit)で状態遷移を起こし,そのときに合わせて変数の値の記録や assert 文による検査を実行する.

モデル記述用の言語では,AspectJでのメソッド名のワイルドカードのように,いくつかのメソッドを取りまとめて同じイベントとして扱ったり,状態遷移の条件そのものと,それに対応した処理の実行とを区分したりもできるようになっている.このあたりは,アスペクト指向プログラミング言語に似ている(Event-Based でプログラムをとらえているから当然かもしれない).ただし,デバッグという用途の都合上,特定のプログラム文に到達する,というコード行番号の指定や,プログラム実行の停止命令なども使えたりする.

モデルを記述しておきさえすれば「ユーザのログインが終了したところでブレークポイントで停止」といった意味のあるブレークポイント設置が容易になる(しかも他の開発者と共有できる)ので,個人的にはけっこう面白いと思う.

_ [論文]アスペクトが影響を与えるクラスのパラメータ化

Jordi Alvarez: Parametric Aspects: A Proposal.

Proceedings of Workshop on Reflection, AOP and Meta-data for Software Evolution, 2004.

アスペクトが貼りつく対象のクラス集合をパラメータ化しておき,そのアスペクトを継承した具象アスペクト側でクラス集合を設定できるようにしてはどうか,という提案.

AbstractFactory パターンで,指定したクラス群に対するファクトリメソッドを生成する方法を例として取り上げている.アスペクトの中のメソッド名の一部に,貼り付く対象クラスの名前などを入れたい場合に有効に働く様子が示されている.XVCLなどのテキスト処理だけで実現するものとは,クラスの親子関係の制約などを書けるようになっている点が異なる.

_ [論文] 頻繁に更新されるファイルほど複雑である(?)

Amdrea Capiluppi, Juan F. Ramil: Change Rate and Complexity in Software Evolution.

Proceedings of Workshop on Empirical Studies of Software Maintenance, 2004.

各リリースごとにファイルが変更されたかどうかで変更回数をカウントし大きい順に並べると,大きいほうにサイズの大きいファイルが固まり,またサイクロマチック数が大きい関数が固まる,ということを計測した論文.「複雑な関数ほど変更もよく起こる」と主張したいみたい.

まだ予備実験段階のようで,単一プロジェクトが相手で,またファイルごとにサイクロマチック数を合計して比較したりとちょっと怪しい評価の部分もある.複雑な関数(最新のリリースにおけるサイクロマチック数で上位24個)がどんどん複雑になる様子がグラフで示されていたりする.


2005-10-01 [長年日記]

_ [work]今年の授業でも

Eclipseの話と,JUnitを使った単体テストの話と,AOPの話をすることになりました.喋ること自体はそんなに問題ではないのだけれど,使う環境(Eclipseのバージョンとか)をまた選定してテストしておかないといけない.ちょうど一昨日に出たばかりの Eclipse 3.1.1 にする予定.

_ b-mobile + りなざう SL-C3000

いつもノートPCを使っていて,りなざうからは使ってないなぁ,と思って,とりあえず試してみた.設定どうするんだろう,と思ったらスロットに挿してダイヤルアップモデムとして使えば(ダイヤルアップ先の電話番号・ユーザ名・パスワードを添付の説明書に書いてあるとおり設定すれば)いけるみたい.

30時間ライセンスなるものも発売されているようで,旅行のときなどにちょっとだけ使うという場合には役立ちそう.