開発履歴データのリアルタイム収集・分析システムEPMの拡張について ~ SRGMを用いた予測グラフの実現および既存解析システムとの連携 ~

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

1 EASE プロジェクトにおける EPM ( Empirical Project Monitor) を用いたプロジェクト管理デモ 奈良先端科学技術大学院大学 産学官連携研究員 松村 知子 2005 年 9 月 30 日 JISA 経営者セミナー.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
コードクローン履歴閲覧環境を用いたクローン評価の試み
AGMアルゴリズムを用いた ギャップを含むコードクローン情報の生成
利用実績に基づくソフトウェア部品検索システムSPARS-J
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
実証的ソフトウェア工学環境とEASEプロジェクトについて
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
ソフトウェア工学 第五回 知能情報学部 新田直也.
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
ギャップを含むコードクローンの フィルタリング手法の提案
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
識別子の共起関係に基づく類似コード検索法の提案と 欠陥検出への適用
ソードコードの編集に基づいた コードクローンの分類とその分析システム
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
オープンソース開発の履歴情報を用いたコミュニティ検索支援システム
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
実行時情報に基づく OSカーネルのコンフィグ最小化
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
利用実績に基づくソフトウェア部品検索システムSPARS-J
加工工程決定支援システム 電子情報通信学会 2010年総合大会 2010年3月18日 松江工業高等専門学校  情報工学科 越田 高志.
コンポーネントランク法を用いたJavaクラス分類手法の提案
Javaを対象としたソフトウェア部品 検索システムSPARS-Jの実験的評価
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
数量分析 第2回 データ解析技法とソフトウェア
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
UMLモデルを対象とした リファクタリング候補検出の試み
Winter Workshop in Kanazawa -プロセスと方法論-
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
エピソード記憶に訴えるBookmarkless Bookmarkの実現
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
ソフトウェア保守のための コードクローン情報検索ツール
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
ソフトウェアプロダクト集合に対する 派生関係木の構築
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
容易に使用可能な grep風コードクローン検索ツール
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コードクローン解析に基づく デザインパターン適用候補の検出手法
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
Presentation transcript:

開発履歴データのリアルタイム収集・分析システムEPMの拡張について ~ SRGMを用いた予測グラフの実現および既存解析システムとの連携 ~ 横森励士† 市井誠† 新海平‡ 井上克郎† † 大阪大学 大学院情報科学研究科 ‡ (株) 日立システムアンドサービス

研究の背景 現在のソフトウェア開発環境では,ソフトウェアの生産性に関する問題が顕在化しつつある 開発期間の短縮圧力 大規模化したプロジェクトに対しての人海戦術の限界 ソフトウェアの信頼性が犠牲になっていることが多い 多数のバグを含んだソフトの流通 一度ダウンすると多大な社会的損失

研究の背景 ソフトウェアの生産性,信頼性を向上させるためには,常にモニタリングを行い,問題を早期に発見し,早期に治療することが重要 まずい状態を放置することは状況をさらに悪化させる モニタリングを行う際には,ソフトウェア開発に関するデータの収集・計測・分析が必須の課題 GQMなど,ソフトウェア計測に関する諸技術は多数提案されているが…… 手法をよく理解して,実践するには,十分な経験が必要 実際のところ,改善に結びつけることはとても難しい

EASEプロジェクト 我々の研究チームではソフトウェア開発の分野における実証的手法(エンピリカルアプローチ)の実践を目指し,EASEプロジェクトを推進している 定量的なデータ収集,分析,グラフ表示システムEPM データ収集 データの分析 プロセス改善の サイクルの確立を 目指す 開発現場へのフィードバック 分析結果に基づく モデルの提案

EPM リアルタイムでのプロジェクト管理を目的とした開発データの自動収集・分析システム 以下の3種類の開発支援システムから収集 構成管理ツール(CVS) メーリングリスト管理ツール(Mailman, Majordomo, FML) 障害管理ツール(GNATS, Bugzilla) オープンソース開発では昔からよく利用されている 実際の開発においても,同種のシステムが利用されていることが多い

EPMのアーキテクチャ Analyzer 個別分析,関連分析 Java PostgreSQL (Repository) importer 開発者 管理者 個別分析,関連分析 Java PostgreSQL (Repository) importer Java 標準化エンピリカルデータ(XML形式) Rubyスクリプト translator 開発者 管理者 構成管理 履歴 メール 履歴 不具合 履歴 CVS, Mailman, GNATS, (WinCVS, ShareSourceTM) <Option> Majordomo, FML, Bugzilla 既存ツール

EPMによるデータ分析 単一システムからのデータを元に分析 複数システムからのデータを元に分析 複数プロジェクト間の比較 ソースコード規模(CVS) 障害解決時間累積・未解決障害件数/平均障害滞留時間(GNATS(Bugzilla)) ・・・ 複数システムからのデータを元に分析 更新/参照数やメール投稿数(CVS⇔Mailmanなど) 障害報告/メール投稿数(CVS⇔GNATS⇔ Mailman) 更新と障害件数(CVS⇔GNATS) 複数プロジェクト間の比較 分析結果をグラフに同時に出力 入力クエリーのカスタマイズ機能

