第7回OACISシンポジウム 大阪大学におけるソフトウェア工学研究と産学連携活動

Slides:



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

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
ソースコードの編集内容を入力とした ソフトウェア部品の自動検索
AGMアルゴリズムを用いた ギャップを含むコードクローン情報の生成
利用実績に基づくソフトウェア部品検索システムSPARS-J
剽窃 他人の作品や論文を盗んで,自分のものとして発表すること. プログラムが剽窃される事例もある. Aさんのプログラム Xさんのプログラム
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
共同ローカリゼーション フレームワーク 井上 謙次.
プログラム変更支援を目的とした コードクローン情報付加手法の提案と実装
大規模収集データに基づいた ソフトウェアエンジニアリング
大規模開発データの収集と エンピリカルソフトウェア工学
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
コードクローン検出技術と その利用法 神谷年洋‡, 植田泰士†, 肥後芳樹†, 楠本真二†, 井上克郎†
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
コードクローン分析ツールGeminiを用いたコードクローン分析手順
コードクローンの分布情報を用いた特徴抽出手法の提案
実践的ソフトウェア工学における 産学協力 井上克郎 大阪大学大学院基礎工学研究科.
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
ソードコードの編集に基づいた コードクローンの分類とその分析システム
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
コードクローンの集約によるリファクタリング支援システムの提案と実装
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
ネットワーク共生環境を築く情報技術の創出 テーマ4:高信頼性・高安全性を有するネットワーク共生環境の構築技術の創出
オブジェクト指向プログラミング言語に対応した コードクローン検出技法の提案と実験
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向メトリクスを用いた 開発支援法に関する研究
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローン検出ツールを用いた ソースコード分析ツールの試作
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
利用実績に基づくソフトウェア部品検索システムSPARS-J
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
Javaを対象としたソフトウェア部品 検索システムSPARS-Jの実験的評価
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
UMLモデルを対象とした リファクタリング候補検出の試み
プログラム実行履歴を用いたコードクローン検出手法
コードクローン編集者数に着目した開発履歴の分析
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
ソフトウェアプロダクト集合に対する 派生関係木の構築
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 井上研究室
保守請負時を対象とした 労力見積のためのメトリクスの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
P2Pによる協調学習システム 唐澤 信介   北海道工業大学 電気工学専攻.
コードクローンを対象とした リファクタリングの有効性に関する調査
Presentation transcript:

第7回OACISシンポジウム 大阪大学におけるソフトウェア工学研究と産学連携活動 大阪大学 大学院情報科学研究科   井上 克郎

大阪大学情報科学研究科 情報基礎数学専攻 情報数理学専攻 コンピュータサイエンス専攻 情報システム工学専攻 情報ネットワーク学専攻 ソフトウェア設計学講座(谷口教授) ソフトウェア工学講座(井上) 情報システム工学専攻 ディペンダビリィティ工学講座(菊野教授) 情報ネットワーク学専攻 マルチメディア工学専攻 バイオ情報工学専攻

産学連携の代表的なテーマ例 ソフトウェア開発プロセスのモデル化とシミュレーションによる予測 ソフトウェア開発プロセスのモデル化とシミュレーションによる予測   ファンクションポイント法の拡張による上流工程の早期段階における工数見積もり Javaソフトウェア資産管理システム ソフトウェアメンテナンス用各種メトリクス計測 コードクローンを核としたソフトウェア品質の評価   …

産学連携の形態 広いテーマで継続的に 特定のテーマで集中的に 年度始めにテーマ設定、定期的な打合せ 卒論、修論 - 共同研究の目標物 長期的な企業のニーズに合致するもの 卒論、修論 - 共同研究の目標物 特定のテーマで集中的に 既存のツールをベース 集中的にツールを使って適用、実験 結果がそのまま企業のニーズになる

ソフトウェア工学工房 大学 ソフトウェア工房 産業界 実践的なソフトウェア開発・研究のための産学連携モデル 人的交流による知識共有、知識創生を目指す (今までの共同研究の枠組みは設備中心) 人材 新技術(シーズ) 人材 問題(ニーズ) 人材 問題の解決 ノウハウ吸収 人材 技術の評価(論文) 新しいテーマの発見 大学 ソフトウェア工房 産業界

事例1:Javaソースコード蓄積・ 検索システムSPARS-J

組織が持っているソフトウェア資産を一元管理 ソフトウェア資産管理 一体このソフトウェアは誰が持っているの? このソースを修正するとどこに影響が出るの? 似たようなシステムがあったような気がするが? これはもう使ってないような気がするが捨てれるの? 一体全部でどれぐらいのソフトウェアを使ってるの? ... 組織が持っているソフトウェア資産を一元管理

ソフトウェア資産管理システム 専門の管理者のいらない全自動システム 管理の難しさ 分類や適当な索引付けは、かなりの知識を持った技術者が行う必要あり(専用のライブラリアン) 更新を怠るとすぐに使われ・使えなくなる 取り出すために専門の知識がいる 専門の管理者のいらない全自動システム

ソースコード蓄積・検索システム SPARS-J Software Product Archive, Analysis, and Retrieve System for Java 新しい発想に基づいたソースコード蓄積・検索システム Javaを対象に 日々の管理は全自動 静的解析技術を用いて広域の依存関係抽出 メトリクス技術を用いて類似部品抽出

