Document

開発履歴データのリアルタイム収集・分析システム
EPMの拡張について
~ SRGMを用いた予測グラフの実現および既存解
析システムとの連携 ~
横森励士† 市井誠†
新海平‡
井上克郎†
† 大阪大学 大学院情報科学研究科
‡ (株) 日立システムアンドサービス
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
1
研究の背景

現在のソフトウェア開発環境では,ソフトウェアの生産
性に関する問題が顕在化しつつある
 開発期間の短縮圧力
 大規模化したプロジェクトに対しての人海戦術の限界

ソフトウェアの信頼性が犠牲になっていることが多い
 多数のバグを含んだソフトの流通
 一度ダウンすると多大な社会的損失
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
研究の背景

ソフトウェアの生産性,信頼性を向上させるためには,
常にモニタリングを行い,問題を早期に発見し,早期に
治療することが重要
 まずい状態を放置することは状況をさらに悪化させる

モニタリングを行う際には,ソフトウェア開発に関する
データの収集・計測・分析が必須の課題
 GQMなど,ソフトウェア計測に関する諸技術は多数提案
されているが……
手法をよく理解して,実践するには,十分な経験が必要
実際のところ,改善に結びつけることはとても難しい
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
EASEプロジェクト

我々の研究チームではソフトウェア開発の分野におけ
る実証的手法(エンピリカルアプローチ)の実践を目指し,
EASEプロジェクトを推進している
 定量的なデータ収集,分析,グラフ表示システムEPM
データ収集
開発現場への
フィードバック
データの分析
分析結果に基づく
モデルの提案
プロセス改善の
サイクルの確立を
目指す
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
EPM
リアルタイムでのプロジェクト管理を目的とした開発デー
タの自動収集・分析システム
 以下の3種類の開発支援システムから収集

 構成管理ツール(CVS)
 メーリングリスト管理ツール(Mailman,
Majordomo,
FML)
 障害管理ツール(GNATS, Bugzilla)
オープンソース開発では昔からよく利用されている
実際の開発においても,同種のシステムが利用されている
ことが多い
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
EPMのアーキテクチャ
開発者
管理者
Analyzer
個別分析,関連分析
Java
PostgreSQL (Repository)
importer
Java
標準化エンピリカルデータ(XML形式)
Rubyスクリプト
開発者
管理者
構成管理
履歴
メール
履歴
translator
不具合
履歴
CVS, Mailman, GNATS, (WinCVS, ShareSourceTM)
<Option> Majordomo, FML, Bugzilla
既存ツール
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
EPMによるデータ分析

単一システムからのデータを元に分析
 ソースコード規模(CVS)
 障害解決時間累積・未解決障害件数/平均障害滞留時間(GNATS
(Bugzilla))
 ・・・

複数システムからのデータを元に分析
 更新/参照数やメール投稿数(CVS⇔Mailmanなど)
 障害報告/メール投稿数(CVS⇔GNATS⇔
Mailman)
 更新と障害件数(CVS⇔GNATS)
 ・・・

複数プロジェクト間の比較
 分析結果をグラフに同時に出力

入力クエリーのカスタマイズ機能
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
EPMのインタフェース:設定画面
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
EPM出力例(その1):
ソースコードの規模推移とチェックイン
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
EPM出力例(その2):累積メール投稿数,
チェックイン,障害発生/障害解決時期
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
EPM出力例(その3):
複数プロジェクト間の比較
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
現在のEPMの課題

予測機能の充実化
 現在のEPM では情報を取得し集計して表示するだけ
 開発者は,自力で類似プロジェクトを探索し表示し,類似プロジェクトの情報をもとに推測
するくらいしかない

開発者が現状を判断できるように,もう少し深く分析した情報を提示したい
 実際にEPMを利用してもらうための動機付けとして
 「予測機能の充実」
 「類似プロジェクトの検出を支援する機能」が必要

既存の解析システムとの連携
 現在のEPMはログ情報から比較的簡単に導出できるメトリクスを提示
 一方,我々の研究チームではソースコード(などの生成物)に対する様々な分析手
法(ツール)を提案している
 SPARS
 CC-finder
 など

EPM上でも,これらのツールを有効に活用したい
 EPM と有効に結びつける仕組みを提案することが重要である
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
研究の目的

実利用を考慮したEPMの機能の拡張
 予測機能の充実化
SRGM を用いた潜在フォールト数予測グラフの作成機能
の実現
 SRGMプラグイン
 既存の解析システムとの連携
既存の解析システムとの連携手法を考察
 CCFinder
 SPARS-J
 ユースケースポイント計測支援システム
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
研究の目的

実利用を考慮したEPMの機能の拡張
 予測機能の充実化