EPMのインタフェース:設定画面

EPM出力例(その1): ソースコードの規模推移とチェックイン

EPM出力例(その2):累積メール投稿数, チェックイン,障害発生/障害解決時期

EPM出力例(その3): 複数プロジェクト間の比較

現在のEPMの課題 予測機能の充実化 現在のEPM では情報を取得し集計して表示するだけ 開発者は,自力で類似プロジェクトを探索し表示し,類似プロジェクトの情報をもとに推測するくらいしかない 開発者が現状を判断できるように,もう少し深く分析した情報を提示したい 実際にEPMを利用してもらうための動機付けとして 「予測機能の充実」 「類似プロジェクトの検出を支援する機能」が必要 既存の解析システムとの連携 現在のEPMはログ情報から比較的簡単に導出できるメトリクスを提示 一方,我々の研究チームではソースコード(などの生成物)に対する様々な分析手法(ツール)を提案している SPARS CC-finder など EPM上でも,これらのツールを有効に活用したい EPM と有効に結びつける仕組みを提案することが重要である

研究の目的 実利用を考慮したEPMの機能の拡張 予測機能の充実化 既存の解析システムとの連携 SRGM を用いた潜在フォールト数予測グラフの作成機能の実現 SRGMプラグイン 既存の解析システムとの連携 既存の解析システムとの連携手法を考察 CCFinder SPARS-J ユースケースポイント計測支援システム

研究の目的 実利用を考慮したEPMの機能の拡張 予測機能の充実化 既存の解析システムとの連携 SRGM を用いた潜在フォールト数予測グラフの作成機能の実現 SRGMプラグイン 既存の解析システムとの連携 既存の解析システムとの連携手法を考察 CCfinder SPARS-J ユースケースポイント計測支援システム

SRGM を用いた予測グラフ作成機能の実現 Software Reliability Growth Model(ソフトウェア信頼度成長モデル) その時点までに発見された欠陥数を元に,欠陥数がどう収束するかを推定するための手法

SRGM を用いた予測グラフ作成機能の実現 いままで,多くのモデルが提案されているが… 指数型SRGM 修正指数型SRGM S字型SRGM テスト労力依存型SRGM など 実際企業などでSRGMが利用される場合には,決め打ちで一種類だけのモデルしか使われない場合が多い 実情とあわなかったり 開発者側が順応し,対策を立ててしまうことも        いくつかのモデルを簡単に適用でき,比較できるような  仕組みをEPM上で実現したい

SRGMプラグイン 実現の手順: EPMで収集しているバグ情報追跡システムの履歴情報を用いる 計測期間中の各日のバグ発見数を計算 複数(現在は4つの)のモデルそれぞれでパラメータ推定を行う 指数型SRGM 修正指数型SRGM S字型SRGM 習熟S字型SRGM それぞれのモデルに検定を行う コルモゴロフ・スミルノフ検定法 検定に合致したモデルに対し,その結果をグラフ化する 潜在バグ数(とその予想域),総発見バグ数の推移予想 利点: データを人手で加工する手間がなく,グラフ化までを自動化できる 複数のSRGMを気軽に利用できる 現場でGNATSなどの障害管理ツールを導入するためのきっかけに

SRGMプラグイン SRGM プラグイン パラメータの推定 検定 データベース (フォールト情報 管理システム) 指数型 修正指数型 2/15 2/16 2/17 2/18 ... 1 3 2 .... 指数型 修正指数型 遅延S字型 習熟S字型 パラメータの推定 検定 不適合 不適合 適合 適合

現状の課題(SRGMプラグイン) 実際の開発データに基づいた評価 機能の洗練 現在EPMのバージョン0.91を実際の開発で利用してもらっている EPMの次バージョンリリース後に実際の開発データをもとに評価 機能の洗練 検定方法の工夫 現在はコルモゴロフースミルノフ適合度検定法だけを利用 モデルとの適合度を測定し,グラフをより見やすいものに加工 テスト工数(労力)を考慮したSRGMモデルの導入 一般的に,テスト工数を考慮すると予測結果がより正確になる テスト労力関数にもいろいろなモデルが存在 Reyleigh curve, Logistic curve, Log-Logistic curve 自動化には,プロジェクト管理システムとの連携が必要

研究の目的 実利用を考慮したEPMの機能の拡張 予測機能の充実化 既存の解析システムとの連携 SRGM を用いた潜在フォールト数予測グラフの作成機能の実現 SRGMプラグイン 既存の解析システムとの連携 既存の解析システムとの連携手法を考察 CCFnder SPARS-J ユースケースポイント計測支援システム