SPARS-Jの概要 SPARS-J 検索 登録 ユーザー Java 表示 ファイル群 依存関係 キーワード キーワード検索 解析・登録 パッケージ階層 表示 レポジトリ Webブラウザ SPARS-J

SPARS-Jの機能の概要(登録) Javaの1クラス(*.java) = 検索単位 :部品 クラス間の関係(継承,インターフェース,呼び出し,参照等)の大域解析 部品内に含まれるキーワードの抽出 部品の各種メトリクス取得

SPRAS-Jの機能(検索・表示) キーワード検索/パッケージ木ブラウズ 部品のソース,呼ばれている・呼んでいるクラス・メソドの表示や各種メトリクス表示 条件付検索(クラス名,コメント,・・・) 重要な部品を上位に表示 部品間の類似度を計測―類似部品集約 日本語/英語両用

SPARS-J検索入り口

検索結果表示

パッケージブラウザ

SPARS-Jの使い方 一つのプロジェクトのソース管理 同類のプロジェクトのソース管理 組織の全プロジェクトのソース管理 他人が作った部品が見える 前の版も調べられる 同類のプロジェクトのソース管理 部品の依存関係が分かる 再利用率,新規開発率が分かる 組織の全プロジェクトのソース管理 何か使われて何がいらないか 全資産量はどれだけあるか

SPARS-Jの利用例 JDKのライブラリ検索(約2000クラス) 研究室内のJavaの資産管理(約2500クラス) インターネット上から入手できるプログラムの検索(18万クラス) ソフトウェアハウスのJavaフレームワークにおける資産管理 大手食品会社の社内システム(Java, XML, JSP)の管理 新規ユーザ募集中!

SPARS-Jのライセンス 基本動作を行う部分はオープンソース化(BSDライセンス) ランク付け機能(CR)は特許申請中 変更,再配布,商用利用可能 大阪大学のクレジット表示義務 ランク付け機能(CR)は特許申請中 JST(科学技術振興機構)所有 なくても実用上支障はない

事例2:コードクローン検出ツールCCFinder

コードクローン コード片で他に類似したコード片があるとき、コードクローンと呼ぶ

クローンが引き起こす問題 コピー&ペーストを繰り返すと増加 クローンはソフトウェア保守を困難にする クローンにバグが存在する場合、すべてのクローンについて修正を行わなければならない システムの大きさが増す 普通、1割程度クローン

例題(Javaの2種類のメソド定義) 1. static void foo() throws RESyntaxException { 2. String a[] = new String [] { "123,400", "abc", "orange 100" }; 3. org.apache.regexp.RE pat = new org.apache.regexp.RE("[0-9,]+"); 4. int sum = 0; 5. for (int i = 0; i < a.length; ++i) 6. if (pat.match(a[i])) 7. sum += Sample.parseNumber(pat.getParen(0)); 8. System.out.println("sum = " + sum); 9. } 10. static void goo(String [] a) throws RESyntaxException { 11. RE exp = new RE("[0-9,]+"); 12. int sum = 0; 13. for (int i = 0; i < a.length; ++i) 14. if (exp.match(a[i])) 15. sum += parseNumber(exp.getParen(0)); 16. System.out.println("sum = " + sum); 17. }

ステップ(1):ソースコードを入力し,トークンの列にする

ステップ(2):変形ルールにより,トークン列を変形する

ステップ(3):パラメータ置換を行う

ステップ(4): マッチングアルゴリズムにより,クローンを検出

ステップ(4): マッチングアルゴリズムにより,クローンを検出

JDKのクローン散布図 両軸はソースファイルを辞書順に並べたもの 20行以上のクローンを図示 多くのクローンが密集している(A) 最長のクローン(B) B A

FreeBSD, Linux, NetBSDのクローン散布図

FreeBSDとLinuxのクローン ドライバ部分に多くのクローン「ファイル」が存在する 共通のソースから分岐したソースファイル 名前が付け替えられたソースファイル あるソースファイルを複数のファイルに分割している

BSD-Unixの発展

クラスタ分析

CCFinderの利用例 国内外の100以上の組織に配布 20年来使われてきている大規模システム (10M LOC)の保守 企業、大学 クローン分析ツールのスタンダード 20年来使われてきている大規模システム (10M LOC)の保守 開発したソフトウェアの品質チェック 下請け,受け入れチェック コードの改良(リファクタリングツールAries) 民事裁判(ソースコードの盗用訴訟)の証拠 学生の演習課題の類似性調査 システムの類似度,進化 新規ユーザ募集中!

CCFinderのライセンス 特許申請中 バイナリー形式での無償配布 配布先組織と1対1の簡単な覚書 再配布禁止 使途や問題点に関する報告

まとめ ソフトウェア工学 大学のソフトウェア工学研究はあまり役立たない? 関西: 日本のソフトウェア工学の中心! 社会的な要求が増し、今後、ますます重要 しかし、切れ味の鋭い万能のやり方、なし いろいろな技術を駆使し、長期間に渡って努力が必須 大学のソフトウェア工学研究はあまり役立たない? 社会のニーズから違う方向に行っていないか、常に確認 大学で開発した技術をうまくパッケージ化して、現場に適用、普及させるような努力 関西: 日本のソフトウェア工学の中心! いろいろな産学連携のモデル、政府プロジェクト 今後もますます発展させるよう努力