バイナリ形式コンポーネントの 収集・解析・検索システムの開発

Slides:



Advertisements
Similar presentations
1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
メタモデル記述を用いた成果物間の依存関係追跡手法
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
Global Ring Technologies
情報基礎A 情報科学研究科 徳山 豪.
ソースプログラム・アーカイブ・サイト -関数依存グラフと検索への応用-
JPAを利用した RESTful Webサービスの開発
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
ソースコードの編集内容を入力とした ソフトウェア部品の自動検索
情報爆発A01支援班 マイサーチエンジン開発環境支援グループ 中村聡史, 大島裕明, 田中克己, 喜連川優
TRIAMデータ処理系でのJavaScope利用の取組み
共同ローカリゼーション フレームワーク 井上 謙次.
セッション管理 J2EE I 第9回 /
Curlの仕組み.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
望月 祐洋,由良 淳一,楠本 晶彦 {moma, yurayura,
第8章 Web技術とセキュリティ   岡本 好未.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
資料1-6 平成26年度 第1回技術委員会資料 支援ツール群整備方針
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
コンポーネントの接続情報を検索する手法について
実行時情報に基づく OSカーネルのコンフィグ最小化
利用実績に基づくソフトウェア部品検索システムSPARS-J
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
Internet広域分散協調サーチロボット の研究開発
JAVAについて 高橋 雅哉.
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
COM コンポーネント・オブジェクト・モデル.
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
物理的側面を表現する図 Chapter6 物理的側面を表現する図について徐研究室の大楠が発表します。 FM13005 大楠拓也 徐研究室.
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Java における 先進的リフレクション技術
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
設計情報の再利用を目的とした UML図の自動推薦ツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
ソースコードの編集状況に応じた ソフトウェア部品の自動推薦システム
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
統合開発環境のための プログラミング言語拡張 フレームワーク
第2回 開発環境とゲーム 05A1030 佐々木 和也.
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コードクローン解析に基づく デザインパターン適用候補の検出手法
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
P2Pによる協調学習システム 唐澤 信介   北海道工業大学 電気工学専攻.
Presentation transcript:

バイナリ形式コンポーネントの 収集・解析・検索システムの開発 第1回SPARS研究集会ミーティング資料 バイナリ形式コンポーネントの 収集・解析・検索システムの開発 奈良先端科学技術大学院大学 情報科学センター 飯田 元

発表内容 ソフトウェア部品の形式と検索方法 バイナリ部品の検索と再利用 関連研究 現状

ソフトウェア部品の形式 ソースコード形式 バイナリ形式 ファイル,パッケージ,クラス,関数,スライス? 修正可能⇔コンパイル必要 プラットフォームに非依存⇔言語に依存 詳細な解析が可能:構造解析,コメント抽出など バイナリ形式 アプリケーション,ライブラリ,コンポーネント,メソッド? 修正困難⇔コンパイル不要 プラットフォーム依存⇔言語に非依存 詳細な解析が困難:IFの確認程度

ソフトウェア部品の検索 基本的に,カタログをもとにした検索を行うが,部品本体を解析する必要がしばしば存在する 本体とカタログ情報の対応が壊れている可能性がある カタログを別途作成するにはコストがかかる 部品本体から自動的に収集できる情報をもとに検索できることが望ましい ソース部品の場合には,コメントや構造解析から得られる情報を利用できる バイナリ部品の場合には,直接的な解析は困難なので部品アーキテクチャ固有IFの情報を利用する

本研究のターゲット:バイナリ部品の利用パターン バイナリ部品(コンポーネント)の利用事例を収集・蓄積して,検索可能にし,再利用する 接続関係 動作環境 利用者のプロフィール 同時取得コンポーネント etc.

バイナリ部品形式(アーキテクチャ)の例 Java Beans (本研究の対象) Sunの提唱するJava用の部品形式 Javaに依存 COM(Component Object Model), COM+,DCOM,Active-X Microsoftの提唱する部品アーキテクチャ インタフェース情報をレジストリに登録して用いる ActiveX(ネットワーク指向のGUI部品)もCOMに基づいた技術 CORBAオブジェクト OMGで制定された分散オブジェクトのインタフェース規格 IDLでIF記述 サービス検索等の仕様もある. 言語・プラットフォームに非依存

関連研究(インタフェースに基くコンポーネント検索) Agora (http://www.sei.cmu.edu/cbs/agora.html) イントロスペクションを用いたコンポーネント検索エンジン(Java, CORBA, Active-X対応) RetrievalJ(http://www.fuka.info.waseda.ac.jp/~washi/retrievalj/j_index.html) JavaBeansの検索機構 検索にあたり、有向置換性距離(ユーザ要求とリポジトリ中のコンポーネント間の構造・振舞・粒度に関する詳細な適合度合い)を使用する

コンポーネント利用情報の収集と共有 複数のコンポーネント利用者から利用情報(事例)をネットワークを通じて収集し共有する. 他の利用者の利用情報を取得・閲覧し,再利用する. コンポーネント 利用者 コンポーネント ウェアハウス カタログ 仕様書 利用情報 ・自分の利用情報の抽出/送信 ・他人の利用情報の閲覧/再利用 利用情報の収集と検索

コンポーネント利用情報の例 接続関係:コンポーネント同士の結合に関する情報 動作環境: 利用者が使用しているOSのバージョン,利用地域等 利用者:そのコンポーネントを利用した者の名前,E-mailアドレス,所属部署等 同時取得コンポーネント:そのコンポーネント取得時, 同時に取得されたコンポーネントのリスト

JavaBeansにおける接続関係 あるコンポーネントが生成するイベントをあるコンポーネントの持つメソッドの呼出に対応付けることで,接続関係が作成される ビルダツールを利用した場合,ツールが生成するコード(アダプタクラス)の中で定義される アプリケーション コンポーネントα コンポーネントβ イベントA アダプタクラス001 ・メソッド X ・メソッド Y ・メソッド Z コンポーネントγ アダプタクラス002 イベントB

Java Beans間の接続例 イベントソース オブジェクトID : 365781 部品名(クラス名) : OurButton 生成イベント: actionPerformed ターゲット オブジェクトID : 5922857 部品名(クラス名) : Juggler 対応メソッド: startJuggling

接続情報の活用方法 具体的な開発事例を利用者に提示できる 既知のコンポーネントを手がかりに,未知のコンポーネントの発見を可能にする 検索システムに明示的に指示して 発見されたコンポーネント R:実際のコンポー ネントの存在空間 C1 C3 L3 予測に よる検索 L2 思い出し による検索 L1 記憶に よる検索 C2 L4 利用者にとって未知のコンポーネントの 存在空間 接続関係をたどって発見されたコンポーネント

その他の利用情報 動作環境 利用者プロファイル 同時取得コンポーネント 仕様書で推奨されている動作環境以外での動作実績を知ることができる? 情報交換に有用? 同時取得コンポーネント 機能的に互いに関連を持つ可能性が高い?

利用情報活用のシナリオ例: ブラウザの作成 Web Browser また,HTML Parserの同時取得コンポーネントを閲覧することによって,Button Component, URL Log Manager Component が発見される. Button Component (戻る) URL Log Manager Component (URLの履歴を保存) (進む) HTML Parser Component (HTMLの解釈と描画) 利用者の動作環境と「HTMLパーサ」をKeyとしてコンポーネントを検索し,取得する. 各々の接続情報を閲覧し,コンポーネントを結合していく. 接続関係を閲覧して,過去に接続されたコンポーネントを調査すると,Text Field Componentが発見された. Text Field Component (URLの入力と編集) 完成後, URL Log Manager Componentの動作に異常が発見されたので,このコンポーネントの利用者に連絡しノウハウを収集する.

検索システムの試作 コンポーネント(Bean)と利用情報を登録し,検索できる専用のサーバ(Servlet) アプリケーション開発履歴から接続情報等を収集,サーバに登録する改造版BDK

利用情報の収集・登録 接続関係・動作環境は,改造BDK利用時に抽出する 収集された利用情報は,検索システム中のコンポーネントウェアハウスに送信・登録される 利用者,同時取得コンポーネントは,検索システム利用時に収集する. 開発環境 検索システム BDK 送信 機能 コンポーネント ウェアハウス 抽出機能 カタログ 送信 仕様書 利用情報 接続関係 動作環境

コンポーネントの検索 検索システム 開発者 利用者 (アプリケーション 開発者) ・コンポーネント ・仕様書 検索文 利用情報を含む検索結果 (コンポーネント 開発者) ・コンポーネント ・仕様書 コンポーネント ウェアハウス 登録 コンポーネント 結果の提示 検索文 仕様を対象 利用情報を対象 検索 利用者 (アプリケーション 開発者) カタログ 仕様書 利用情報 コンポーネント をダウンロード 利用情報を含む検索結果 登録 ソフトウェア に組込み利用 利用情報の 収集と送出 利用情報

コンポーネント検索:①クエリ画面 利用者が送信した検索文をもとにコンポーネントウェアハウス内を検索する 検索文として仕様書及び蓄積された利用情報を対象とすることが可能

コンポーネント検索:②検索結果 各リンクをたどり,利用情報を閲覧可能

接続利用情報の提示例

利用者情報,同時取得部品の提示例

考察 利点 問題点 接続情報を用いると,既知のコンポーネントを手がかりに,未知のコンポーネントを発見することができる より具体的な開発事例の収集ができる 問題点 現状では利用情報の収集を改造BDKの利用に頼っている →バイナリを直接解析できる必要がある 誤った利用情報が収集される可能性もあるため,利用情報はリリースされたソフトウェアから収集する必要がある. 不具合や誤りが見つかれば,登録情報も訂正する必要がある. →不具合の収集・ユーザ登録が重要となる.

今後の方針と予定 改造BDKに頼らず,Javaアプリケーションから直接,接続利用情報を収集する機能の実装 原理的にはイントロスペクション等の機能により可能 jarファイル,classファイル等を収集するクロウラが必要 収集された接続利用情報の有効な利用方法の検討 ランキング デザインパターンの抽出 アプリケーション開発時の支援 コンポーネントの品質に関する情報の収集・提供 エラー情報の収集方法の検討 OOメトリクスに基く検索方法の検討

リフレクションとイントロスペクション リフレクション イントロスペクション 実行時に任意のクラスのフィールド、コンストラクタ、メソッドに関する情報を取得する機能 Class, Field, Constructor, Method等のクラスによって実現される イントロスペクション Beanのプロパティ、イベント、メソッドに関する情報を取得する機能(リフレクションを用いて実現) Introspector, SimpleBeanInfo, BeanDescriptor, EventSetDescriptor等のクラスによって実現される