既存の解析システムとの連携 現在のEPMでは,CVSから基本的なメトリクスを抽出するだけ LOC,更新(参照)回数… 適用対象を限定しないため CVSに登録されているプロダクトからはもっと情報が抽出できるはず より詳しい解析を行うために既存のツールを利用したい 既存のソースコード解析システムとの連携手法を考察 CCFinder SPARS-J ユースケースポイント計測支援システム

CCFinder コードクローンの検出,分析システム 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.

CCFinderの利用に関する考察 CCFinderを用いてコードクローンを検出したり,メトリクスを用いることで,プロジェクトの現状が把握できないだろうか? CVS内の各バージョンのソースコードに対して 差分⇔本体間や,本体内,差分内でコードクローンを抽出し,それぞれの場合のコードクローンカバレッジを計算 コードクローンが混入された変更の推定 コードクローンを多く含んだ修正は警告する バージョン経過による,本体内のコードクローンカバレッジの推移を計算 リファクタリングのタイミングをはかる 差分内,差分と本体間のコードクローンを計算 コードクローンが混入された箇所の調査 変更し忘れと思われるコードクローンがあればそれを指摘 修正パターンをコードクローンから抽出し,変更を分類

SPARS-J ソフトウェアプロダクトの収集・解析・検索システム SPARS-Jの特徴 ソフトウェア部品を解析し,利用関係などの様々な情報をもとに,検索結果に有益な情報を付加する 単純な検索システムとしてだけでなく,組織内のソースコード管理にも有効に利用できる SPARS-Jの特徴 スケーラブル 10万ファイル単位のソースコードに対して実用的に運用可能 高速な検索が可能 Javaに対応 Javaソースコード,XMLドキュメント,JSPなどを検索可能 順位付け手法 キーワードとの適合性 部品の被利用度(Component Rank) 横森励士, 梅森文彰, 西秀雄, 山本哲男, 松下誠, 楠本真二, 井上克郎: ”Java ソフトウェア部品検索システムSPARS-J”, 電子情報通信学会論文誌D-I, VolJ87-D-I, No.12, pp1060–1068, 2004.

SPARS-Jの利用に関する考察 SPARS-JはEPMと同様な運用形態 サーバにデータベースを構築し,利用者はデータベースにアクセス 夜中に走らせておけば,常に最新状態で利用可能 開発言語がJavaであれば,EPMと同時に運用すると効果的 EPM導入時にソースコード管理環境も容易に構築できる Component Rankの推移を開発の安定度を測定するために使えないだろうか? 開発の初期は常に新しい部品が追加され,利用関係はどんどん変化していく 時間の経過とともに収束していくはず CVS内の各バージョンに対して, Component Rankを計算しその推移をはかる

ユースケースポイント測定システム ソフトウェアの開発において見積もりをすばやく正確に行うことは重要 早い段階で見積もりができれば,計画も立てやすい 要求定義の段階において工数の規模見積もりを行う手法としてユースケース図から規模見積もりを行う手法が提案されている ユースケースポイント法 ユースケースポイント法に基づいてユースケースポイント計測の自動化を支援するシステムを開発した アクタやユースケースに対する重み付けを支援する 重み付けをするために必要な情報が不足している場合でも,過去の情報を参考にして重み付けを行うことができる 松川文一, 楠本真二, 井上克郎, 英繁雄, 前川祐介: ”ユースケースポイント計測支援ツールの実装とその適用”, 情報処理学会研究報告(2004-SE-144), Vol. 2004, No.30, pp.91–98, 2004.

ユースケースポイント測定システムに関する考察 EPMと連携することで,EPMに設計情報を用いた工数の予測機能を追加できる. ユースケース図をCVSで管理する必要あり 変更があった場合も,過去に登録された情報をもとに自動的に再計算 再計算に必要な手間を最低限に 必要な情報が不足していても,CVSリポジトリから取得 プロジェクトの計画の変更に対して,柔軟に対応できるようになる.

既存解析システムとの連携 加工・登録 既存システム 実行 Analyzer 個別分析,関連分析 Java 開発者 管理者 個別分析,関連分析 Java 加工・登録 既存システム PostgreSQL (Repository) 不具合 履歴 解析情報 Java importer 標準化エンピリカルデータ(XML形式) Rubyスクリプト translator 開発者 管理者 解析ツール 構成管理 履歴 メール 履歴 不具合 履歴 実行 CVS, Mailman, GNATS, (WinCVS, ShareSourceTM) <Option> Majordomo, FML, Bugzilla 既存ツール

まとめ まとめ 今後の課題 SRGM を用いた潜在フォールト数予測グラフの作成機能をEPM上で実現した 既存の解析システムとの連携手法を考察した CCFinder SPARS-J ユースケースポイント計測支援システム 今後の課題 実際の開発データに基づいた評価 実際の利用をもとにした,機能の洗練 既存の解析システムとの連携の実現