netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-06-06 古い日記からの変換データ ▲
2004-06-06 古い日記からの変換データ ▲
_ Calendar ▲
hyCalendar 0.7.7 リリース.機能を実装してから,ヘルプ更新するのが遅れていた.
"|仕事|" とか "*重要*" とか,特定のマーク文字でくくった文字列の出現に対して,色やスタイルを指定できる.使うかどうかは好みに依存.
_ 論文 ▲
ICSE 2004 Technical Papers, Requirements から.
Elisa Baniassad and Siobh\acute{a}n Clarke:Theme: An Approach for Aspect-Oriented Analysis and Design.Proceedings of ICSE 2004, pp.158-167.
アスペクトを探すときは,それらがどの部分を横断しているかを早い段階で見つけておいたほうが望ましい,ということで要求分析段階の話.AOREやConcept Graphing などが関連研究.アクションビューというものを作って,要求内に登場するアクション間の関係をグラフ化し,アクションのうち他のアクショングループと一緒に使われないようなアクションを Base Code に分類し,複数の Base アクションに依存するような(「……するときは……する」といった)アクションをCrosscutting に分類しようという考え方が基本らしい.
システムの規模が大きくなるとアクションビューが大きくなるのでMajor Action と Minor Action に分ける,とか色々考えてはいる様子.でも,アクション間の依存関係が,イベントに対する Trigger なのか単に利用関係だけなのか,とかによってはそんな簡単に Crosscutting に分類していいのかどうか.
_ 論文 ▲
ICSE 2004 Technical Papers, Patterns and Frameworks から.
Wilhelm Hasselbring, Ralf Reussner:The Dublo Architecture Pattern for Smooth Migration ofBusiness Information Systems: An Experience Report.Proceedings of ICSE 2004, pp.117-126.
レガシーシステムから新システムへ移行するとき,レガシーシステム側のビジネスロジックにアクセスするためのAPIを付け足して新しいビジネスロジックは古いビジネスロジックを経由してデータベースなどにアクセスするというDublo (Double Logic) パターンについて説明した論文.
この手法の利点は,クライアントの移行がスムーズであること,レガシーシステムを新システムの1層として取り込めること,データベースの一貫性を保てることなどを利点として挙げている.ざっと読んだ限り,素直なアプローチという気がする.
_ Stephen M Blackburn, Perry Cheng, Kathryn S McKinley:Oil and Water? High Performance Garbage Collection in Java with MMTk.Proceedings of ICSE 2004, pp.137-146. ▲
Memory Management Toolkit は,Java ガベージコレクタの Java による実装で,モジュール性をきちんと考慮していて高い保守性が特徴だ,らしい.で,それを Jikes RVM の Watson Collector などとベンチマーク比較して,性能的にも実は勝ってるんだよーという論文.また,柔軟性なんかの面でも勝利しているから,すごくがんばったら MMTk を上回るようなモノリシックなGCを作れるかもしれないが,MMTk は保守性・柔軟性を保持して,かつ良い性能を発揮しているので好ましいだろう,ということになる.
JavaでGC書いても十分高速だ,というのがわりと意外だったりする.コンパイラとかその辺の進歩の影響?
2005-06-06 ▲
_ [ツール] SCoPE の続き ▲
SCoPE の Web ページで紹介されている,メソッド名に正規表現がマッチするかどうかでアドバイスの実行を決定するアスペクトを貼り付けて,次のような感じのコードで時間計測してみた.AspectJのajcコンパイラとの比較で,コンパイル時間は 2.3 sec → 9.3 sec と増加したものの,実行時間は 9.8 sec → 4.2 sec と削減.単に正規表現の評価比率がプログラムの中身に対して大きいせいとはいえ,かなりの効果を見せた.
// サンプル(動かしたものはもうちょっとだけ複雑) for (int i=0; i<100000; ++i) { test(); // 中身は System.out に数字を書き出すだけ }
実行時間の削減よりも,declare warning などに与える式として,静的に入力が決定可能な関数なら何でも使えるようになるのが効果として大きいような気がする.コード解析ツール実行 → 情報をリテラルとして定義したソースを生成 → declare warning としてウィーブするとか.そのうち,楽しい使い方が出てくる,かも?
_ [論文] 実行時にテスト用コードを付けたり外したり ▲
Jonathan Misurda, James A. Clause, Juliya l. Reed, Bruce R. Childers, Mary Lou Soffa: Demand-Driven Structural Testing with Dynamic Instrumentation.
Proceedings of International Coneference on Software Engineering, pp.156-165, May 2005.
テスト実行時には,カバレッジなどの計測用コードを埋め込んでプログラムを実行する.そのとき,必要になってから計測用コードを埋め込んで,不要になったら(たとえば既にカバレッジを満たしたコードからは)計測用コードを取り外す,というテストツールを構築して実験している論文.
通常の計測に比べるとずっと高速であるという結果は出している.付けて外してを繰り返していくと,その時点でどんなプログラムが実行されてるのかよく分からなくなるので怖いけれど,それはアスペクト指向系のプログラミング環境だって似たようなものか.
2010-06-06 ▲
_ [お知らせ][hyCalendar] hyCalendar 1.6.8 リリース ▲
掲示板で指摘された不具合1点を修正してリリースしました.
「周期予定編集ダイアログ」が最初に開かれたとき,その時点で編集中のファイルのデータを掴んだままとなっており,別ファイルを開き直したあとにデータを操作しようとすると実行時エラーになる,という問題でした.
このバグは,少なくともここ2年ぐらいのバージョンで発生するはずです.2つ以上のファイルの周期予定を編集する人が偶然いなかったので,発見されずに来ていたのかもしれません.
_ [VolumeDeskbar] Vector のファイル差し替え ▲
1.1.2 をリリースしていたにも関わらず Vector の公開ファイルを 1.1.1 のままにしてたことに今更気付きましたので更新しておきました.