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