netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-10-02 古い日記からの変換データ ▲
_ AspectJ ▲
AspectJ 1.2 に向けてどうしよう,という話が進んでいる様子.スケーラビリティ,パフォーマンス問題,再利用可能なアスペクトを書くための方法,なんかが重視されてるみたい.
「ほしい機能リスト」には,"静的に実行可能なアドバイス" とかも入ってた.どうなることやら.
2004-10-02 古い日記からの変換データ ▲
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個)がどんどん複雑になる様子がグラフで示されていたりする.
2006-10-02 ▲
_ bddbddbのドキュメント修正 ▲
bddbddbの使い方について,最新のソースはCVSじゃなくてSubversionで管理されている,と東大の青谷さんからご指摘いただいたのを反映しました.といって,単に注意書き足しただけなんですが.
bddbddb自体はタプルの集合(リレーション)をBDD形式で保存して,Datalog言語を使って操作するためのツールなので,Javaバイトコードから情報を取り出してbddbddbに変換するjoeqというツールの部分を作り変える(あるいは自作する)と,色々プログラム解析に使えると思います.
この手のlogic programmingの処理系を使ってデータ解析部分を手早く実装するというのがツール作る人たちの最近の流行な気がするので,1つくらいは使い方を知っておくと今後役立ちそうだという印象があります.