220 likes | 328 Views
ソースプログラム・アーカイブ・サイト - 関数依存グラフと検索への応用 -. 山本 晋一郎 ( 愛知県立大学 ) 阿草 清滋 ( 名古屋大学 ). 発表の流れ. ☆ 背景 ソースプログラム・ブラウザ SPIE ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの用例検索 今後の課題. 背景 (1). Corpus ( 文書・法典などの ) 集成、収集 ; 大全、全集 : the entire corpus of Old English poetry 古英詩の完全な集大成 コーパス , 資料体 : 言語学的分析のために収集された一群のデータ
E N D
ソースプログラム・アーカイブ・サイト-関数依存グラフと検索への応用-ソースプログラム・アーカイブ・サイト-関数依存グラフと検索への応用- 山本 晋一郎 (愛知県立大学) 阿草 清滋 (名古屋大学)
発表の流れ • ☆背景 • ソースプログラム・ブラウザSPIE • ソフトウェア・アーカイブ・サイト • 関数呼出依存グラフを用いたライブラリの用例検索 • 今後の課題
背景(1) • Corpus • (文書・法典などの)集成、収集; 大全、全集:the entire corpus of Old English poetry古英詩の完全な集大成 • コーパス,資料体:言語学的分析のために収集された一群のデータ • 言語資源Corpus + 作成・利用支援環境
背景(2) • 計算機可読な言語資源の重要性 • 日本語入力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) • 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 ソフトウェア構成DBモジュール 解 析 器 *.html • Open-source software 群の解析結果を蓄積 • 利用者は HTML Browser を用いてアクセス • Program Corpusから典型的な使用例を参照する SDB Internet *.java *.html SDB *.xml *.html SDB
Sappyの現状 • 自動FTPFTP (or HTTP)サイトの登録対象ソフトウェアと対象外ファイルの登録 • 自動解析SDB作成とSPIEによる解析正常終了と異常終了の判別 • 対象GNU, FreeBSD
発表の流れ • 背景 • ソースプログラム・ブラウザSPIE • ソフトウェア・アーカイブ・サイト • ☆関数呼出依存グラフを用いたライブラリの用例検索 • 今後の課題
発表の流れ • 背景 • ソースプログラム・ブラウザSPIE • ソフトウェア・アーカイブ・サイト • 関数呼出依存グラフを用いたライブラリの用例検索 • ☆今後の課題
多様で柔軟な検索 (ソフトウェア検索空間) エレメント 仕様書 マニュアル モジュール仕様書 関数仕様書 ソースプログラム ファイル コメント,メモ 宣言 式 バージョン アプリケーション ミドルウェア ライブラリ OS ハードウェア プロダクト
多様で柔軟な検索の例 (1) • エレメントをトラバース • マニュアルとソースプログラムの整合性検査 • 関数の使用場所で関数定義のコメントを参照 • ある関数に関係するすべてのコメントは ? • バージョンをトラバース • ある関数はどの版で導入されたのか ? • ある関数を変更した全ての版は ? • ある作業者が変更した全ての関数は ? • CVSとの連携
多様で柔軟な検索の例 (2) • プロダクトをトラバース • ライブラリの使用場所でライブラリの定義を参照 • アプリケーションとライブラリを跨った検索 • #ifdef に切り分けが行われている関数は ?移植性に関するノウハウ • あるライブラリの典型的な使用方法は ?