SRGM を用いた潜在フォールト数予測グラフの作成機能
の実現
 SRGMプラグイン
 既存の解析システムとの連携
既存の解析システムとの連携手法を考察
 CCfinder
 SPARS-J
 ユースケースポイント計測支援システム
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
SRGM を用いた予測グラフ作成機能の実現

SRGMとは
 Software
Reliability Growth Model(ソフトウェア信頼度
成長モデル)
 その時点までに発見された欠陥数を元に,欠陥数がどう
収束するかを推定するための手法
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
SRGM を用いた予測グラフ作成機能の実現

いままで,多くのモデルが提案されているが…
 指数型SRGM
 修正指数型SRGM
 S字型SRGM
 テスト労力依存型SRGM
 など

実際企業などでSRGMが利用される場合には,決め打ちで一種
類だけのモデルしか使われない場合が多い
 実情とあわなかったり
 開発者側が順応し,対策を立ててしまうことも
いくつかのモデルを簡単に適用でき,比較できるような
仕組みをEPM上で実現したい
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
SRGMプラグイン

実現の手順:
1. EPMで収集しているバグ情報追跡システムの履歴情報を用いる
 計測期間中の各日のバグ発見数を計算
2.
複数(現在は4つの)のモデルそれぞれでパラメータ推定を行う




3.
指数型SRGM
修正指数型SRGM
S字型SRGM
習熟S字型SRGM
それぞれのモデルに検定を行う
 コルモゴロフ・スミルノフ検定法
4.
検定に合致したモデルに対し,その結果をグラフ化する
 潜在バグ数(とその予想域),総発見バグ数の推移予想

利点:
 データを人手で加工する手間がなく,グラフ化までを自動化できる
 複数のSRGMを気軽に利用できる
 現場でGNATSなどの障害管理ツールを導入するためのきっかけに
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
SRGMプラグイン
SRGM
プラグイン
データベース
(フォールト情報
管理システム)
2/15
2/16
2/17
2/18
...
1
3
2
1
....
指数型
修正指数型
遅延S字型
習熟S字型
パラメータの推定
検定
不適合
不適合
適合
適合
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
現状の課題(SRGMプラグイン)

実際の開発データに基づいた評価
 現在EPMのバージョン0.91を実際の開発で利用してもらっている
 EPMの次バージョンリリース後に実際の開発データをもとに評価

機能の洗練
 検定方法の工夫
 現在はコルモゴロフースミルノフ適合度検定法だけを利用
 モデルとの適合度を測定し,グラフをより見やすいものに加工
 テスト工数(労力)を考慮したSRGMモデルの導入
 一般的に,テスト工数を考慮すると予測結果がより正確になる
 テスト労力関数にもいろいろなモデルが存在
 Reyleigh curve,
Logistic curve, Log-Logistic curve
 自動化には,プロジェクト管理システムとの連携が必要
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
研究の目的

実利用を考慮したEPMの機能の拡張
 予測機能の充実化
SRGM を用いた潜在フォールト数予測グラフの作成機能
の実現
 SRGMプラグイン
 既存の解析システムとの連携
既存の解析システムとの連携手法を考察
 CCFnder
 SPARS-J
 ユースケースポイント計測支援システム
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20
既存の解析システムとの連携

現在のEPMでは,CVSから基本的なメトリクスを抽出す
るだけ
 LOC,更新(参照)回数…
適用対象を限定しないため

CVSに登録されているプロダクトからはもっと情報が抽
出できるはず
 より詳しい解析を行うために既存のツールを利用したい

既存のソースコード解析システムとの連携手法を考察
 CCFinder
 SPARS-J
 ユースケースポイント計測支援システム
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
21
CCFinder

コードクローンの検出,分析システム
 コードクローンとはソースコード中の全く同じあるいは類似したコー
ドの断片を指す
 ソースコードにコードクローンが大量に存在すると,保守が困難に

CCFinderの特徴
 スケーラブル
 100万行単位のソースコードに対して実用的に適用できる.
 複数のプログラミング言語に対応
 C/C++, Java, COBOL, Fortranなどに対応
 コードクローンの抽出だけでなく,コードクローンに関するいくつか
のメトリクスを測定可能
 コードクローンカバレッジ:ソースコード中の行の中で,コードクローン
の集合に含まれる行の割合
Toshihiro Kamiya, Shinji Kusumoto, and Katsuro Inoue, ”CCFinder: A Multi-Linguistic Token-based
Code Clone Detection System for Large Scale Source Code,” IEEE Trans. Software Engineering,
Vol. 28, No. 7, pp. 654–670,2002.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
22
CCFinderの利用に関する考察


