netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-10-01 [長年日記] ▲
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-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-06 [長年日記] ▲
_ [work] ESS 2005の参加チケット到着 ▲
交通手段の確保を忘れていたので,とりあえず行きの飛行機だけ押さえた.初日はMDDロボットチャレンジを昼から見る予定.帰りは新幹線なのでまた後日確保することにする.
_ [work] リフレクションでの private メンバへのアクセス ▲
一昨年,去年の課題は回答まで全部公開してしまっているので,今年も新しい材料を作る.
テスト駆動型開発をちょっと試してみているが,abstract クラスをテストするにはモックオブジェクトを適当に作るとか,テストのためにちょっと無理してるような気がしなくもない.
テスト対象の private メンバーの状態を調べるためにprivate フィールドの状態を調べる方法を試してみたが, "private なメソッドは accessible にできないよ" とエラーが出た.おかしいなーと思ったら,SecurityManager で private への reflection アクセスを禁止できるという記述があったので,どうも SecurityManager が標準で ON になっている,と思われる.
個人的には,setAccessible(true) するのと,AspectJで getter/setter をインタータイプ宣言するのと,どちらがマシなのか気になる.
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などで当たりを付ける)手法と組み合わせれば役立つかもしれない.欠点は,単語間の意味的な距離を算出する方法にコストがえらくかかるらしいこと(重複を排除した単語数に比例).
2005-10-09 [長年日記] ▲
_ [hyCalendar] プリンタでの印刷ミスへの対策 ▲
期間予定の直線の描画だけが消えるという報告があったので,調査した結果,Printer.Canvas.Font.PixelsPerInch の値によって線の太さを調節している処理で,もし,その値が正しく返されていなかったら,実は直線の描画がまったく起きない可能性があるということが判明.で,いちおう対策はしてみた.もし,それ以外が原因だったら,もう打つ手なし.
2005-10-11 [長年日記] ▲
_ [work] APSEC 2005 registration ▲
APSEC 2005 Registrationがようやくオープンした様子.Author Registration 締め切りまであと1日.普通の参加者の人のEarly Registrationは,11月15日まで.
_ [ツール] MySCPでスクリプトを書こうとしたら ▲
MySCP コンポーネントを使って,某サーバ上で crond で生成しているファイルをダウンロードしてこようと考えていたら,実はリモートホスト上のファイル名の一覧は MySCP では取って来れないので,ファイル名を適切に生成するロジックをクライアント側で用意しないといけないことが判明.日付で生成しているから簡単ではあるけど,MySSHのほうが良かったかなぁ,と少し思ってしまう.
複数ファイルをダウンロードするには,ファイル群をワイルドカードで指定する以外には,ReceiveFile メソッドを何回も呼んでそのたびに再接続&ユーザ認証となってしまう様子.けっこう微妙.
2005-10-14 [長年日記] ▲
2005-10-18 [長年日記] ▲
2005-10-19 [長年日記] ▲
2005-10-20 [長年日記] ▲
_ ESS 2005 での賞とか色々 ▲
優秀賞(研究論文)が青木先生と青山先生のご発表の2件,奨励賞(研究論文)がNECの丸山陽太郎さんとJAISTの方々のグループ,優秀賞(経験論文)が九州日立マクセルの島田和明さんのご発表.今回,賞に該当した発表を全部器用に避けてしまってたので何とも.
ロボットチャレンジのほうは,ちょっと記憶があやふや.(以下,間違ってた部分を修正済み 10/24)
1位: ムンムン考房(金沢工業大学,NECソフトウェア北陸)
2位: FSEL(立命館大学)
3位: ねこねこ専FU(専修大学,キャッツ,富士通デバイス,富士通)
奨励賞: Tigermoth(宇宙航空研究開発機構),MONTBLANC(東海大学)
ベストフライト賞: ムンムン考房
エクセレントモデル賞: ねこねこ専FU
2005-10-23 [長年日記] ▲
_ wiki(非公開のもの)の整備とか ▲
ちょっとグループで作業する都合で,wikiを設置したりページのテンプレートを整えたりした.
pukiwiki のコメント欄が1行だと長い文が入力しにくい,ということでcomment.inc.php のinputタグ生成をtextarea生成にして,コメント欄を無理やり3行の表示に改造してみた.単にタグ生成部分だけ変更すれば,入力された文字列の中の改行は無視して処理してくれるようなので,意外と変更は簡単だった.
_ 自販機のポイントカード ▲
大学近くの自動車の中古買取のお店(たぶん)のそばにあったダイドーの自販機で,カード発行とかいう見慣れないインタフェースが付いてたので,とりあえず受け取ってみた.
ダイドーのニュースリリースによれば,実は4月からやっていたキャンペーンらしくて,1本1ポイントで50ポイントから景品がもらえるらしい.缶にシール貼るキャンペーンと違って,どの賞品でも良いという違いはあるけど,そのかわり自販機での購入に限定され,店頭でのケース買いとかは対象にならない.どのくらいの人がポイントためられるのかな?
2005-10-25 [長年日記] ▲
_ [AspectJ][ツール] AJDTの多言語対応 ▲
AJDTのインタフェースを各言語に翻訳してくれる人を募集しているのに今更気づいた.日本語版は ajdt-dev ML の過去ログによると, kentaro matsumae さんという方が既に宣言を出している様子.
日本語版があると,きっと授業とかでの説明がすごく楽になって嬉しいので,手伝ってもいいだろうなと思ったのだけど,連絡先とかが見つからない(aosd-jpのメンバーリストにもそれっぽい人が見つからなかった)ので如何ともしがたい.翻訳版がリリースされるまでにこのページをご本人に見てもらえるかな,どうかな?