EASEプロジェクト概要
EASE: Empirical Approach for Software Engineering

森崎 修司
EASEプロジェクト/
国立大学法人奈良先端科学技術大学院大学
www.empirical.jp
e-Society基盤ソフトウェアの総合開発 中間成果報告会1

プロジェクト概要
z 「文部科学省リーディングプロジェクト 基盤ソフトウェアの総合開発」のサブテーマ開始とともに発足
z プロジェクトの目的
産学連携でエンピリカルソフトウェア工学を実践する。
zz 定量的データ収集・分析手法の確立
zz データに基づいて開発作業を支援するシステムの構築

z メンバ
zz 代表 奈良先端科学技術大学院大学 鳥居 宏次
zz ソフトウェア開発企業（兼務）zz 大阪大学教員（兼務）、奈良先端大教員（兼務）zz 研究員（専任、開発の実務経験を持つ）
2
e-Society基盤ソフトウェアの総合開発
中間成果報告会 Copyright © 2007 Nara Institute of Science and Technology, Osaka University and Shuji Morisaki All Rights Reserved 2活動内容
z セミナ
z エンピリカルソフトウェア工学研究会（四半期に一度）z 国際フォーラム（不定期）z 共同検討z グループ討論、ツール説明会（年2, 3回程度）
z 海外アドバイザz 機密保持契約下で個別企業、組織との検討（30社程度）
z 成果
z 論文等の外部発表で公表
z ツールとして実装

研究会

説明会

3

e-Society基盤ソフトウェアの総合開発
中間成果報告会 Copyright © 2007 Nara Institute of Science and Technology, Osaka University and Shuji Morisaki All Rights Reserved 3

活動テーマとツール（抜粋）
分析、見える化
ツール

収集ツール

対象データ

EPM
EPM Pro*
Pro*

ＥＰＭ

CVS
CVS
GNATS
GNATS

構成管理
構成管理
ツール、ツール、バグ管理
バグ管理
ツール
ツール

単一プロジェクト

EASE所有のツール

コードクローン
コードクローン(ccfinder)(ccfinder)
ロジカルカップリング
ロジカルカップリング
分析ツール
分析ツール

相関ルール抽出ツール
相関ルール抽出ツール（NEEDLE）（NEEDLE）
ワンクリック見積り
ワンクリック見積り＆データ診断（Magi）＆データ診断（Magi）

ソースコードソースコード
編集ツールなど
編集ツールなど

テキストエディタ、テキストエディタ、ＭＳエクセル
ＭＳエクセルソースコード（C/C++,
ソースコード（C/C++, プロジェクト特性データ、
プロジェクト特性データ、
Java,
Java, COBOL）、COBOL）、クラス/モジュール別クラス/モジュール別
ソースコード更新履歴
ソースコード更新履歴
バグデータ
バグデータ
（版管理履歴）（版管理履歴）

プロダクトライン

リポジトリ

4e-Society基盤ソフトウェアの総合開発
中間成果報告会 Copyright © 2007 Nara Institute of Science and Technology, Osaka University and Shuji Morisaki All Rights Reserved 4

活動テーマとツール（抜粋）
分析、見える化
ツール

収集ツール

対象データ

EPM
EPM Pro*
Pro*

ＥＰＭ

CVS
CVS
GNATS
GNATS

構成管理
構成管理
ツール、
ツール、
バグ管理
バグ管理
ツール
ツール

単一プロジェクト

EASE所有のツール

コードクローン
コードクローン(ccfinder)(ccfinder)
ロジカルカップリング
ロジカルカップリング
分析ツール
分析ツール相関ルール抽出ツール
相関ルール抽出ツール（NEEDLE）（NEEDLE）
ワンクリック見積り
ワンクリック見積り＆データ診断（Magi）＆データ診断（Magi）

ソースコードソースコード
編集ツールなど
編集ツールなど

テキストエディタ、テキストエディタ、ＭＳエクセルＭＳエクセルソースコード（C/C++,
ソースコード（C/C++, プロジェクト特性データ、プロジェクト特性データ、Java,Java, COBOL）、COBOL）、
クラス/モジュール別クラス/モジュール別
ソースコード更新履歴
ソースコード更新履歴
バグデータ
バグデータ
（版管理履歴）（版管理履歴）

プロダクトライン

リポジトリ
プライマリコントラクタ向け（PMO）
5

エンジニアリング、組込み向け（ライン/ライン寄りのSQA等）

e-Society基盤ソフトウェアの総合開発
中間成果報告会 Copyright © 2007 Nara Institute of Science and Technology, Osaka University and Shuji Morisaki All Rights Reserved 5

テーマ紹介

コードクローン分析による類似バグ検索
詳細はhttp://empirical.jp/event/j_empirical.html 「コードクローン分析による類似バグ検出」をご参照ください・・・
for (int i = 0; i < 10; i++){stream.writeLine(lines[i]);if (lines[i].equalsTo(“EOF”)){
continue;}
tokens = parse(lines[i]);
}
・・・

修正

・・・
for (int i = 0; i < 10; i++){stream.writeLine(lines[i]);if (lines[i].equalsTo(“EOF”)){
break;}
tokens = parse(lines[i]);}・・・ CustomerRequest.java

修正すべき？ ・・・
for (int i = 0; i < 10; i++){stream.writeLine(lines[i]);if (lines[i].equalsTo(“EOF”)){
continue;}
tokens = parse(lines[i]);CustomerRequest.java}

e-Society基盤ソフトウェアの総合開発
中間成果報告会 Copyright © 2007 Nara Institute of Science and Technology, Osaka University・・・ and Shuji Morisaki All Rights Reserved 6

StaffRequest.java6

テーマ紹介

コードクローン分析による類似バグ検索 試行結果
z A: Windowsアプリ C++ 約13.5kstep
z B: 68系組込みサブシステム C 約16.7kstep
z C: Windows C/S サブシステム Java: 約7.2kstep

精度
詳細はhttp://empirical.jp/event/j_empirical.html「コードクローン分析によるe-Society基盤ソフトウェアの総合開発
中間成果報告会Copyright © 2007 Nara Institute of Science and Technology, Osaka University and Shuji Morisaki All Rights Reserved 7
類似バグ検出」をご参照ください7