ソースプログラム・アーカイブ・サイト -関数依存グラフと検索への応用-

Slides:



Advertisements
Similar presentations
Integrated Personal Page C05823 森本万里子 C05829 西山礼恵 C05899 高木華子.
Advertisements

XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
データベースの基礎知識 ACEESS の基本操作. データベースの基礎知識 データベース  特定のテーマや目的に毎のデータの集合体 データベースソフトウェア  データベースを作成、管理するソフトウェアの総 称 Oracle(Oracle) IBM(DB2) Microsoft(SQL Server)
Web アプリケーション開発 ~図書館管理システム~ 北海道情報大学 情報メディア学 部 情報メディア学科 新井山ゼミ 高橋 隼.
位置情報履歴を利用した サービス提供機構の構築 慶応大学環境情報学部 4 年 徳田研究室 土田泰徳
大規模コーパスから獲得した 名詞の出現パターンを用いた 事態名詞の項構造解析
BBT大学 Ruby on Rails開発環境セットアップマニュアル
Doxygen ~ IGModel を一例にした, 数値モデルのドキュメンテーションにおける Doxygen の利用
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
Docker.
Java I 第2回 (4/18)
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
情報学類 吉田光男 アドバイザー教官: 山本幹雄 先生
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
Step-by-Step Guide on How to Start ALICE Analysis
第1回 HTML5入門.
情報爆発A01支援班 マイサーチエンジン開発環境支援グループ 中村聡史, 大島裕明, 田中克己, 喜連川優
情報伝播によるオブジェクト指向プログラム理解支援の提案
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
まずオープンソース開発者に対する支援から!
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
空間情報サーバ (株)パスコ.
オントロジーを使用した プログラム開発支援システムの提案
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
資料1-6 平成26年度 第1回技術委員会資料 支援ツール群整備方針
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
プログラム解析情報のXMLデータベース化 ー 提案と実現 ー
アップデート 株式会社アプライド・マーケティング 大越 章司
実行時情報に基づく OSカーネルのコンフィグ最小化
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
エピソード記憶に訴えるBookmarkless Bookmarkの実現
Cプログラムの理解を 支援するナビゲーション機能
オブジェクト指向言語論 第十四回 知能情報学部 新田直也.
ソフトウェア保守のための コードクローン情報検索ツール
情報共有による Z39.50データベース選択支援環境
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
コーパス コーパス(Corpus)はコンピュータの発達とともに、計算機可読なデータを容易に作成・収集することができるようになったことがその背景にある。現在ではコーパス言語学などの学問もある。
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
第6回放送授業.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コンパイラ 2012年10月11日
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

ソースプログラム・アーカイブ・サイト -関数依存グラフと検索への応用- 山本 晋一郎 (愛知県立大学) 阿草 清滋 (名古屋大学)

発表の流れ ☆背景 ソースプログラム・ブラウザSPIE ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの用例検索 今後の課題

背景(1) Corpus (文書・法典などの)集成、収集; 大全、全集: the entire corpus of Old English poetry 古英詩の完全な集大成 コーパス,資料体: 言語学的分析のために収集された一群のデータ 言語資源 Corpus + 作成・利用支援環境

背景(2) 計算機可読な言語資源の重要性 米国LCD, 欧州ELRA 日本語入力FEP、音声認識、機械翻訳、意味抽出、語学教育などへの応用 Corpus linguistics (Brown Corpus以来) 米国LCD, 欧州ELRA

Corpus Programming? 蓄積されたProgram Corpusに基づいたソフトウェア(プログラム)開発支援は可能か? 開発 Programming Navigation 三浦 他: プログラミングナビゲーションのための関数呼び出し依存グラフ(2000) 検索 品質チェック 事例に基づいたコーディング・チェッカー 河合 他: 既存プログラムからの規範パターン獲得とそれに基づくコーディン(1997) 教育

要素技術は? Corpus作成支援 SPIE: 自動的なタグ付け XMLタグセット Concordancer 自然言語はKWIC, プログラム断片は? アプリケーション Programming Navigation 用例検索 クラスタリング(100万件ヒットシンドローム)

発表の流れ 背景 ☆ソースプログラム・ブラウザSPIE ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの用例検索 今後の課題

SPIE (Source Program Information Explorer) WWW ブラウザ上で実現したソースプログラムブラウザ (Browser on Browser) 参照と検索機能 カテゴリ(ファイル,関数, 大域変数, 局所変数, 引数, 型, 構造体メンバ, 列挙子, マクロ, 定数, タグ, ソフトウェア関連文書) を区別した参照・検索 定義と参照(左辺値と右辺値)を区別した参照・検索 前処理によってスキップされる行を色分け (#ifdef … #endif)

関連研究 (1) 独立したブラウザ Source Navigator (旧Cygnus, 現RedHat) SoftBench (HP) C, C++, Java, Tcl, Fortran, CORBA IDL クラス、関数、変数のクロスリファレンス 統合開発環境(構成管理・ビルダ・デバッガ) APIは貧弱 SoftBench (HP) ファイル,関数,大域変数,列挙子,型,構造体に対する参照機能 識別子の出現を参照,宣言,定義,使用,変更の5種類に分類

関連研究 (2) Browser on Browserアプローチ GLOBAL (Shigio Yamaguchi) C, C++, Yacc, Java ファイル、関数、マクロに対する参照機能 エディタのタグ機能と連携 広く普及している(FreeBSDの開発プロジェクトなど) LXR (Linux Cross-Reference by lxr@linux.no) マクロ、型、タグ、列挙子、関数、変数に対する参照機能 スコープのチェックを行っていないため不正確

参照・検索機能の比較

発表の流れ 背景 ソースプログラム・ブラウザSPIE ☆ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの用例検索 今後の課題

ソフトウェア・ アーカイブ・ サイト Open-source World Sapid Archive Site *.c SDB 解 析 器 ソフトウェア解析モジュール ソフトウェア検索モジュール SDB *.html Internet *.java SDB *.html *.xml SDB *.html Open-source software 群の解析結果を蓄積 利用者は HTML Browser を用いてアクセス Program Corpusから典型的な使用例を参照する

Sappyの現状 自動FTP FTP (or HTTP)サイトの登録 対象ソフトウェアと対象外ファイルの登録 自動解析 SDB作成とSPIEによる解析 正常終了と異常終了の判別 対象 GNU, FreeBSD

発表の流れ 背景 ソースプログラム・ブラウザSPIE ソフトウェア・アーカイブ・サイト ☆関数呼出依存グラフを用いたライブラリの用例検索 今後の課題

発表の流れ 背景 ソースプログラム・ブラウザSPIE ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの用例検索 ☆今後の課題

多様で柔軟な検索 (ソフトウェア検索空間) エレメント 仕様書 マニュアル モジュール仕様書 関数仕様書 ソースプログラム ファイル コメント,メモ 宣言 式 バージョン アプリケーション ミドルウェア ライブラリ OS ハードウェア プロダクト

多様で柔軟な検索の例 (1) エレメントをトラバース バージョンをトラバース マニュアルとソースプログラムの整合性検査 関数の使用場所で関数定義のコメントを参照 ある関数に関係するすべてのコメントは ? バージョンをトラバース ある関数はどの版で導入されたのか ? ある関数を変更した全ての版は ? ある作業者が変更した全ての関数は ? CVSとの連携

多様で柔軟な検索の例 (2) プロダクトをトラバース ライブラリの使用場所でライブラリの定義を参照 アプリケーションとライブラリを跨った検索 #ifdef に切り分けが行われている関数は ? 移植性に関するノウハウ あるライブラリの典型的な使用方法は ?