ソースプログラム・アーカイブ・サイト -関数依存グラフと検索への応用山本 晋一郎 (愛知県立大学) 阿草 清滋 (名古屋大学) 発表の流れ • • • • ☆背景 ソースプログラム・ブラウザ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 [email protected]) • マクロ、型、タグ、列挙子、関数、変数に対する参照機能 • スコープのチェックを行っていないため不正確 参照・検索機能の比較 ファイル 関数 大域変数 型 タグ 列挙子 メンバ変数 マクロ 定数 SPIE SoftBench GLOBAL LXR ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ × ○ ○ × × ○ ○ × × × × × × × ○ △ △ △ △ △ × △ × 発表の流れ • • • • 背景 ソースプログラム・ブラウザSPIE ☆ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの 用例検索 • 今後の課題 ソフトウェア・ アーカイブ・ サイト Open-source World *.c *.java Sapid Archive Site ソ フ ト ウ ェ ア 構 成 DB *.xml モ ジ ュ ー ル SDB 解 析 器 SDB SDB ソ フ ト ウ ェ ア 解 析 モ ジ ュ ー ル *.html *.html *.html • Open-source software 群の解析結果を蓄積 • 利用者は HTML Browser を用いてアクセス • Program Corpusから典型的な使用例を参照する ソ フ ト ウ ェ ア 検 索 モ ジ ュ ー ル Internet Sappyの現状 • 自動FTP FTP (or HTTP)サイトの登録 対象ソフトウェアと対象外ファイルの登録 • 自動解析 SDB作成とSPIEによる解析 正常終了と異常終了の判別 • 対象 GNU, FreeBSD 発表の流れ • • • • 背景 ソースプログラム・ブラウザSPIE ソフトウェア・アーカイブ・サイト ☆関数呼出依存グラフを用いたライブラリ の用例検索 • 今後の課題 発表の流れ • • • • 背景 ソースプログラム・ブラウザSPIE ソフトウェア・アーカイブ・サイト 関数呼出依存グラフを用いたライブラリの 用例検索 • ☆今後の課題 多様で柔軟な検索 (ソフトウェア検索空間) エレメント 仕様書 マニュアル モジュール仕様書 関数仕様書 ソースプログラム ファイル コメント,メモ 宣言 式 アプリケーション ミドルウェア OS ライブラリ ハードウェア プロダクト バージョン 多様で柔軟な検索の例 (1) • エレメントをトラバース – マニュアルとソースプログラムの整合性検査 – 関数の使用場所で関数定義のコメントを参照 – ある関数に関係するすべてのコメントは ? • バージョンをトラバース – – – – ある関数はどの版で導入されたのか ? ある関数を変更した全ての版は ? ある作業者が変更した全ての関数は ? CVSとの連携 多様で柔軟な検索の例 (2) • プロダクトをトラバース – ライブラリの使用場所でライブラリの定義を参照 – アプリケーションとライブラリを跨った検索 – #ifdef に切り分けが行われている関数は ? 移植性に関するノウハウ – あるライブラリの典型的な使用方法は ?
© Copyright 2024 ExpyDoc