netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2002-12-22 古い日記からの変換データ ▲
2003-12-22 古い日記からの変換データ ▲
_ AspectJ ▲
AspectJ に対する,厳しい意見.http://kumiki.c.u-tokyo.ac.jp/~ichiyama/mt/archives/000032.html
Aspect を「どう書くべきか」問題が解決するのはいつのことだろう.実用的な処理系ができてからまだ時間がそれほど経っていないことを考えると,まだまだ先は流そうだ.
特定クラスに依存したアスペクトも,パッケージ内部のローカルで使えばいいな,とか全部を横断しなくてもいいか,とか思ってしまうこのごろ.
まあ,クラス名を使いたくなかったらインタフェースを使うくらいしかないような気がする.今後,メソッドなどに付加するメタデータが出てくれば,もうちょっと楽に記述できるようになるかもしれない.
2005-12-22 ▲
_ Volume Deskbar 1.0.3 リリース ▲
改良色々.今回は,提案された案をほとんどそのまま受け入れた感あり.ボリュームコントロールやオーディオのプロパティが開けるようになったり,WAVEがコントロールできるようになったり,日本語メニュー表示が可能になったり.さすがに項目数が増えてくると日本語メニューでないと厳しい人もいるよね,ということで付けてみた.
テスト項目を列挙してみたらもう40件くらいになっていたが,タスクバーを左右や上側に表示したケースや,ログオフして再ログオンとかいうのがテスト項目に入ってたりして,自動化がほぼ不可能なところが厳しい.
_ [論文] 非決定的要素に対するテスト ▲
L. Wildman, B. Long, and P. Strooper: Dealing with Non-determinism in Testing Concurrent Java Components
Proceedings of APSEC 2005.
並行動作するプログラムのテストケースをいかに記述し,テストするかというお話.
基本はモニタ制御で,時刻を進めながらイベントを処理するようなのだが,Producer-Consumer パターンで,Consumer A, B 2つがデータを待ち受けているとき,次に Producer 2つが put した2つのデータのどちらを Consumer A が受け取るかは非決定的になってしまう.
しかし,スレッドの実行順序に JVM 依存な仮定を置くのも嫌なので,とりうる状態の組み合わせの宣言を可能にすることで,テストケースを簡潔に記述できるようにしている.
_ [論文] コンポーネントのアップグレードに対する回帰テストケースの選択 ▲
A. Pasala and A. Bhowmick: An Approach for Test Suite Selection to Validate Applications on Deployment of COTS Upgrades.
Proceedings of APSEC 2005.
Windows のパッチなんかが当たったときに,回帰テストをシステム全体にかけるのは非現実的なので,Component Interaction Graph (CIG) という,Windows 内部コンポーネントに関する動的コールグラフを作り,各テストケースがどの Windows コンポーネントを使っているか調べておく.
そして,アップグレードが起きたら,そのコンポーネントを使っているテストケースだけを回帰テストしたらいいよね,というだけなのが,Windows パッチに実施したら,だいたい半分くらいのパッチについては回帰テスト不要だったことが判明したらしい.
_ [論文]相互作用のプロトコルをオートマトンで記述 ▲
Y. Jin and J. Han: Consistency and Interoperability Checking for Software Component Interaction Rules.
Proceedings of APSEC 2005.
interaction protocols とは,サービスの呼び出し順序に対する相対的な順序の指定. 以下のようなパターンとスコープを組み合わせて定義するらしい.
Patterns: OP is absent / OP exists at most n times / OP exists at least n times / OP1 precedes OP2 / OP1 leads to OP2 Scopes: globally / before OP3 / after OP3 / after OP3 until OP4 / between OP3 and OP4
これらを使って,一貫性とか,システム全体でプロトコルに従って動くか検査するよーという話.
2006-12-22 ▲
_ [論文] リファクタリングは複雑さを明確にする作業 ▲
Miguel Lopez, Naji Habra: Investigating Refactoring Impact through a Wider View of Software.
Proceedings of QAOOSE 2006, pp.101-108.[Workshop Site]
Document というエンティティの中に含まれていたファイル形式の扱い(PDFとかHTMLとか)を,条件分岐での扱いからクラス多態性での扱いに変更してやったら,プログラムの理解,変更やテストは容易になったのに,依存関係グラフの登場人物数は増えてしまい,辺の数も増えて,設計の複雑度は上がってしまった,という例を出しています.
リファクタリングというのは複雑さを減少させるのではなく,どこかのエンティティに隠れている複雑さを明らかにして,適切なエンティティへ分散させる作業である.そして,複雑さを明確に記述することが保守性に貢献しているのではないか,と指摘しています(保守性への貢献については今後検証が必要だとしています).
……というあたりが,リファクタリング関連で何か書きたいときに使えそうなんで,とりあえずメモしておきます.Proceedings はワークショップのサイトから取れます.
2007-12-22 ▲
_ RMT についての記事 ▲
IEEE Spectrum の12月号に,Ultima Online でボットを動かして Real Money Transactions (RMT;現実の通貨とゲーム内通貨の交換) をやってた人の記事が掲載されていました.
その人が使っていたPC環境,GMからのメッセージが来たときはそのときのスクリーンショットだけ見て本人が返事をするとかいった工夫や,仕事としてRMTをやってる中国人グループの存在など,ゲーム内通貨を生産する側の情報と,運営側の立場が取り上げられていて,オンラインゲームやらない人間にとっても分かりやすく書かれています.
こういう雑誌に載るくらいに,RMT の影響が大きいと認識されつつあるんでしょうか…….