k - qwik.jp

1
セッションK
ANALYSIS
FOR EVOLUTION
阪大 井上研
神田 哲也・石尾 隆
2
論文K1
AUTOMATED ANALYSIS OF CSS
RULES TO SUPPORT STYLE
MAINTENANCE
Ali Mesbah and Shabnam Mirshokraie
概要
• Cascading Style Sheets(CSS)中の不要な記述を特定する
• 不要な記述:CSS適用先のドキュメントに記述に対応する要素がない、
対応する要素はあるが他の記述が優先される
• 不要な記述の問題点:
• 通信路やメモリの容量圧迫
• ブラウザへの負荷
• 可読性の低下
• これまでのCSSに関する解析は静的解析が主
• 精度もあまりよくない
• 動的解析を使う
4
CSSの適用例
• CSS:HTML要素の表示に関する指示
• 継承、波及、セレクタの詳細度など数々の特徴
• Document Object Model(DOM)
• 実行時のHTMLを表す標準的な
オブジェクトモデル
• CSSの適用先
↓セレクタ
↓プロパティ
CSS
#news
{ background-color: silver; font: italic; color: black; }
.sports
{ color: blue; text-decoration: underline; }
H3 , H4
{ font−family : sans−serif; }
.latest
{ color: green;}
#news span{ color: red; }
P.Select
{ font−size: medium; }
例:赤のプロパティのみが右の2つのDOMで有効になっている
DOM
<HTML>
<HEAD>
<LINK href="example.css" rel="stylesheet“
type="text/css" />
</HEAD>
<BODY>
<P id='news' style='font:normal'>World
<SPAN class='sports'>Sports news</SPAN>
</ P>
<DIV class='sport'>Football</DIV>
</BODY>
</HTML>
<HTML>
<HEAD>
<LINK href="example.css" rel="stylesheet“
type="text/css" />
</HEAD>
<BODY>
<P id=‘news’ style='font:normal'>World
<SPAN class = 'latest'>latest news</SPAN>
</P>
</BODY>
</HTML>
5
CSSとDOMの関係
• Matched Selector:
CSSセレクタに対応するDOM要素が存在する
• Unmatched:対応するDOM要素が存在しないので不要
• Effective Selector:
CSSセレクタが実際に適用されるDOM要素が存在する
• Ineffective:ほかのセレクタの優先度が高いため適用されないので不要
• 個々のプロパティについても同様に考えることができる
• Unused = Unmatched + Ineffective
• Defined Class Values:
DOM要素のクラスに対応するCSSセレクタが存在する
• Undefined:JavaScriptなど他の目的で利用される場合を除き不要
6
評価実験
• 対象:15のウェブベースシステム
• 2つはオープンソース
• 7つはYahoo!のランダムリンクから
• さらに6つのウェブサイトを追加
• 正解集合はCSSルールのうちランダムに選んだ max(全体の2割,20個)
を手動で分析して決定
• 結果
• Recallは100%,F値90~100%
• 比較対象の2ツールはRecallが65~100%、F値40~90%
• 平均59.47%の未使用CSSセレクタ、52.07%のプロパティを検出
• Unusedなセレクタのうち71.4%がIneffective
7
論文K2
GRAPH-BASED ANALYSIS AND
PREDICTION FOR SOFTWARE
EVOLUTION
Pamela Bhattacharya, Marios Iliofotou,
Iulian Neamtiu and Michalis Faloutsos
8
論文の概要
• 長期間開発されているシステムを対象として,グラフに関するメトリ
クスの有効性を調査した
• 調査対象
• C/C++ (10システム): Firefox, Blender, VLC, MySQL, Samba, Bind,
Sendmail, OpenSSH, SQLite, Vsftpd
• Java (1システム): Eclipse
• 9年以上開発が続いているもの
• 調査方法
• 関数のコールグラフ,モジュール間の参照グラフを使って3つの調査
• 開発者間の関係グラフ2種を使って1つの調査
• 調査ごとに,使用したグラフ・メトリクス・システムは異なることに注意
• グラフに関するメトリクスを多数のバージョンについて調査したことが新規性
9
論文で報告されている内容
• グラフに関するメトリクスの用途を4つ示した
• 関数のコールグラフに関するメトリクスは,ソフトウェアが違っても似たよ
うな値の変動をする(4章)
• メトリクスの突然の変化は,システム構造の大きな変化に対応する
• 関数・モジュールは,多くの関数・モジュールから参照されているものほ
ど,そこで発生したバグの Severity が高い (5章)
• モジュール性を表現する ModularityRatio メトリクスが高いほど,その
モジュールの Maintenance Effort は小さい (6章)
• 開発者間でのバグ対応の協力関係グラフ(1年単位)が変化するほど,
そのシステムはバグが多い (7章)
10
関数・モジュールに関するグラフ
一般的に使われている定義と同様
• 関数のコールグラフ
• 関数をノードとする有向グラフ
• 関数 f1, f2 について,f1 が f2 を呼び出しているとき辺 f1  f2 を持つ
• Dynamic Dispatch は すべての可能性を考慮
• モジュール間の参照関グラフ
• モジュールをノードとする有向グラフ
• モジュール A, B について,A の関数が B の関数を呼び出している,もしく
は, A の関数が B の変数にアクセスしているとき,辺 A  B を持つ
11
グラフに対するメトリクス
ソフトウェアごとにあまり違いはない(進化には共通性がある).
値の大きな変化から,構造の変化が検知できると述べている.
• Average clustering coefficient
• ある頂点 u に接続されている頂点が,互いに接続されている確率(密結合
なグラフで値が高い)
• Graph diameter
• グラフの任意の2頂点間での最短経路長の最大値
• Assortativity
• 各辺が接続している2頂点が同じぐらいの次数を持っているかどうかを判定
する値
• Number of nodes in cycles
• グラフ内で,有向辺で循環的に接続された頂点の数
12
頂点に対するメトリクス
• Node Rank
• Page Rank 系メトリクス.多数のノードから直接・間接的に参照されて
いるノードほど値が高い
収束するまで反復計算.
総和が 1 になるよう正規化
• Bug Severity と相関あり(値が高いノードほど,Bug Severity が高い)
• Modularity Ratio
• モジュール間よりもモジュール内の呼び出し・変数アクセスが多いほど
値が高い
• 値が高いノードほど,Maintenance Effort (リリースごとの「コミット回数
÷編集行数」)が低い
13
開発者間のグラフに関する調査
• 開発者を頂点とするグラフ2種を定義
• 同じチームで仕事をしていると生産性が高くなると仮定
• グラフの変化量と,バグの個数を調べた
• Bug-tossing collaboration: 開発者Aが担当していたバグが(Aには
解決できなかったので)開発者 B に割り当てられたとき A  B
• File-based collaboration: 開発者 A と B が同じファイルを編集して
いれば A—B (無向辺)
• 1年ずつの活動に対して作った Bug-tossing グラフのEdit distance
(変化量)が大きいほど,バグ数が多い
• File-based collaboration では相関が認められなかった
14
論文K3
INTEGRATED IMPACT ANALYSIS FOR
MANAGING SOFTWARE CHANGES
Malcon Gethers, Bogdan Dit,
Huzefa Kagdi, Denys Poshyvanyk
15
論文の概要
• 「追加情報があれば使う」 Impact Analysis の提案
本論文でのImpact Analysis とは: Change Request に対し
て,変更する必要があるすべてのメソッドを特定すること
Impact Analysis: CR  a set of methods
• 著者らが従来行ってきた Feature Location は,ある機能に対応するソース
コード位置を特定する技術.
• Feature Location した範囲を基点に Impact Analysis を実行する,と別論文で述
べられている
• 要素技術としては,これまでの Feature Location 技術を少し改変したもの
• 再テストが必要な範囲を特定する技術ではない
• 単純な IR 手法と比較して,追加情報による出力の改善度合いを示
した
16
Impact Analysis の計算手順 (1/2)
• 基本形 (IRCR): LSI を使用した文書類似度の計算
1. メソッド単位を文書として tf-idf の単語出現頻度行列を作成
•
2.
3.
予約語除去,長い識別子の単語への分解,動詞の原型への変換
LSI を適用
Change Request を文書とみなした場合の,各メソッドとのコサイン尺
度を計算し,類似度の高い順でランキングを作る
• 実行履歴が存在する場合 (IRCRDynCR)
1. Change Request に書かれている機能実行手順を使ってプログラム
を実行し,実行されたメソッド情報を記録
2. IRCR のランキングから,実行されてないメソッドを取り除く
17
Impact Analysis の計算手順 (2/2)
• バージョン管理システムに履歴が存在しており,かつ,1つのメソッドが「正
解」と判明している場合(IRCRHistseed)
1. 編集内容が同時にコミットされているメソッドを Itemset Mining で探索
2. あるメソッドが編集されたら他のメソッドも編集されている,という
Association Rules へと変換
3. 開発者がどうにかして(Feature Locationなどで)選んだ「正解」メソッドを基
点に,適用可能な Association Rules の強い順にメソッドをランキング
• 同時に変更される可能性が高いものほど上位
4. IRCRのランキング上位 N/2 件とHistseed の上位 N/2 件を足して N個のラン
キングを作る
• N個に達するまで,2つのランキングから交互に追加候補を取り込む
• 3種の組み合わせ IRCRDynCRHistseed
• IRCRHistseed の最後のステップで使うランキングを IRCR から IRCRDynCR に変更
18
評価実験
• 4つの Java システムを対象: ArgoUML, JabRef, jEdit, muCommander
• Change Request 対応のコミットで変更されたメソッドを特定できるか実験
• 1つの CR に対応する「正解」メソッド数は,中央値で5個,第3四分位点で12個
• IRCRのみと,他の手法との組み合わせを評価
• 上位40件抽出で Precision 4-7%, Recall 18-75%
• Feature Location での類似の実験に比べるとかなり悪い
• 「正解」メソッド数が小さいので,Precision は悪くなりがち
• DynCRが recall/precision 両方を向上させる
• Histseed は recall のみ統計的に有意に向上(ArgoUML では precision もかなり向上)
• 論文で不明瞭な点: Histseedにおける「正解1つ」の選び方が不明
• 途中の具体例だけからみると,IRCR のランキングとは無関係の様子
• 「正解を指定する」こと自体の recall/precision への影響が不明瞭
19
論文K4
DETECTING AND VISUALIZING
INTER-WORKSHEET SMELLS
IN SPREADSHEETS
Felienne Hermans, Martin Pinzger and
Arie van Deursen
20
論文の概要
• 業務に使う表計算のスプレッドシートから,まずい設計
(Smells)を見つける
• 数式によるデータの参照を,ソースコードの依存関係に見立てて,
Code Smells の定義を持ち込んだ
• Smells の条件をメトリクスで定義した
• ICSE2011 で提案したデータフロー可視化手法に,Smells の情報を追
加して提供するツールを構築した
• ケーススタディによって,Smells の指摘が利用者に有用であ
ることを示した
21
用語
• スプレッドシート
• 表計算ソフトで保存されるファイル単位.複数のワークシートを含む.
• ワークシート
• 行・列に並んだセルによって構成されるシート.
• セル
• 「数式」を使って他のセルの値から数値を計算することができる.
• Connection
• セルの組 (A, B) で表現.セル A が, B の内容を参照する式を持つこと
を意味する.
• 主にこれを使ってメトリクスを定義.
22
定義した Smells
• Inappropriate Intimacy
• スプレッドシート内部で,ワークシート間の Connection が多いような
ワークシートの組がある.
• Feature Envy
• ある1つのセルが,他のワークシートの多数のセルを参照している.
• Middle Man
• ワークシート内で,セルの値を “=” によって中継している経路が多い.
• Shotgun Surgery
• Formulas: 1つのワークシートの内容が,他のワークシートの多数のセ
ルに参照されている.
• Worksheets: 1つのワークシートの内容が,多数のワークシートに参照
されている.
23
メトリクスによる Smells の検出
• 各 Smells は,問題となる参照関係などが「多い」ことが条件
• カウント条件をそれぞれ定義し,メトリクス値でソートしたときの上位 10
~30% を Smells 検出の閾値とする
• メトリクスはセル単位,ワークシート単位で定義.検出結果は
スプレッドシート単位で集計.
• Euses corpus からの検出結果(上位10%の場合)
• Feature Envy (5.8%)
• Inappropriate Intimacy (4.2%)
• Middle Man (4.0%)
• Shotgun Surgery (1.5%)
24
ケーススタディ
• 方法
• 資産管理会社のアナリストが使っているプレッドシート10個
• うち7個から検出されたSmellsを利用者に確認してもらった
• 結果:
• ワークシート間の参照関係が複雑である (Feature Envy など
が多い) のは,作成した人にメンタルモデルがないから
• ワークシート間の関係が整理されていない
• あとから見て「なぜこうしたのか」思い出せない・記録していない
• Smells には対応を行ったほうがよいという回答が得られた
• Smells の自動検出が,きちんと問題点を指摘している
• Feature Envy だけは,「データ保存用シート」「計算用シート」という2つの役割
になっている場合があった