netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-06-08 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
ICSE 2004 Technical Pepers, Testing II より.
Saurabh Sinha, Alessandro Orso, Mary Jean Harrold:Automated Support for Development, Maintenance, and Testingin the Presence of Implicit Control Flow.Proceedings of ICSE 2004, pp.336-345.
例外による実行パスを考慮した作業サポートツールの実験.手法については interprocedural cfg を使ったとか,簡単に触れられるだけで終わっている.
到達不可能な catch ブロックとか,throw するメソッドから catch までが離れているとか,そういう問題を分析しようというのが目的のように見える.
実験結果を見ると,throw-catch ペアごとのカバレッジなんかは実はけっこう低いのでテストをサポートするのは重要そう.
ただ,例外まわりのパスは非常に数が多くなるので難しいような気はするけど.throw 文で明示的に投げるものだけが対象だからいいといえばいいのか.
_ 論文 ▲
ICSE 2004 Technical Pepers, Testing II より.
Dirk Beyer, Adam J. Chlipala, Rupak Majumdar:Generating Tests from Counterexamples.
C言語のモデルチェッカ.プログラムの制御フローオートマトンを構築し,プログラムの各文について,その文に到達するために通過する必要がある制御文の条件式を順番に取得していって,それらを満たすようなテストデータを生成する.到達不可能なデッドコードの検出もできる.
テスト自動化ツールなので,無限ループなどに陥っていつまで経っても到達しないようならタイムアウトするとか,工夫はしているよう.
あまり大きなプログラムになってくると扱いきれないみたい.また,この論文執筆時点では再帰呼び出しが扱えないといった弱点もあるみたい.
_ 論文 ▲
ICSE 2004 Technical Papers, Feature-Based Software Engineering より.
Wei Zhao, Lu Zhang, Yin Liu, Jisau Sun, Fuqing Yang:SNIAFL: Towards a Static Non-Interactive Approach to Feature Location.Proceedings of ICSE 2004, pp.293-303.
ソースコードのどの部分がどの機能を実装しているか,というtraceability の回復に IR 手法とBRCG(ブランチ保存コールグラフ)を使うというもの.
最初に,feature ごとの説明ドキュメントをベクタ空間モデルにマップして,各関数から各 feature への類似度を計算する.で,各 feature ごとに,類似度の高い関数を順番に並べて,類似度に一番格差のあるところ(d[i]-d[i+1] が最大となるi)までの関数群だけを取り出して,その feature の specific function とする.
で,ブランチ関係を保存したコールグラフを使って,specific function を呼び出すようなブランチだけを残してコールグラフの枝刈りをして,relevant function を取り出す.
そして,relevant function として得られた関数のうち,単一の feature にのみ関係しているようなものだけを最終的な specific function とする.おまけとして,BRCG から,feature ごとの擬似的な実行トレースを生成する.
単純な IR 手法や,テストケースの実行を分析する dynamic approach と比べて優れた結果となる.また,擬似的な実行のトレースを出力することによって,dynamic approach のような開発者が準備しないような特殊なテストケースも生成できる.(ただし効率はそんなによくない)
specific function の発見については,この手法が85%に対して,dynamic approach のほうが95%と高い結果を出しているが,静的解析だけでも85%は正しい結果が出たというのはすごいといえばすごい.