CCFinderを用いてコードクローンを検出したり,メトリクスを用い
ることで,プロジェクトの現状が把握できないだろうか?
CVS内の各バージョンのソースコードに対して
 差分⇔本体間や,本体内,差分内でコードクローンを抽出し,それ
ぞれの場合のコードクローンカバレッジを計算
 コードクローンが混入された変更の推定
 コードクローンを多く含んだ修正は警告する
 バージョン経過による,本体内のコードクローンカバレッジの推移を
計算
 リファクタリングのタイミングをはかる
 差分内,差分と本体間のコードクローンを計算
 コードクローンが混入された箇所の調査
 変更し忘れと思われるコードクローンがあればそれを指摘
 修正パターンをコードクローンから抽出し,変更を分類
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
23
SPARS-J

ソフトウェアプロダクトの収集・解析・検索システム
 ソフトウェア部品を解析し,利用関係などの様々な情報をもとに,
検索結果に有益な情報を付加する
 単純な検索システムとしてだけでなく,組織内のソースコード管理
にも有効に利用できる

SPARS-Jの特徴
 スケーラブル
 10万ファイル単位のソースコードに対して実用的に運用可能
 高速な検索が可能
 Javaに対応
 Javaソースコード,XMLドキュメント,JSPなどを検索可能
 順位付け手法
 キーワードとの適合性
 部品の被利用度(Component Rank)
横森励士, 梅森文彰, 西秀雄, 山本哲男, 松下誠, 楠本真二, 井上克郎: ”Java ソフトウェア部品検索
システムSPARS-J”, 電子情報通信学会論文誌D-I, VolJ87-D-I, No.12, pp1060–1068, 2004.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
24
SPARS-Jの利用に関する考察

SPARS-JはEPMと同様な運用形態
変動率(正規化後C R )
正規化順位の平均変動率
移動平均(10リビジョン)
 サーバにデータベースを構築し,利用者はデータベースにアクセス
移動平均(50リビジョン)
(とその移動平均)
 夜中に走らせておけば,常に最新状態で利用可能
5
4.5
 開発言語がJavaであれば,EPMと同時に運用すると効果的
4
 EPM導入時にソースコード管理環境も容易に構築できる

Component3.5Rankの推移を開発の安定度を測定するために使え
3
ないだろうか?
2.5
 開発の初期は常に新しい部品が追加され,利用関係はどんどん変
2
化していく
1.5
 時間の経過とともに収束していくはず
1
 CVS内の各バージョンに対して,
0.5
Component Rankを計算しその
推移をはかる
0
1
28 55 82 109 136 163 190 217 244 271 298 325 352 379
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
25
ユースケースポイント測定システム

ソフトウェアの開発において見積もりをすばやく正確に行うことは
重要
 早い段階で見積もりができれば,計画も立てやすい

要求定義の段階において工数の規模見積もりを行う手法として
ユースケース図から規模見積もりを行う手法が提案されている
 ユースケースポイント法

ユースケースポイント法に基づいてユースケースポイント計測の
自動化を支援するシステムを開発した
 アクタやユースケースに対する重み付けを支援する
 重み付けをするために必要な情報が不足している場合でも,過去
の情報を参考にして重み付けを行うことができる
松川文一, 楠本真二, 井上克郎, 英繁雄, 前川祐介: ”ユースケースポイント計測支援ツールの実
装とその適用”, 情報処理学会研究報告(2004-SE-144), Vol. 2004, No.30, pp.91–98, 2004.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
26
ユースケースポイント測定システムに関する考察

EPMと連携することで,EPMに設計情報を用いた工数
の予測機能を追加できる.
 ユースケース図をCVSで管理する必要あり
 変更があった場合も,過去に登録された情報をもとに自
動的に再計算
再計算に必要な手間を最低限に
必要な情報が不足していても,CVSリポジトリから取得

プロジェクトの計画の変更に対して,柔軟に対応できる
ようになる.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
27
既存解析システムとの連携
開発者
管理者
Analyzer
個別分析,関連分析
Java
PostgreSQL (Repository)
importer
Java
加工・登録
既存システム
不具合
履歴
解析情報
標準化エンピリカルデータ(XML形式)
Rubyスクリプト
translator
開発者
管理者
構成管理
履歴
メール
履歴
解析ツール
不具合
履歴
実行
ShareSourceTM)
CVS, Mailman, GNATS, (WinCVS,
<Option> Majordomo, FML, Bugzilla
既存ツール
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
28
まとめ

まとめ
を用いた潜在フォールト数予測グラフの作成機能
をEPM上で実現した
 既存の解析システムとの連携手法を考察した
 SRGM
CCFinder
SPARS-J
ユースケースポイント計測支援システム

今後の課題
 実際の開発データに基づいた評価
 実際の利用をもとにした,機能の洗練
 既存の解析システムとの連携の実現
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
29